Seções da Base de Conhecimento ▾

Navegação

▸ Comece aqui Por funções

Categorias

Ferramentas 37
Glossário 12

Ferramentas

LlamaIndex + Gonka AI — Aplicações RAG por alguns centavos

LlamaIndex é o framework líder para a construção de aplicações RAG e agentes de IA em Python (também existe a versão LlamaIndex.TS para TypeScript). Ele cuida do carregamento de documentos, divisão em chunks, indexação, busca vetorial e montagem da resposta — você descreve os dados e o LlamaIndex os transforma em um sistema de perguntas e respostas sobre qualquer LLM.

O único problema é o custo da inferência. O RAG é inerentemente faminto: para cada pergunta, o modelo recebe a consulta mais vários fragmentos de contexto encontrados, e para a indexação de grandes coleções, adicionam-se embeddings. Em volumes de produção, isso equivale a milhares de solicitações por dia. Com OpenAI ($2.50–15 por 1M de tokens) ou Anthropic ($3–15 por 1M), até mesmo um serviço de perguntas e respostas modesto se transforma em dezenas de milhares de dólares por mês.

O LlamaIndex funciona nativamente com qualquer endpoint compatível com OpenAI através da classe OpenAILike. Isso significa que o JoinGonka Gateway é conectado com apenas algumas linhas — sem provedores personalizados ou patches. O resultado: o mesmo sistema RAG funciona por $0.0069/1M de tokens de entrada (saída ×3) através da rede descentralizada Gonka — centenas e milhares de vezes mais barato que APIs em nuvem.

Início rápido: Conectando via OpenAILike

Chave de API do JoinGonka: registre-se em gate.joingonka.ai/register — no início oferecemos 3M de tokens gratuitos — e crie uma chave jg-xxx no Dashboard.

Instalação:

pip install llama-index llama-index-llms-openai-like

Para qualquer API compatível com OpenAI, o LlamaIndex fornece a classe OpenAILike do pacote llama_index.llms.openai_like. Exemplo mínimo de solicitação à Gonka:

from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-sua-chave",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,            # Gonka é um chat-endpoint
    is_function_calling_model=True, # tool calling nativo suportado
    context_window=200000,         # 200K nos modelos da rede
    max_tokens=8192,               # teto de saída via Gateway
)

response = llm.complete("Explique o que é RAG em três frases.")
print(response)

Importante sobre o OpenAILike: certifique-se de especificar is_chat_model=True — caso contrário, o LlamaIndex irá para o endpoint de completion, que não possuímos. is_function_calling_model=True habilita tool calls nativos. Defina context_window de acordo com o modelo para que o LlamaIndex processe o contexto corretamente.

Exemplo: pipeline RAG com query engine

Um cenário clássico do LlamaIndex é um índice sobre seus documentos e consultas via query_engine. A LLM global é definida uma única vez através de Settings.llm, e depois todo o pipeline utiliza o Gonka automaticamente.

from llama_index.core import (
    VectorStoreIndex,
    SimpleDirectoryReader,
    Settings,
)
from llama_index.llms.openai_like import OpenAILike
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

# 1. LLM via Gonka (uma vez - globalmente)
Settings.llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-sua-chave",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,
    context_window=200000,
    max_tokens=8192,
)

# 2. Embeddings locais (grátis, sem OpenAI)
Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-small-en-v1.5"
)

# 3. Carregamento e indexação de documentos da pasta ./data
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)

# 4. Consulta à base de conhecimento
query_engine = index.as_query_engine()
response = query_engine.query("Sobre o que é este documento?")
print(response)

Nuance crítica sobre embeddings: por padrão, o VectorStoreIndex utiliza embeddings da OpenAI (text-embedding-ada-002), o que gera chamadas pagas separadas para a OpenAI, e não para o Gonka. Para deixar de depender da OpenAI, defina um modelo de embeddings local via Settings.embed_model (como no exemplo acima — HuggingFaceEmbedding, pacote pip install llama-index-embeddings-huggingface). Assim, a geração é feita via Gonka e a vetorização ocorre localmente e de graça.

