import gradio as gr import requests import json # Function to interact with Vectara API def query_vectara(question, chat_history, uploaded_file): # Handle file upload here (using the provided code) customer_id = "" corpus_id = "" api_key = "" url = f"https://api.vectara.io/v1/upload?c={customer_id}&o={corpus_id}" post_headers = { "x-api-key": api_key, "customer-id": customer_id } files = { "file": (uploaded_file.name, uploaded_file), "doc_metadata": (None, json.dumps({"metadata_key": "metadata_value"})), # Replace with your metadata } response = requests.post(url, files=files, verify=True, headers=post_headers) if response.status_code == 200: upload_status = "File uploaded successfully" else: upload_status = "Failed to upload file" # The rest of the chatbot logic goes here api_endpoint = "https://api.vectara.io/v1/query" # Rest of the chatbot logic as before return f"{upload_status}\n\nResponse from Vectara API: {response.text}" # Create a Gradio ChatInterface iface = gr.Interface( fn=query_vectara, inputs=[ gr.inputs.Text(label="Ask a question:"), gr.inputs.File(label="Upload a file") ], outputs=gr.outputs.Textbox(), examples=["Hello", "What is the weather today?", "Tell me a joke"], title="Vectara Chatbot", description="Ask me anything using the Vectara API!", ) # Run the Gradio interface iface.launch()