forked from ALMSantana/Projeto---3389
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathlangchain_lcel_join.py
72 lines (58 loc) · 2.31 KB
/
langchain_lcel_join.py
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
from langchain_openai import ChatOpenAI
from operator import itemgetter
from langchain.prompts import PromptTemplate
from langchain.prompts import ChatPromptTemplate
from langchain.chains import SimpleSequentialChain
from langchain.chains import LLMChain
from langchain.globals import set_debug
import os
from dotenv import load_dotenv
#para atualizaar a importação usse a versão de importação abaixo, no lugar da importação da linha 12
#from pydantic.v1 import Field, BaseModel
from langchain_core.pydantic_v1 import Field, BaseModel
from langchain_core.output_parsers import JsonOutputParser, StrOutputParser
load_dotenv()
set_debug(True)
class Destino(BaseModel):
cidade = Field("cidade a visitar")
motivo = Field("motivo pelo qual é interessante visitar")
llm = ChatOpenAI(
model="gpt-3.5-turbo",
temperature=0.5,
api_key=os.getenv("OPENAI_API_KEY"))
parseador = JsonOutputParser(pydantic_object=Destino)
modelo_cidade = PromptTemplate(
template="""Sugira uma cidade dado meu interesse por {interesse}.
{formatacao_de_saida}
""",
input_variables=["interesse"],
partial_variables={"formatacao_de_saida": parseador.get_format_instructions()},
)
modelo_restaurantes = ChatPromptTemplate.from_template(
"Sugira restaurantes populares entre locais em {cidade}"
)
modelo_cultural = ChatPromptTemplate.from_template(
"Sugira atividades e locais culturais em {cidade}"
)
modelo_final = ChatPromptTemplate.from_messages(
[
("ai", "Sugestão de viagem para a cidade: {cidade}"),
("ai", "Restaurantes que você não pode perder: {restaurantes}"),
("ai", "Atividades e locais culturais recomendados: {locais_culturais}"),
("system", "Combine as informações anteriores em 2 parágrafos coerentes")
]
)
parte1 = modelo_cidade | llm | parseador
parte2 = modelo_restaurantes | llm | StrOutputParser()
parte3 = modelo_cultural | llm | StrOutputParser()
parte4 = modelo_final | llm | StrOutputParser()
cadeia = (parte1 |
{
"restaurantes": parte2,
"locais_culturais": parte3,
"cidade" : itemgetter("cidade")
}
| parte4)
# print(modelo_cidade.invoke({"interesse" : "praias" }))
resultado = cadeia.invoke({"interesse" : "praias" })
print(resultado)