from langchain_openai import ChatOpenAI
from langchain_core.prompts import PromptTemplate
from dotenv import load_dotenv
from pydantic import BaseModel
import os
load_dotenv()
llm = ChatOpenAI(
base_url=os.getenv("BASE_URL"),
api_key=os.getenv("API_KEY"),
model=os.getenv("MODEL_ALTERNATIVO"),
temperature=0.7
)
class CidadeRecomendada(BaseModel):
cidade: str
motivo: str
cidade_parser = llm.with_structured_output(CidadeRecomendada)
cidade_prompt = PromptTemplate.from_template("""
Indique uma cidade brasileira para uma pessoa interessada em {interesse}.
Responda contendo:
- cidade: nome da cidade
- motivo: explique por que ela é adequada ao interesse informado.
Interesse: {interesse}
""")
cidade_chain = cidade_prompt | cidade_parser
restaurante_prompt = PromptTemplate.from_template("""
Recomende 3 restaurantes em {cidade}.
O interesse do viajante é {interesse}.
Para cada restaurante, informe:
- nome
- tipo de culinária
- motivo da recomendação
Responda apenas com texto.
""")
restaurante_chain = restaurante_prompt | llm
cultural_prompt = PromptTemplate.from_template("""
Sugira 3 atrações culturais em {cidade} relacionadas ao interesse
"{interesse}".
Explique brevemente cada atração.
Responda apenas com texto.
""")
cultural_chain = cultural_prompt | llm
interesse = "história e cultura"
cidade = cidade_chain.invoke({
"interesse": interesse
})
print("\n===CIDADE===")
print(cidade)
restaurantes = restaurante_chain.invoke({
"cidade": cidade.cidade,
"interesse": interesse
})
print("\n===RESTAURANTES===")
print(restaurantes.content)
cultural = cultural_chain.invoke({
"cidade": cidade.cidade,
"interesse": interesse
})
print("\n===CULTURAL===")
print(cultural.content)