File size: 2,120 Bytes
0190e25
ea36e00
77a48be
 
 
 
45f1f60
096b9ec
45f1f60
93457a9
 
 
 
 
45f1f60
0190e25
e9acb87
 
 
0190e25
 
 
45f1f60
096b9ec
 
 
 
 
77a48be
096b9ec
 
 
45f1f60
0190e25
 
 
 
45f1f60
096b9ec
 
 
45f1f60
0190e25
 
 
 
 
 
 
93457a9
 
 
0190e25
 
 
 
 
 
93457a9
0190e25
 
 
 
45f1f60
0190e25
 
 
 
e9acb87
5c184a9
0190e25
 
 
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
# import for typing
from langchain.chains import RetrievalQAWithSourcesChain

# gradio
import gradio as gr

global qa 
from qa import qa


#####
#
# Gradio fns
####

def create_gradio_interface(qa:RetrievalQAWithSourcesChain):
    """
    Create a gradio interface for the QA model
    """
    def add_text(history, text):
        history = history + [(text, None)]
        return history, ""

    def bot(history):
        response = infer(history[-1][0], history)
        sources = [doc.metadata.get("source") for doc in response['source_documents']]
        src_list = '\n'.join(sources)
        print_this = response['answer'] + "\n\n\n Sources: \n\n\n" + src_list


        history[-1][1] = print_this #response['answer']
        return history

    def infer(question, history):
        query =  question
        result = qa({"query": query, "history": history, "question": question})
        return result

    css="""
    #col-container {max-width: 700px; margin-left: auto; margin-right: auto;}
    """

    title = """
    <div style="text-align: center;max-width: 1920px;">
        <h1>Chat with your Documentation</h1>
        <p style="text-align: center;">This is a privately hosten Docs AI Buddy, <br />
        It will help you with any question regarding the documentation of Ray ;)</p>
    </div>
    """



    with gr.Blocks(css=css) as demo:
        with gr.Column(min_width=900, elem_id="col-container"):
            gr.HTML(title)      
            chatbot = gr.Chatbot([], elem_id="chatbot")
            #with gr.Row():
            #    clear = gr.Button("Clear")

            with gr.Row():
                question = gr.Textbox(label="Question", placeholder="Type your question and hit Enter ")
            with gr.Row():
                clear = gr.ClearButton([chatbot, question])

        question.submit(add_text, [chatbot, question], [chatbot, question], queue=False).then(
            bot, chatbot, chatbot
        )
        #clear.click(lambda: None, None, chatbot, queue=False)
    return demo

if __name__ == "__main__":
    demo = create_gradio_interface(qa)
    demo.queue().launch()