File size: 2,373 Bytes
ac6e794
 
90592aa
 
ac6e794
 
 
4272192
dcfda02
 
ac6e794
 
 
 
 
 
 
 
 
 
 
 
f145553
ac6e794
 
 
 
34e179e
ac6e794
 
90592aa
 
 
 
 
 
 
 
 
ac6e794
90592aa
ac6e794
 
 
 
 
 
 
 
 
 
90592aa
 
 
 
34e179e
90592aa
ac6e794
 
90592aa
 
 
 
ac6e794
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
# chatbot.py

import gradio as gr
from huggingface_hub import InferenceClient
import faiss
import json
from sentence_transformers import SentenceTransformer

client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")

# Load the FAISS index and the sentence transformer model
index = faiss.read_index("apexcustoms_index.faiss")
model = SentenceTransformer('sentence_transformer_model')

# Load the extracted text
with open("apexcustoms.json", "r") as f:
    documents = json.load(f)

def retrieve_documents(query, k=5):
    query_embedding = model.encode([query])
    distances, indices = index.search(query_embedding, k)
    return [documents[i] for i in indices[0]]

def respond(message, history, system_message, max_tokens, temperature, top_p):
    # Retrieve relevant documents
    relevant_docs = retrieve_documents(message)
    context = "\n\n".join(relevant_docs)

    messages = [{"role": "system", "content": system_message},
                {"role": "user", "content": f"Context: {context}\n\n{message}"}]

    for val in history:
        if val[0]:
            messages.append({"role": "user", "content": val[0]})
        if val[1]:
            messages.append({"role": "assistant", "content": val[1]})

    messages.append({"role": "user", "content": message})

    response = ""

    for message in client.chat_completion(
        messages,
        max_tokens=max_tokens,
        stream=True,
        temperature=temperature,
        top_p=top_p,
    ):
        token = message.choices[0].delta.content
        response += token
        yield response

demo = gr.ChatInterface(
    respond,
    additional_inputs=[
        gr.Textbox(value="You are a helpful car configuration assistant, specifically you are the assistant for Apex Customs (https://www.apexcustoms.com/). Given the user's input, provide suggestions for car models, colors, and customization options. Be creative and conversational in your responses. You should remember the user car model and tailor your answers accordingly. \n\nUser: ", label="System message"),
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
        gr.Slider(minimum=0.1, maximum 4.0, value=0.7, step=0.1, label="Temperature"),
        gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
    ],
)

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