File size: 3,258 Bytes
39dff4c
 
 
99914ec
4a0366f
c352f02
a147fbd
ed0aa7b
24ed9e0
c6ddc86
3661992
4854a72
 
 
 
176b9ce
 
 
 
 
 
 
 
4854a72
 
 
176b9ce
d354d71
 
176b9ce
 
 
 
 
 
 
 
 
 
 
4d079d2
176b9ce
 
 
4854a72
176b9ce
 
 
 
 
 
 
 
 
 
 
 
d354d71
176b9ce
 
4854a72
 
 
 
bb31795
 
176b9ce
4854a72
 
176b9ce
4854a72
176b9ce
4854a72
 
4d079d2
3516f35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ea7a2b9
ca860d3
39dff4c
fd6e173
6aa9598
7afe812
9ed9d81
af86876
cf7f506
bb31795
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import gradio as gr
import requests
import json
from decouple import Config

config = Config('.env')

def query_vectara(question):
    user_message = question

    # Read authentication parameters from the .env file
    CUSTOMER_ID = config('CUSTOMER_ID')
    CORPUS_ID = config('CORPUS_ID')
    API_KEY = config('API_KEY')

    # Define the headers
    api_key_header = {
        "customer-id": CUSTOMER_ID,
        "x-api-key": API_KEY
    }

    # Define the request body in the structure provided in the example
    request_body = {
        "query": [
            {
                "query": user_message,
                "queryContext": "",
                "start": 1,
                "numResults": 10,
                "contextConfig": {
                    "charsBefore": 0,
                    "charsAfter": 0,
                    "sentencesBefore": 2,
                    "sentencesAfter": 2,
                    "startTag": "%START_SNIPPET%",
                    "endTag": "%END_SNIPPET%",
                },
                "rerankingConfig": {
                    "rerankerId": 272725718,
                    "mmrConfig": {
                        "diversityBias": 0.27
                    }
                },
                "corpusKey": [
                    {
                        "customerId": CUSTOMER_ID,
                        "corpusId": CORPUS_ID,
                        "semantics": 0,
                        "metadataFilter": "",
                        "lexicalInterpolationConfig": {
                            "lambda": 0
                        },
                        "dim": []
                    }
                ],
                "summary": [
                    {
                        "maxSummarizedResults": 5,
                        "responseLang": "eng",
                        "summarizerPromptName": "vectara-summary-ext-v1.2.0"
                    }
                ]
            }
        ]
    }

    # Make the API request using Gradio
    response = requests.post(
        "https://api.vectara.io/v1/query",
        json=request_body,  # Use json to automatically serialize the request body
        verify=True,
        headers=api_key_header
    )


    if response.status_code == 200:  
        query_data = response.json()  
        print(query_data)    
        if query_data:  
            # Extract summary and the first 5 sources  
            response_set = query_data.get('responseSet', [{}])[0]  # get the first response set  
            summary = response_set.get('summary', [{}])[0]  # get the first summary  
            summary_text = summary.get('text', 'No summary available')  
            sources = response_set.get('response', [])[:5]  
            sources_text = [source.get('text', '') for source in sources]  
            return f"Summary: {summary_text}\n\nSources:\n{json.dumps(sources_text, indent=2)}"  
        else:  
            return "No data found in the response."  
    else:  
        return f"Error: {response.status_code}"  


iface = gr.Interface(
    fn=query_vectara,
    inputs=[gr.Textbox(label="Input Text")],
    outputs=gr.HTML(label="Output Text"),
    title="Vectara Chatbot",
    description="Ask me anything using the Vectara API!"
)

iface.launch()