Spaces:
Sleeping
Sleeping
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()
|