Spaces:
Runtime error
Runtime error
import gradio as gr | |
import requests | |
import json | |
from decouple import Config | |
# Function to interact with Vectara API | |
def query_vectara(question, chat_history, uploaded_file): | |
# Handle file upload to Vectara | |
customer_id = config('CUSTOMER_ID') # Read from .env file | |
corpus_id = config('CORPUS_ID') # Read from .env file | |
api_key = config('API_KEY') # Read from .env file | |
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 the file" | |
# Get the user's message from the chat history | |
user_message = chat_history[-1][0] | |
query_body = { | |
"query": [ | |
{ | |
"query": user_message, # Use the user's message as the query | |
"start": 0, | |
"numResults": 10, | |
"corpusKey": [ | |
{ | |
"customerId": customer_id, | |
"corpusId": corpus_id, | |
"lexicalInterpolationConfig": {"lambda": 0.025} | |
} | |
] | |
} | |
] | |
} | |
api_endpoint = "https://api.vectara.io/v1/query" | |
return f"{upload_status}\n\nResponse from Vectara API: {response.text}" | |
# Create a Gradio ChatInterface with a text input, a file upload input, and a text output | |
iface = gr.Interface( | |
fn=query_vectara, | |
inputs=[gr.Textbox(label="Input Text"), gr.File(label="Upload a file")], | |
outputs=gr.Textbox(default="Response will appear here", label="Output Text"), | |
examples=["Hello", "What is the weather today?", "Tell me a joke"], | |
title="Vectara Chatbot", | |
description="Ask me anything using the Vectara API!", | |
submit="Send", | |
stop="Stop", | |
retry="Retry", | |
undo="Undo", | |
clear="Clear", | |
autofocus=True | |
) | |
iface.launch() |