Custo: uma solicitação de pipeline RAG (busca + geração) consome ~2–5K tokens de LLM. Via Gonka, isso custa frações de centavo; via OpenAI/Anthropic, é 3–4 ordens de grandeza mais caro. Com milhares de solicitações por dia, a diferença se traduz em dezenas de milhares de dólares de economia por mês.

Comparação de custos para carga de trabalho RAG

Uma aplicação RAG não é um chat pontual, mas um fluxo constante de pedidos: cada pergunta do utilizador consome 2–5K tokens de LLM (a pergunta em si mais os fragmentos de contexto encontrados). Calculemos os volumes típicos e quanto custam em diferentes fornecedores. Preços da Gonka via JoinGonka Gateway: entrada ~$0.0069/1M, saída ×3.

CenárioTokens LLMOpenAI / AnthropicJoinGonka Gonka
Uma pergunta à base de conhecimento~4K$0.01 — $0.06~$0.00004
Chatbot de suporte (1K pedidos/dia)~4M/dia$10 — $60 por dia~$0.038 por dia
Indexação + Q&A por corpus (1M palavras)~5M$12 — $75~$0.048
Serviço de produção, 50K pedidos/mês~200M/mês$500 — $3,000 por mês~$1.92 por mês

Com os 3M tokens gratuitos, pode executar os primeiros pedidos do pipeline RAG, indexar um corpus de teste e fazer milhares de pedidos — sem gastar um cêntimo. Em volumes de produção, a JoinGonka Gateway transforma a RAG de um serviço caro numa despesa que nem notará.

Agentes, chamada de ferramenta e seleção de modelo

O LlamaIndex não apenas sabe responder a documentos, mas também criar agentes com ferramentas. Todos os três modelos Gonka suportam tool calling nativo — os agentes chamam funções de forma estruturada, sem analisar texto. Exemplo de agente com ferramenta:

import asyncio
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-sua-chave",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=200000,
    max_tokens=8192,
)

def multiply(a: float, b: float) -> float:
    """Multiplica dois números."""
    return a * b

agent = FunctionAgent(
    tools=[multiply],
    llm=llm,
    system_prompt="Você é um assistente útil. Use ferramentas para cálculos.",
)

async def main():
    result = await agent.run("Quanto é 1234 multiplicado por 5678?")
    print(result)

asyncio.run(main())

Seleção de modelo (campo model e os limites correspondentes context_window / max_tokens):

Modelo (model)ContextoSaída máx.Quando usar
MiniMaxAI/MiniMax-M2.7200K8192Padrão (como no exemplo): tool calling, agentes, RAG
deepseek-ai/DeepSeek-V4-Flash-0731380K32768O segundo contexto mais longo da rede, saída mais longa, prompts grandes baratos
zai-org/GLM-5.3-Flash390K8192Modelo de raciocínio: lógica complexa, o contexto mais longo da rede; o raciocínio consome parte de max_tokens

O limite de max_tokens via Gateway é de até 8192 para MiniMax M2.7 e GLM-5.3 Flash, até 32768 para DeepSeek V4 Flash. Se max_tokens não for especificado para uma solicitação não-streaming, por padrão retornará até 1500 tokens — para respostas RAG e passos de agente, especifique o valor explicitamente.

TypeScript: para o LlamaIndex.TS, há um caminho espelhado — a classe OpenAI do pacote @llamaindex/openai aceita baseURL e apiKey (ou lê as variáveis OPENAI_BASE_URL / OPENAI_API_KEY), então o mesmo Gateway se conecta também na pilha Node.js. Se você cria aplicações AI e em frameworks Python, veja também o guia sobre LangChain.

LlamaIndex + Gonka = RAG e agentes prontos para produção por frações de cêntimo. Ligação via OpenAILike (is_chat_model=True), tool calling nativo, embeddings locais — entrada $0.0069/1M em vez dos $2.50–15 da OpenAI. Os tokens iniciais permitem experimentar o pipeline sem cartão.

Quer saber mais?

Explore outras seções ou comece a ganhar GNK agora mesmo.

Obter tokens gratuitos →