File size: 2,218 Bytes
e763e8a
 
 
0d179e3
 
11a9727
 
 
 
 
e763e8a
 
 
 
 
 
 
 
 
55c7d01
3b3e8df
e763e8a
0d179e3
8f7a5e4
 
 
5218a30
8f7a5e4
3b344a7
d14928c
fed1aac
 
 
 
 
 
d41ae8b
 
fed1aac
 
 
 
 
 
 
bd92b29
fed1aac
497a011
a944901
9538882
 
 
 
 
 
a148c7b
3b3e8df
 
50d6f71
ae3693c
 
841b907
55c7d01
b6c9ea3
0d179e3
 
 
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
from omegaconf import OmegaConf
from query import VectaraQuery
import os
import gradio as gr

def isTrue(x) -> bool:
    if isinstance(x, bool):
        return x
    return x.strip().lower() == 'true'

corpus_ids = str(os.environ['corpus_ids']).split(',')
cfg = OmegaConf.create({
    'customer_id': str(os.environ['customer_id']),
    'corpus_ids': corpus_ids,
    'api_key': str(os.environ['api_key']),
    'title': os.environ['title'],
    'description': os.environ['description'],
    'source_data_desc': os.environ['source_data_desc'],
    'streaming': isTrue(os.environ.get('streaming', False)),
    'prompt_name': os.environ.get('prompt_name', None),
    'examples': str(os.environ.get('examples', None))
})

import logging
logging.basicConfig(level=logging.DEBUG)

logging.debug(f'examples: {cfg.examples} of type: {type(cfg.examples)}')


vq = VectaraQuery(cfg.api_key, cfg.customer_id, cfg.corpus_ids, cfg.prompt_name)


def respond(message, history):
    if cfg.streaming:
        # Call stream response and stream output
        stream = vq.submit_query_streaming(message)
        
        
        outputs = ""
        for output in stream:
            outputs += output
            yield outputs
    else:
        # Call non-stream response and return message output
        response = vq.submit_query(message)
        yield response

cfg.title = f'''<center> <img src="https://github.com/david-oplatka/chatbot-streamlit/blob/main/Vectara-logo.png?raw=true" width="200px" height="40px">
                <h1>{cfg.title}</h1> </center>
                '''

cfg.description = f'''<center> <h2>{cfg.description}</h2>
                      <br>
                      This demo uses Retrieval Augmented Generation to ask questions about {cfg.source_data_desc}</center>
                      '''

if cfg.examples != 'None':
    cfg.examples = cfg.examples.split(",")

logging.debug(f'Examples before function call: {cfg.examples}; type: {type(cfg.examples)}')

demo = gr.ChatInterface(respond, title = cfg.title, description = cfg.description,
                        chatbot = gr.Chatbot(value = [[None, "How may I help you?"]], scale=3), examples = cfg.examples)


if __name__ == "__main__":
    demo.launch()