File size: 2,196 Bytes
b515f84
af0bbbe
 
bd5e335
ff8cb83
 
c7ed730
b515f84
 
f6d35d3
b515f84
 
 
 
c7ed730
b515f84
 
bd5e335
ff8cb83
c7ed730
 
 
 
 
a2af16b
 
c7ed730
 
bf2279b
080bbc9
b11f76e
080bbc9
b515f84
 
 
 
 
 
 
55450d7
b11f76e
b515f84
c255715
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
import gradio as gr
import random
import time
import boto3
from botocore import UNSIGNED
from botocore.client import Config
import zipfile

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

from langchain.embeddings import HuggingFaceHubEmbeddings
embeddings = HuggingFaceHubEmbeddings()

from langchain.vectorstores import FAISS

from langchain.chains import RetrievalQA

s3 = boto3.client('s3', config=Config(signature_version=UNSIGNED))
s3.download_file('rad-rag-demos', 'vectorstores/faiss_db_ray.zip', './chroma_db/faiss_db_ray.zip')
with zipfile.ZipFile('./chroma_db/faiss_db_ray.zip', 'r') as zip_ref:
    zip_ref.extractall('./chroma_db/')

FAISS_INDEX_PATH='./chroma_db/faiss_db_ray'
#embeddings = HuggingFaceHubEmbeddings("multi-qa-mpnet-base-dot-v1")
embeddings = HuggingFaceHubEmbeddings()
db = FAISS.load_local(FAISS_INDEX_PATH, embeddings)
retriever = db.as_retriever(search_type = "mmr")

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] = response['result']
    return 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()