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!

1
resposta

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)
1 resposta

Oi, Paulo. Tudo bem com você?

Seu categorizador ficou bem alinhado com a proposta da atividade. Você aplicou o PromptTemplate, estruturou a resposta da cidade com Pydantic por meio da classe CidadeRecomendada e utilizou with_structured_output() para garantir que o modelo retornasse os campos esperados. Também separou as cadeias de restaurantes e atrações culturais, mantendo o fluxo organizado.

Parabéns pela atividade. Continue compartilhando suas implementações e experimentos no fórum.

Estamos à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!