File size: 2,235 Bytes
b515f84
af0bbbe
 
bd5e335
ff8cb83
 
 
e887c2a
b515f84
e887c2a
8b3a6e5
b515f84
 
6fe06a5
b515f84
 
 
 
 
 
 
bd5e335
ff8cb83
bd5e335
080bbc9
bf2279b
 
080bbc9
bf2279b
080bbc9
8b3a6e5
080bbc9
b515f84
 
 
 
 
 
 
8b3a6e5
 
 
 
 
b515f84
 
 
8b3a6e5
 
b515f84
 
 
 
 
 
 
 
0794e40
 
 
b515f84
 
 
 
 
 
080bbc9
12fb877
b515f84
 
 
 
 
 
 
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
import gradio as gr
import random
import time
import boto3
from botocore import UNSIGNED
from botocore.client import Config

from langchain.document_loaders import WebBaseLoader

from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)

from langchain.llms import HuggingFaceHub
model_id = HuggingFaceHub(repo_id="HuggingFaceH4/zephyr-7b-beta", model_kwargs={"temperature":0.1, "max_new_tokens":1024})

from langchain.embeddings import HuggingFaceHubEmbeddings
embeddings = HuggingFaceHubEmbeddings()

from langchain.vectorstores import Chroma

from langchain.chains import RetrievalQA

s3 = boto3.client('s3', config=Config(signature_version=UNSIGNED))
s3.download_file('rad-rag-demos', 'vectorstores/chroma.sqlite3', './chroma_db/chroma.sqlite3')
     
db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)
db.get()
retriever = db.as_retriever()

global qa 
qa = RetrievalQA.from_chain_type(llm=model_id, chain_type="stuff", retriever=retriever)


def add_text(history, text):
    history = history + [(text, None)]
    return history, ""

def bot(history):
    response = infer(history[-1][0])
    history[-1][1] = ""
    for character in response['result']:
        history[-1][1] += character
        time.sleep(0.05)
        yield history

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

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

title = """
<div style="text-align: center;max-width: 700px;">
    <h1>Chat with the RAY Docs</h1>
    <p style="text-align: center;">The AI bot is here to help you with the RAY Documentation, <br />
    start asking questions about the open-source software </p>
</div>
"""


with gr.Blocks(css=css) as demo:
    with gr.Column(elem_id="col-container"):
        gr.HTML(title)      
        chatbot = gr.Chatbot([], elem_id="chatbot")
        with gr.Row():
            question = gr.Textbox(label="Question", placeholder="Type your question and hit Enter ")
    question.submit(add_text, [chatbot, question], [chatbot, question]).then(
        bot, chatbot, chatbot
    )

demo.launch()