Seções da Base de Conhecimento ▾

Ferramentas

Ferramentas

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

LlamaIndex é o framework líder para construir RAG-aplicativos e agentes de IA em Python (também existe uma versão TypeScript LlamaIndex.TS). Ele cuida do carregamento de documentos, divisão em chunks, indexação, pesquisa vetorial e montagem de respostas — você descreve os dados, e o LlamaIndex os transforma em um sistema de perguntas e respostas sobre qualquer LLM.

O problema é um só — o custo da inferência. O RAG, por sua natureza, é um devorador de tokens: para cada pergunta, a consulta e vários fragmentos de contexto encontrados vão para o modelo, e para indexar grandes coleções, embeddings são adicionados. Em volumes de produção, são milhares de solicitações por dia. Nos preços da OpenAI (US$ 2,50–15 por 1M de tokens) ou da Anthropic (US$ 3–15 por 1M), mesmo um serviço modesto de perguntas e respostas 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 algumas linhas — sem provedores personalizados e patches. Resultado: o mesmo sistema RAG funciona por US$ 0,0005/1M de tokens na entrada (saída ×3) através da rede descentralizada Gonka — centenas e milhares de vezes mais barato que as APIs da nuvem.

Início rápido: Conectando via OpenAILike

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

Instalação:

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

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

from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-sua-chave",
    model="Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    is_chat_model=True,            # Gonka é um endpoint de chat
    is_function_calling_model=True, # tool calling nativo é suportado
    context_window=131072,         # 128K com Qwen3-235B
    max_tokens=8192,               # limite de saída via Gateway (Qwen)
)

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

Importante sobre OpenAILike: certifique-se de definir is_chat_model=True — caso contrário, o LlamaIndex irá para o endpoint de conclusão, que não temos. is_function_calling_model=True habilita chamadas de ferramenta nativas. Defina context_window de acordo com o modelo para que o LlamaIndex corte o contexto corretamente.

Exemplo: pipeline RAG com query engine

O cenário clássico do LlamaIndex é um índice sobre seus documentos e consultas a ele através de um query_engine. A LLM global é definida uma vez via Settings.llm, e então todo o pipeline usa 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="Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    is_chat_model=True,
    context_window=131072,
    max_tokens=8192,
)

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

# 3. Carregar e indexar documentos da pasta ./data
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)

# 4. Consultar a base de conhecimento
query_engine = index.as_query_engine()
response = query_engine.query("Qual é o objetivo deste documento?")
print(response)

Nuance crítica sobre embeddings: por padrão, o VectorStoreIndex usa embeddings da OpenAI (text-embedding-ada-002) — estas são chamadas pagas separadas para a OpenAI, não para a Gonka. Para se afastar completamente da OpenAI, defina um modelo de embeddings local através de Settings.embed_model (como no exemplo acima — HuggingFaceEmbedding, pacote pip install llama-index-embeddings-huggingface). Assim, a geração ocorre via Gonka, e a vetorização é local e gratuita.

Custo: uma única solicitação de pipeline RAG (pesquisa + geração) consome ~2–5K tokens LLM. Via Gonka, são frações de centavos; via OpenAI/Anthropic — 3–4 ordens de magnitude mais caro. Em um fluxo de milhares de solicitações por dia, a diferença se traduz em dezenas de milhares de dólares em economia por mês.

Comparação de custos para carga de trabalho RAG

Um aplicativo RAG não é um chat único, mas um fluxo constante de requisições: cada pergunta do usuário aciona 2-5K tokens LLM (a própria pergunta mais os fragmentos de contexto encontrados). Vamos calcular os volumes típicos e quanto eles custam em diferentes provedores. Preços Gonka via JoinGonka Gateway: entrada ~$0,0005/1M, saída ×3.

CenárioTokens LLMOpenAI / AnthropicJoinGonka Gonka
Uma pergunta à base de conhecimento~4K$0.01 — $0.06~$0.000005
Chatbot de suporte (1K requisições/dia)~4M/dia$10 — $60 por dia~$0.005 por dia
Indexação + Q&A de um corpus (1M palavras)~5M$12 — $75~$0.006
Serviço de produção, 50K requisições/mês~200M/mês$500 — $3.000 por mês~$0.25 por mês

Com 10M de tokens gratuitos, você pode depurar todo o pipeline RAG, indexar um corpus de teste e executar milhares de consultas — sem gastar um centavo. Em volumes de produção, o JoinGonka Gateway transforma o RAG de um serviço caro em uma despesa que pode ser completamente ignorada.

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

LlamaIndex não só pode responder a documentos, mas também construir agentes com ferramentas. Todos os três modelos Gonka suportam tool calling nativo — os agentes chamam funções de forma estruturada, sem parsing de 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="Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=131072,
    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())

Escolha do modelo (campo model e limites correspondentes context_window / max_tokens):

Modelo (model)ContextoSaída Máx.Quando usar
Qwen/Qwen3-235B-A22B-Instruct-2507-FP8128K8192Padrão: RAG, agentes, respostas longas
moonshotai/Kimi-K2.6128K3072Raciocínio forte e tool calling
MiniMaxAI/MiniMax-M2.7128K4096Alternativa para tarefas de agente

O limite de max_tokens via Gateway é de até 8192 no modelo Qwen3; para Kimi e MiniMax, especifique 3072 e 4096, respectivamente. Se max_tokens não for definido para uma solicitação não-streaming, por padrão, ele retornará até 1500 tokens — para respostas RAG e etapas de agente, defina o valor explicitamente.

TypeScript: para o LlamaIndex.TS, há um caminho espelho — a classe OpenAI do pacote @llamaindex/openai aceita baseURL e apiKey (ou lê as variáveis OPENAI_BASE_URL / OPENAI_API_KEY), de modo que o mesmo Gateway se conecta também à pilha Node.js. Se você está construindo aplicativos de IA em frameworks Python, consulte também o guia sobre LangChain.

LlamaIndex + Gonka = RAG e agentes prontos para produção por frações de centavos. Conexão via OpenAILike (is_chat_model=True), tool calling nativo, embeddings locais — entrada por US$ 0,0005/1M em vez de US$ 2,50–15 na OpenAI. 10M de tokens gratuitos são suficientes para depurar todo o pipeline.

Quer saber mais?

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

Obtenha 10M de tokens gratuitos →