Spaces:
Sleeping
Sleeping
File size: 4,543 Bytes
0271e9b 586aa0c 9d7f8de 9355ea5 0271e9b 586aa0c 0079c63 0271e9b 0f77de4 586aa0c 0079c63 16997b3 b794ac4 0271e9b 0079c63 0271e9b 16997b3 601c6ac 0271e9b 16997b3 0271e9b b794ac4 0079c63 0271e9b 16997b3 0271e9b 16997b3 0271e9b 16997b3 0271e9b 16997b3 0271e9b 0079c63 b794ac4 ec533d0 0271e9b b794ac4 7dc5633 b794ac4 0271e9b 0079c63 b794ac4 16997b3 0079c63 |
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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
import gradio as gr
import random
import openai
import pinecone
import os
from langchain.vectorstores import Pinecone
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.chains import ConversationalRetrievalChain
from langchain.chat_models import ChatOpenAI
openai.api_key= os.environ.get('API_OPENAI')
embeddings = OpenAIEmbeddings(openai_api_key=openai.api_key)
PINECONE_API_KEY = os.environ.get('API_PINECONE')
pinecone.init(
api_key=PINECONE_API_KEY, # find at app.pinecone.io
environment="eu-west4-gcp" # next to api key in console
)
index_name = "yc-faq-air"
vectorstore = Pinecone.from_existing_index(index_name, embeddings)
prompt = "Instruction: Твоя роль - кваліфікований співробітник саппорту у системи YouControl. Потрібно відповісти на питання від користувача з огляду на контекст. Контекст ми беремо з бази знань, але вона може бути не повна. Якщо контекст не коректний, то відповідай на свій розсуд або передай запит сапорту, про контекс нічого не пишемо у відповіді. YouControl може писатися по різному: YC,Ю-контрол,Юконтрол, Юконтроль, Юр контроль, ЮК, UControl, Ю-контроль, YOU Kontrol, YouContro. ЗЕД - це зовнішня економічна діяльність."+"""
"""
messages = [{"role": "system", "content": prompt}]
chat_history = []
def ask_yc_bot(question):
docs = vectorstore.similarity_search(question)
source_name = docs[0].metadata['source']
context = docs[0].page_content
result = "Питання: " + question + " Контектс: " + context
return result
def clear_f():
prompt = "Instruction: Твоя роль - кваліфікований співробітник саппорту у системи YouControl. Потрібно відповісти на питання від користувача з огляду на контекст. Контекст ми беремо з бази знань, але вона може бути не повна. Якщо контекст не коректний, то відповідай на свій розсуд або передай запит сапорту, про контекс нічого не пишемо у відповіді. YouControl може писатися по різному: YC,Ю-контрол,Юконтрол, Юконтроль, Юр контроль, ЮК, UControl, Ю-контроль, YOU Kontrol, YouContro. ЗЕД - це зовнішня економічна діяльність."+"""
"""
messages = [{"role": "system", "content": prompt}]
print("")
chat_history.clear()
return ""
def query_gpt_3_5(messages, context):
completion = openai.ChatCompletion.create(
model="gpt-4-0613",
messages=messages
)
return completion.choices[0].message.content
def respond(message, chat_history):
message_rag = ask_yc_bot(message)
user_message_dict = [{"role": "user", "content": message_rag}]
messages.extend (user_message_dict)
bot_message = query_gpt_3_5(messages, "")
chat_history.append((message, bot_message))
print("chat_histori", chat_history)
bot_message_dict = [{"role": "assistant", "content": bot_message}]
messages.extend (bot_message_dict)
print("messages", messages)
print ("message_rag=", message_rag)
return "", chat_history, message_rag
css = """
footer{display:none !important}
.custom-button {
height: 83px;
}
"""
with gr.Blocks(css=css) as demo:
with gr.Row():
with gr.Column(scale=2):
chatbot = gr.Chatbot([(None, "Привіт! Що ти хочеш дізнатися про YouControl?")], height=300)
with gr.Column(scale=1):
context = gr.Textbox(lines=11, label="Last Context")
with gr.Row():
with gr.Column(scale=2):
msg = gr.Textbox(label="")
with gr.Column(scale=1):
submit_button = gr.Button("Отправить", elem_classes="custom-button")
clear = gr.ClearButton([msg, chatbot], value="Новый чат")
clear.click(clear_f)
submit_button.click(respond, [msg, chatbot], [msg, chatbot, context])
msg.submit(respond, [msg, chatbot], [msg, chatbot, context])
demo.launch(debug=True, queue=False)
|