Spaces:
Sleeping
Sleeping
Upload 5 files
Browse files- ChatResponse.py +26 -0
- SysPrompt.py +2 -0
- index_query.py +37 -0
- vaping_index/index.faiss +0 -0
- vaping_index/index.pkl +3 -0
ChatResponse.py
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import openai
|
2 |
+
|
3 |
+
openai.api_key = "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"
|
4 |
+
|
5 |
+
# ChatGPT completion
|
6 |
+
llm_name = "gpt-3.5-turbo"
|
7 |
+
|
8 |
+
def get_completion_from_messages(messages, model=llm_name, temperature=0):
|
9 |
+
response = openai.ChatCompletion.create(
|
10 |
+
model=model,
|
11 |
+
messages=messages,
|
12 |
+
temperature=temperature, # this is the degree of randomness of the model's output
|
13 |
+
)
|
14 |
+
return response.choices[0].message["content"]
|
15 |
+
|
16 |
+
def template(context):
|
17 |
+
text=f"""Responde a la entrada previa del usuario, usando el siguiente \
|
18 |
+
contexto delimitado con ###, si este contexto es útil para responder \
|
19 |
+
al usuario, si no, entonces omítelo:
|
20 |
+
###{context}###
|
21 |
+
Si hay información solicitada por el usuario que no está en el contexto, \
|
22 |
+
dices que no la conoces, pero no inventas. Si el usuario está dando sus datos, \
|
23 |
+
omite el contexto. El hilo de la conversación es la prioridad.
|
24 |
+
No olvides escribir 'FIN DEL PEDIDO' **sólo** cuando el usuario confirme que ha terminado el pedido.
|
25 |
+
"""
|
26 |
+
return text
|
SysPrompt.py
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
sysPrompt=[{'role':'system', 'content':"""Eres Vaping chatbot, el asistente de Vape Montería, empresa especializada en todo lo relacionado con el vapeo. Ofreces información y gestionas pedidos a domicilio. Eres gracioso pero preciso en tus respuestas. No hablas de cosas diferentes al vapeo y Vape Montería.
|
2 |
+
Cuando un usuario quiera realizar un pedido, pídele su nombre, teléfono y dirección. Una vez recojas esta información, siempre debes preguntar si ha terminado el pedido. Si el usuario confirma que ha terminado, debes responder con la frase “FIN DEL PEDIDO” en mayúsculas antes de continuar con cualquier otra información."""} ]
|
index_query.py
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from langchain.embeddings.openai import OpenAIEmbeddings
|
2 |
+
from langchain.chat_models import ChatOpenAI
|
3 |
+
from langchain.prompts import PromptTemplate
|
4 |
+
from langchain.vectorstores import FAISS
|
5 |
+
from langchain.chains import StuffDocumentsChain,LLMChain
|
6 |
+
|
7 |
+
import os
|
8 |
+
os.environ["LANGCHAIN_TRACING_V2"] = "true"
|
9 |
+
os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
|
10 |
+
os.environ["LANGCHAIN_API_KEY"] = "ls__8cf4dff71d9a43d48c24a318cf7fd97a"
|
11 |
+
os.environ["LANGCHAIN_PROJECT"] = "vaping-chatbot"
|
12 |
+
|
13 |
+
|
14 |
+
llm_name = "gpt-3.5-turbo"
|
15 |
+
key1= "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" # no $
|
16 |
+
key = "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"
|
17 |
+
|
18 |
+
|
19 |
+
llm=ChatOpenAI(model_name=llm_name, temperature=0,openai_api_key = key1)
|
20 |
+
# a purely formal prompt for formatting the docs
|
21 |
+
prompt = PromptTemplate.from_template("Summarize this content: {context}")
|
22 |
+
# a purely formal chain for later defining a stuff documents chain to format docs
|
23 |
+
llm_chain = LLMChain(llm=llm, prompt=prompt)
|
24 |
+
# define embedding
|
25 |
+
embeddings = OpenAIEmbeddings(openai_api_key = key)
|
26 |
+
# load vector database
|
27 |
+
db = FAISS.load_local("VapingChatbot/vaping_index",embeddings)
|
28 |
+
# define retriever, score_threshold is minimum required similarity (0 to 1)
|
29 |
+
#retriever = db.as_retriever(search_type="similarity_score_threshold", search_kwargs={"score_threshold":0.7})
|
30 |
+
retriever = db.as_retriever(search_type="similarity_score_threshold", search_kwargs={"k": 4,"score_threshold":0.6})
|
31 |
+
# create a stuff documents chain.
|
32 |
+
sd = StuffDocumentsChain(llm_chain=llm_chain)
|
33 |
+
|
34 |
+
# obtain relevant documents from db
|
35 |
+
def get_docs(query):
|
36 |
+
docs = retriever.get_relevant_documents(query)
|
37 |
+
return sd._get_inputs(docs)['context']
|
vaping_index/index.faiss
ADDED
Binary file (805 kB). View file
|
|
vaping_index/index.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:22d2869fa422aa6ae64fa957c9fda6212be89de0e5ac70873e60178598374d90
|
3 |
+
size 34559
|