23
23
from langchain .embeddings .openai import OpenAIEmbeddings
24
24
from langchain .vectorstores import MongoDBAtlasVectorSearch
25
25
from langchain .chains import RetrievalQA
26
- from langchain .prompts import PromptTemplate
26
+ from langchain .prompts import ChatPromptTemplate
27
27
from langchain .callbacks .base import BaseCallbackHandler
28
28
from langchain .chat_models import ChatOpenAI
29
+ from langchain .prompts import (
30
+ HumanMessagePromptTemplate ,
31
+ SystemMessagePromptTemplate ,
32
+ AIMessagePromptTemplate ,
33
+ )
29
34
30
35
31
36
OPEN_AI_MODEL = st .secrets .get ("OPENAI_MODEL" , os .getenv ("OPENAI_MODEL" ))
39
44
40
45
last_assistant_response = None
41
46
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
-
56
47
57
48
def ask_fine_tuned_api (prompt ):
58
- # set_api_base("ask_fine_tuned")
59
49
client = OpenAI ()
60
50
61
51
response = client .completions .create (
@@ -163,7 +153,7 @@ def ask_gpt_ft(prompt, placeholder, additional_context=None):
163
153
164
154
full_response = ""
165
155
request_id = str (uuid .uuid4 ())
166
- # openai.api_base = ( "http://localhost :1234/v1",)
156
+ # openai.base_url = "http://192.168.1.51 :1234/v1/"
167
157
openai .base_url = "https://oai.hconeai.com/v1/"
168
158
openai .default_headers = {
169
159
"Helicone-Auth" : HELICONE_AUTH ,
@@ -278,7 +268,6 @@ def handle_chat_message(api_response_url, data, message_placeholder, user_input)
278
268
def handle_gpt_ft_message (
279
269
user_input , message_placeholder , api_response_url , response = None
280
270
):
281
- # json_api = str(response.json())
282
271
additional_context = {
283
272
"api_error" : response .json ()["error" ] if "api/" in api_response_url else None ,
284
273
}
@@ -310,11 +299,10 @@ def ask_langchain(prompt, placeholder):
310
299
dbName = "default_db"
311
300
collectionName = "default_collection"
312
301
try :
313
- # This line checks if you can connect to the MongoDB database
314
302
client .server_info ()
315
303
except Exception as e :
316
304
print ("There was an error connecting to MongoDB:" , e )
317
- return None # or handle the error as appropriate for your application
305
+ return None
318
306
319
307
collection = client [dbName ][collectionName ]
320
308
@@ -326,24 +314,25 @@ def ask_langchain(prompt, placeholder):
326
314
327
315
qa_retriever = vectorstore .as_retriever (
328
316
search_type = "similarity" ,
329
- search_kwargs = {"k" : 1 },
317
+ search_kwargs = {"k" : 2 },
330
318
)
331
319
request_id = str (uuid .uuid4 ())
332
320
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."""
337
324
338
- Context: {{context}}
325
+ system_message_prompt = SystemMessagePromptTemplate . from_template ( template )
339
326
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 )
341
331
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 ]
346
334
)
335
+
347
336
custom_headers = {
348
337
"Helicone-Auth" : HELICONE_AUTH ,
349
338
"Helicone-Property-Session" : HELICONE_SESSION ,
@@ -364,7 +353,7 @@ def ask_langchain(prompt, placeholder):
364
353
llm = llm ,
365
354
chain_type = "stuff" ,
366
355
retriever = qa_retriever ,
367
- chain_type_kwargs = {"prompt" : PROMPT },
356
+ chain_type_kwargs = {"prompt" : chat_prompt },
368
357
)
369
358
370
359
response = qa (prompt )
0 commit comments