Розділи бази знань ▾

Інструменти

Інструменти

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 з дорогого сервісу на статтю витрат, яку можна взагалі не помічати.

Агенти, виклик інструментів та вибір моделі

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 токенів →