Seções da Base de Conhecimento ▾

Navegação

▸ Comece aqui Por funções

Categorias

Ferramentas 32
Glossário 12

Ferramentas

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

O LlamaIndex é o framework líder para construir aplicações RAG e agentes de IA em Python (também existe uma versão em TypeScript, LlamaIndex.TS). Ele cuida do carregamento de documentos, fragmentação (chunking), 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.

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

O LlamaIndex trabalha nativamente com qualquer endpoint compatível com a OpenAI através da classe OpenAILike. Isso significa que o JoinGonka Gateway se conecta em poucas linhas — sem provedores personalizados ou patches. Resultado: o mesmo sistema RAG funciona por $0.003/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

API-chave JoinGonka: registre-se em gate.joingonka.ai/register — damos 10M de tokens gratuitos na largada — 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. Um exemplo mínimo de solicitação ao 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 endpoint de chat
    is_function_calling_model=True, # suporte nativo para tool calling
    context_window=200000,         # 200K nos modelos da rede
    max_tokens=8192,               # limite de saída através do 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 acessará o endpoint de completion, que não possuímos. is_function_calling_model=True ativa o tool calling nativo. Configure o context_window de acordo com o modelo para que o LlamaIndex segmente 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 solicitações: cada pergunta do usuário atrai 2–5K tokens de LLM (a própria pergunta mais os fragmentos de contexto encontrados). Vamos calcular os volumes típicos e quanto custam em diferentes provedores. Preços da Gonka via JoinGonka Gateway: entrada ~$0.003/1M, saída ×3.

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

Com os 10M de tokens gratuitos, você pode depurar todo o pipeline RAG, indexar um corpus de teste e realizar 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 você nem notará.

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

O LlamaIndex não só consegue responder baseado em documentos, mas também construir agentes com ferramentas. Ambos os modelos do Gonka suportam tool calling nativo — os agentes invocam 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="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 seus limites correspondentes de context_window / max_tokens):

Modelo (model)ContextoSaída máx.Quando escolher
moonshotai/Kimi-K2.6200K8192Padrão: raciocínio robusto, tool calling, agentes
MiniMaxAI/MiniMax-M2.7200K8192RAG, contexto longo, respostas longas

O limite de max_tokens via Gateway é de até 8192 para todos os modelos da rede. Se max_tokens não for definido para uma solicitação sem streaming, o padrão será retornar até 1500 tokens — para respostas RAG e passos de agente, defina o valor explicitamente.

TypeScript: para LlamaIndex.TS existe 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), para que o mesmo Gateway seja conectado no stack Node.js. Se você está criando aplicações de IA e usando frameworks Python, veja também o guia de LangChain.

LlamaIndex + Gonka = RAG e agentes prontos para produção por uma fração de centavo. Conexão via OpenAILike (is_chat_model=True), tool calling nativo, embeddings locais — entrada a $0.003/1M em vez de $2.50–15 da OpenAI. Os 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 →