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

Навігація

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

Категорії

Інструменти 54
Глосарій 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.0062/1M токенів на вході (вихід ×3) через децентралізовану мережу Gonka — у сотні й тисячі разів дешевше за хмарні API.

Швидкий старт: підключення через OpenAILike

API-ключ JoinGonka: зареєструйтеся на gate.joingonka.ai/register — на старті ми даємо 3M безкоштовних токенів — і створіть ключ 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-your-key",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,            # Gonka is a chat endpoint
    is_function_calling_model=True, # native tool calling is supported
    context_window=180000,         # MiniMax M2.7 context window
    max_tokens=8192,               # Gateway output cap
)

response = llm.complete("Explain what RAG is in three sentences.")
print(response)

Важливо про OpenAILike: обов'язково вкажіть is_chat_model=True — інакше LlamaIndex піде в застарілий ендпоінт Completions із сирим промптом замість діалогу. 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 via Gonka (set once, globally)
Settings.llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-your-key",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,
    context_window=180000,
    max_tokens=8192,
)

# 2. Local embeddings (free, no OpenAI)
Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-small-en-v1.5"
)

# 3. Load and index documents from the ./data folder
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)

# 4. Query the knowledge base
query_engine = index.as_query_engine()
response = query_engine.query("What is this document about?")
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.0062/1M, вихід ×3.

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

На безкоштовних 3M токенів можна прогнати перші запити 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-your-key",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=180000,
    max_tokens=8192,
)

def multiply(a: float, b: float) -> float:
    """Multiplies two numbers."""
    return a * b

agent = FunctionAgent(
    tools=[multiply],
    llm=llm,
    system_prompt="You are a helpful assistant. Use the tools for calculations.",
)

async def main():
    result = await agent.run("What is 1234 multiplied by 5678?")
    print(result)

asyncio.run(main())

Вибір моделі (поле model та відповідні ліміти context_window / max_tokens):

Модель (model)КонтекстМакс. вивідКоли брати
MiniMaxAI/MiniMax-M2.7180K8192Дефолт (як у прикладі): tool calling, агенти, RAG
deepseek-ai/DeepSeek-V4-Flash-0731380K32768Другий за довжиною контекст мережі, найдовший вивід, дешеві великі промпти
zai-org/GLM-5.3-Flash390K8192Reasoning-модель: складна логіка, найдовший контекст мережі; міркування витрачають частину max_tokens

Ліміт max_tokens через Gateway — до 8192 для MiniMax M2.7 і GLM-5.3 Flash, до 32768 для DeepSeek V4 Flash. Якщо 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.0062/1M замість $2.50–15 у OpenAI. Стартові токени дають змогу спробувати пайплайн без картки.

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

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

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