Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

No primeiro projeto

Primeiro projeto: Agente de Futebol, o código abaixo, não tem como pegar um api_key da OpenAI?

# Inicializa o modelo de linguagem
llm = ChatOpenAI(
    model="gpt-4o-mini",
    openai_api_key=" "
)

# Cria a cadeia RAG
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever,
    return_source_documents=True
)
3 respostas
solução!

Oii, Warley.

A OpenAI funciona em um sistema de créditos pré-pagos. Mesmo para o modelo gpt-4o-mini, que tem um custo muito baixo, é necessário ter um saldo mínimo na conta da plataforma para que a chave de API funcione. Não existe uma chave gratuita vitalícia para uso via código, apenas um bônus inicial que a empresa oferece para novas contas por tempo limitado.

A página oficial de preços da API está disponível aqui, se quiser dar uma olhadinha.

Se quiser testar outra opção:

A Groq é uma plataforma que oferece acesso gratuito (com limites de requisições por minuto) a modelos de código aberto como o Llama. É uma das formas mais simples de testar agentes hoje.

Você pode entender mais sobre aqui: Existe um plano gratuito e quais são as suas limitações?. A documentação é ótima também.

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

Eu também tive problemas para utilizar os modelos do openai, como ainda estou aprendendo, preferi não depositar créditos ainda nas ferramentas. Eu vinha utilizando o Groq e para uso regular ele me serviu até que muito bem eu diria, mas ele não suporta essa parte de embeddings. Eu to utilizando agora o gemini, que tem modelos de embeddings gratuítos (com limitações). Uma dica super importante pra se trabalhar nesses modelos gratuitos, o pdf das regras de futebol disponibilizado no curso é bem grande, tem 232 páginas de conteúdo, se for gerar embeddings com esse arquivo, vai estourar toda a cota gratuíta e vai retornar o error code 429. Sugiro mandar o proprio chat gpt ou gemini gerar um pdf com regras de futebol mais básico e utilizar ele.

As dependencias que to utilizando do google: (pip list | grep google)

google-auth=2.49.2
google-genai=1.73.1
googleapis-common-protos=1.74.0
langchain-google-genai=4.2.1
from langchain_google_genai import GoogleGenerativeAIEmbeddings, ChatGoogleGenerativeAI
from dotenv import load_dotenv

load_dotenv()

google_api_key = os.getenv("GOOGLE_API_KEY")

document = PyPDFLoader(str(DOCUMENT_PATH)).load()

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=100,
)

chunks = text_splitter.split_documents(document)

embeddings = GoogleGenerativeAIEmbeddings(
    model="models/gemini-embedding-001",
    api_key=google_api_key
)

vectorstore = Chroma.from_documents(
    documents=chunks,
    embedding=embeddings,   
    persist_directory="path"
)

Fernando, passei por esses mesmos caminhos que vc citou. Logo no openai os créditos foram um empecilho. No Gemini estourava a cota gratuíta e retornava o error code 429. Não pensei na alternatica de gerar um PDF menor.

Para usar o Groq o segredo foi usar a biblioteca Hugging Face para os Embeddings. A vantagem é que ela roda localmente no ambiente do Colab, então não consome cota de API, independente do tamanho do PDF. Depois, usei o Groq e rodei todo o exercício.

A parte do meu código que faz o embedding é essa:

# 1. Carrega o PDF
loader = PyPDFLoader(CAMINHO_PDF)
documents = loader.load()

# 2. Divide em chunks (Pedaços maiores com sobreposição para não perder regras)
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1500, 
    chunk_overlap=250,
    separators=["\n\n", "\n", ".", " ", ""]
)
chunks = text_splitter.split_documents(documents)

# 3. Inicializa Embeddings Gratuitos (Hugging Face)
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")

# 4. Cria/Carrega o Banco Vetorial Chroma
vectorstore = Chroma.from_documents(
    documents=chunks, 
    embedding=embeddings,
    persist_directory="./chroma_db_futebol"
)

# 5. Configura o Retriever (Buscamos 8 trechos para garantir a regra de impedimento)
retriever = vectorstore.as_retriever(search_kwargs={"k": 8})