Разделы базы знаний ▾

Инструменты

Инструменты

LlamaIndex + Gonka AI — RAG-приложения за копейки

LlamaIndex — ведущий фреймворк для построения RAG-приложений и AI-агентов на Python (есть и TypeScript-версия LlamaIndex.TS). Он берёт на себя загрузку документов, разбиение на чанки, индексацию, поиск по векторам и сборку ответа — вы описываете данные, а LlamaIndex превращает их в вопросно-ответную систему поверх любой LLM.

Проблема одна — стоимость инференса. RAG по своей природе прожорлив: на каждый вопрос в модель уезжает запрос плюс несколько найденных фрагментов контекста, а для индексации больших коллекций добавляются эмбеддинги. На объёмах production это тысячи запросов в день. У OpenAI ($2.50–15 за 1M токенов) или Anthropic ($3–15 за 1M) даже скромный сервис вопросов-ответов превращается в десятки тысяч долларов в месяц.

LlamaIndex нативно работает с любым OpenAI-совместимым endpoint через класс OpenAILike. Это значит, что JoinGonka Gateway подключается несколькими строками — без кастомных провайдеров и патчей. Результат: та же RAG-система работает за $0.0005/1M токенов на входе (выход ×3) через децентрализованную сеть Gonka — в сотни и тысячи раз дешевле облачных API.

Быстрый старт: подключение через OpenAILike

API-ключ JoinGonka: зарегистрируйтесь на gate.joingonka.ai/register — на старте даём 10M бесплатных токенов — и создайте ключ jg-xxx в Dashboard.

Установка:

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

Для произвольного OpenAI-совместимого API LlamaIndex предоставляет класс OpenAILike из пакета llama_index.llms.openai_like. Минимальный пример запроса к Gonka:

from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-ваш-ключ",
    model="Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    is_chat_model=True,            # Gonka — это chat-эндпоинт
    is_function_calling_model=True, # нативный tool calling поддерживается
    context_window=131072,         # 128K у Qwen3-235B
    max_tokens=8192,               # потолок вывода через Gateway (Qwen)
)

response = llm.complete("Объясни, что такое RAG, в трёх предложениях.")
print(response)

Важно про OpenAILike: обязательно укажите is_chat_model=True — иначе LlamaIndex пойдёт в completion-эндпоинт, которого у нас нет. is_function_calling_model=True включает нативные tool calls. context_window задавайте по модели, чтобы LlamaIndex правильно нарезал контекст.

Пример: RAG-пайплайн с query engine

Классический сценарий LlamaIndex — индекс по вашим документам и запросы к нему через query_engine. Глобальная LLM задаётся один раз через Settings.llm, дальше весь пайплайн использует Gonka автоматически.

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 через Gonka (один раз — глобально)
Settings.llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-ваш-ключ",
    model="Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    is_chat_model=True,
    context_window=131072,
    max_tokens=8192,
)

# 2. Локальные эмбеддинги (бесплатно, без OpenAI)
Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-small-en-v1.5"
)

# 3. Загрузка и индексация документов из папки ./data
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)

# 4. Запрос к базе знаний
query_engine = index.as_query_engine()
response = query_engine.query("О чём этот документ?")
print(response)

Критичный нюанс про эмбеддинги: по умолчанию VectorStoreIndex использует эмбеддинги OpenAI (text-embedding-ada-002) — это отдельные платные вызовы к OpenAI, а не к Gonka. Чтобы полностью уйти от OpenAI, задайте локальную модель эмбеддингов через Settings.embed_model (как в примере выше — HuggingFaceEmbedding, пакет pip install llama-index-embeddings-huggingface). Тогда генерация идёт через Gonka, а векторизация — локально и бесплатно.

Стоимость: один запрос RAG-пайплайна (поиск + генерация) расходует ~2–5K токенов LLM. Через Gonka это доли цента; через OpenAI/Anthropic — на 3–4 порядка дороже. На потоке в тысячи запросов в день разница превращается в десятки тысяч долларов экономии в месяц.

Сравнение стоимости RAG-нагрузки

RAG-приложение — это не разовый чат, а постоянный поток запросов: каждый вопрос пользователя тянет за собой 2–5K токенов LLM (сам вопрос плюс найденные фрагменты контекста). Посчитаем типичные объёмы и во что они обходятся на разных провайдерах. Цены Gonka через JoinGonka Gateway: вход ~$0.0005/1M, выход ×3.

СценарийТокенов LLMOpenAI / AnthropicJoinGonka Gonka
Один вопрос к базе знаний~4K$0.01 — $0.06~$0.000005
Чат-бот поддержки (1K запросов/день)~4M/день$10 — $60 в день~$0.005 в день
Индексация + Q&A по корпусу (1M слов)~5M$12 — $75~$0.006
Production-сервис, 50K запросов/мес~200M/мес$500 — $3,000 в мес~$0.25 в мес

На бесплатных 10M токенов можно отладить весь RAG-пайплайн, проиндексировать тестовый корпус и прогнать тысячи запросов — и не потратить ни цента. На production-объёмах JoinGonka Gateway превращает RAG из дорогого сервиса в статью расходов, которую можно вообще не замечать.

Агенты, tool calling и выбор модели

LlamaIndex умеет не только отвечать по документам, но и строить агентов с инструментами. Все три модели Gonka поддерживают нативный tool calling — агенты вызывают функции структурированно, без парсинга текста. Пример агента с инструментом:

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-ваш-ключ",
    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:
    """Перемножает два числа."""
    return a * b

agent = FunctionAgent(
    tools=[multiply],
    llm=llm,
    system_prompt="Ты полезный ассистент. Для вычислений используй инструменты.",
)

async def main():
    result = await agent.run("Сколько будет 1234 умножить на 5678?")
    print(result)

asyncio.run(main())

Выбор модели (поле model и соответствующие лимиты context_window / max_tokens):

Модель (model)КонтекстМакс. выводКогда брать
Qwen/Qwen3-235B-A22B-Instruct-2507-FP8128K8192Дефолт: RAG, агенты, длинные ответы
moonshotai/Kimi-K2.6128K3072Сильные рассуждения и tool calling
MiniMaxAI/MiniMax-M2.7128K4096Альтернатива для агентских задач

Лимит max_tokens через Gateway — до 8192 на модели Qwen3; для Kimi и MiniMax укажите 3072 и 4096 соответственно. Если max_tokens не задан для не-стримингового запроса, по умолчанию вернётся до 1500 токенов — для RAG-ответов и агентских шагов задавайте значение явно.

TypeScript: для LlamaIndex.TS есть зеркальный путь — класс OpenAI из пакета @llamaindex/openai принимает baseURL и apiKey (или читает переменные OPENAI_BASE_URL / OPENAI_API_KEY), так что тот же Gateway подключается и в Node.js-стеке. Если строите AI-приложения и на Python-фреймворках, посмотрите также гайд по LangChain.

LlamaIndex + Gonka = production-ready RAG и агенты за доли цента. Подключение через OpenAILike (is_chat_model=True), нативный tool calling, локальные эмбеддинги — вход $0.0005/1M вместо $2.50–15 у OpenAI. 10M бесплатных токенов хватит, чтобы отладить весь пайплайн.

Хотите узнать больше?

Изучите другие разделы или начните зарабатывать GNK прямо сейчас.

Получить бесплатные 10M токенов →