1
resposta

02 Preparando o ambiente

# instalar antes:
# pip install langchain langgraph langchain-google-genai langchain_community tavily-python python-dotenv aiosqlite

import os
import asyncio
from dotenv import load_dotenv
from langchain_google_genai import ChatGoogleGenerativeAI
from tavily import TavilyClient
from langgraph.checkpoint.sqlite.aio import AsyncSqliteSaver

# 1. Carregar variáveis do .env
load_dotenv()

GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
TAVILY_API_KEY = os.getenv("TAVILY_API_KEY")

if not GEMINI_API_KEY:
    raise ValueError("GEMINI_API_KEY não encontrada no arquivo .env")
if not TAVILY_API_KEY:
    raise ValueError("TAVILY_API_KEY não encontrada no arquivo .env")

# 2. Inicializar modelo Gemini
llm = ChatGoogleGenerativeAI(
    model="gemini-1.5-flash",
    google_api_key=GEMINI_API_KEY,
    temperature=0
)

# 3. Inicializar cliente Tavily
tavily = TavilyClient(api_key=TAVILY_API_KEY)

# 4. Criar/abrir banco SQLite para checkpoints
DB_PATH = "checkpoints.sqlite"

async def preparar_ambiente():
    async with AsyncSqliteSaver.from_conn_string(DB_PATH) as memory:
        print("Ambiente carregado com sucesso.")
        print("Gemini configurado:", llm.model)
        print("Tavily configurado:", tavily is not None)
        print("Banco SQLite pronto:", DB_PATH)

        # teste rápido do LLM
        resposta = await llm.ainvoke("Responda apenas: ambiente pronto")
        print("Teste Gemini:", resposta.content)

        # teste rápido da busca Tavily
        busca = tavily.search(query="LangGraph checkpoints sqlite", max_results=2)
        print("Teste Tavily OK. Resultados:", len(busca.get("results", [])))

asyncio.run(preparar_ambiente())
1 resposta

Olá, Moacir! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso do dotenv para gerenciar variáveis de ambiente com Python, utilizou muito bem o ChatGoogleGenerativeAI para configurar o modelo Gemini e ainda compreendeu a importância do AsyncSqliteSaver para manter checkpoints de forma persistente.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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