Skip to content

Commit 298b14e

Browse files
committed
added langchain chatprompt template
1 parent b5a896e commit 298b14e

File tree

2 files changed

+23
-34
lines changed

2 files changed

+23
-34
lines changed

StreamLit-App/utils/chatbot_utils.py

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,14 @@
2323
from langchain.embeddings.openai import OpenAIEmbeddings
2424
from langchain.vectorstores import MongoDBAtlasVectorSearch
2525
from langchain.chains import RetrievalQA
26-
from langchain.prompts import PromptTemplate
26+
from langchain.prompts import ChatPromptTemplate
2727
from langchain.callbacks.base import BaseCallbackHandler
2828
from langchain.chat_models import ChatOpenAI
29+
from langchain.prompts import (
30+
HumanMessagePromptTemplate,
31+
SystemMessagePromptTemplate,
32+
AIMessagePromptTemplate,
33+
)
2934

3035

3136
OPEN_AI_MODEL = st.secrets.get("OPENAI_MODEL", os.getenv("OPENAI_MODEL"))
@@ -39,23 +44,8 @@
3944

4045
last_assistant_response = None
4146

42-
# def set_api_base(ask_name):
43-
# if ask_name == "ask_fine_tuned":
44-
# openai.api_base = "https://oai.hconeai.com/v1"
45-
46-
# elif ask_name == "ask_gpt":
47-
# openai.api_base = "https://oai.hconeai.com/v1"
48-
# # openai.api_base = "http://localhost:1234/v1"
49-
50-
# elif ask_name == "ask_gpt_ft":
51-
# openai.api_base = "http://localhost:1234/v1"
52-
53-
# elif ask_name == "ask_langchain":
54-
# openai.api_base = "http://localhost:1234/v1"
55-
5647

5748
def ask_fine_tuned_api(prompt):
58-
# set_api_base("ask_fine_tuned")
5949
client = OpenAI()
6050

6151
response = client.completions.create(
@@ -163,7 +153,7 @@ def ask_gpt_ft(prompt, placeholder, additional_context=None):
163153

164154
full_response = ""
165155
request_id = str(uuid.uuid4())
166-
# openai.api_base = ("http://localhost:1234/v1",)
156+
# openai.base_url = "http://192.168.1.51:1234/v1/"
167157
openai.base_url = "https://oai.hconeai.com/v1/"
168158
openai.default_headers = {
169159
"Helicone-Auth": HELICONE_AUTH,
@@ -278,7 +268,6 @@ def handle_chat_message(api_response_url, data, message_placeholder, user_input)
278268
def handle_gpt_ft_message(
279269
user_input, message_placeholder, api_response_url, response=None
280270
):
281-
# json_api = str(response.json())
282271
additional_context = {
283272
"api_error": response.json()["error"] if "api/" in api_response_url else None,
284273
}
@@ -310,11 +299,10 @@ def ask_langchain(prompt, placeholder):
310299
dbName = "default_db"
311300
collectionName = "default_collection"
312301
try:
313-
# This line checks if you can connect to the MongoDB database
314302
client.server_info()
315303
except Exception as e:
316304
print("There was an error connecting to MongoDB:", e)
317-
return None # or handle the error as appropriate for your application
305+
return None
318306

319307
collection = client[dbName][collectionName]
320308

@@ -326,24 +314,25 @@ def ask_langchain(prompt, placeholder):
326314

327315
qa_retriever = vectorstore.as_retriever(
328316
search_type="similarity",
329-
search_kwargs={"k": 1},
317+
search_kwargs={"k": 2},
330318
)
331319
request_id = str(uuid.uuid4())
332320

333-
prompt_template = f"""
334-
Eres un experto en la documentación de la Empresa IAND. Usa los siguientes datos para responder a la pregunta al final.
335-
Darás una respuesta clara y concisa en formato lista, con la información del contexto (context) y la pregunta (question) del usuario. No usarás fuentes externas, si no
336-
sabes la respuesta, contesta "No lo sé". Si necesitan más ayuda el email de contacto es: "suport@iand.dev".
321+
template = """Eres un experto en la documentación de la Empresa IAND. Usa los siguientes datos para responder a la pregunta al final.
322+
Darás una respuesta clara y concisa en formato lista. No usarás fuentes externas, si no sabes la respuesta, contesta No lo sé.
323+
Si necesitan más ayuda el email de contacto es: 'suport@iand.dev' <- No traduzcas el email."""
337324

338-
Context: {{context}}
325+
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
339326

340-
Question: {{question}}
327+
human_template = "{question}"
328+
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
329+
context_template = "{context}"
330+
context_message_prompt = AIMessagePromptTemplate.from_template(context_template)
341331

342-
Answer:
343-
"""
344-
PROMPT = PromptTemplate(
345-
template=prompt_template, input_variables=["context", "question"]
332+
chat_prompt = ChatPromptTemplate.from_messages(
333+
[system_message_prompt, context_message_prompt, human_message_prompt]
346334
)
335+
347336
custom_headers = {
348337
"Helicone-Auth": HELICONE_AUTH,
349338
"Helicone-Property-Session": HELICONE_SESSION,
@@ -364,7 +353,7 @@ def ask_langchain(prompt, placeholder):
364353
llm=llm,
365354
chain_type="stuff",
366355
retriever=qa_retriever,
367-
chain_type_kwargs={"prompt": PROMPT},
356+
chain_type_kwargs={"prompt": chat_prompt},
368357
)
369358

370359
response = qa(prompt)

StreamLit-App/utils/sidebar_info.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,9 @@ def display_sidebar_info():
167167
"Doc hazme una plantilla de email de problema de conexión",
168168
"doc ¿Cuál es la operativa para responder un email?",
169169
"!cómo se llama el programa de ticketing? enumera los puntos de como utilizarlo",
170-
"!Tecnologías y Roadmap del proyecto, que se ha cumplido y que no? marca con un check y dame links",
170+
"!Tecnologías y Roadmap del proyecto. marca con un check y dame links",
171171
"!¿Qué podemos hacer con el chatbot?",
172-
"!Operativa flujo de trabajo con emails porfavor",
172+
"!Procedimiento Gestión de Emails de Clientes y Creación de Tickets",
173173
"!Dame la plantilla acuerdo comercial",
174174
]
175175

0 commit comments

Comments
 (0)