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

Навігація

▸ Почніть тут За ролями

Категорії

Інструменти 32
Глосарій 12

Інструменти

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.003/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="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,            # Gonka — це chat-ендпоінт
    is_function_calling_model=True, # нативний tool calling підтримується
    context_window=200000,         # 200K у моделей мережі
    max_tokens=8192,               # стеля виводу через Gateway
)

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="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,
    context_window=200000,
    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.003/1M, вихід ×3.

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

На безкоштовних 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="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:
    """Перемножує два числа."""
    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)КонтекстМакс. вивідКоли брати
moonshotai/Kimi-K2.6200K8192Дефолт: сильні міркування, tool calling, агенти
MiniMaxAI/MiniMax-M2.7200K8192RAG, довгий контекст, довгі відповіді

Ліміт max_tokens через Gateway — до 8192 для всіх моделей мережі. Якщо 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.003/1M замість $2.50–15 в OpenAI. 10M безкоштовних токенів вистачить, щоб відлагодити весь пайплайн.

Бажаєте дізнатися більше?

Вивчіть інші розділи або почніть заробляти GNK прямо зараз.

Отримати безкоштовні 10M токенів →