Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

Meu categorizador com Llama 3.1 8b

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)