Інтеграція OpenAI Assistants API для розробки AI-агентів
Клієнти скаржаться на довгі відповіді від техпідтримки? Handmade RAG потребує тижнів розробки та постійного моніторингу? OpenAI Assistants API — готовий двигун для AI-агентів, який ми реалізуємо за дні. Наша команда має понад 5 років досвіду в AI/ML та понад 15 успішних впроваджень: HR-боти, корпоративні FAQ і техпідтримка. Завдяки Assistants API ми скорочуємо час запуску прототипу в 5–10 разів у порівнянні з кастомним RAG. Базовий асистент коштує від 500 доларів США.
Як працює Assistants API під капотом?
На відміну від Chat Completions API, Assistants беруть на себе управління пам'яттю та життєвим циклом. Кожен діалог живе в Thread — персистентній сутності, яка зберігає всю історію. Це дозволяє агенту пам'ятати контекст навіть після паузи в кілька годин. Thread може містити до 2000 повідомлень (відповідно до OpenAI Assistants API), тому для довгих консультацій цього достатньо.
Vector Store — ще одна ключова опція: ви завантажуєте документи (PDF, Word, CSV), і сервіс автоматично ріже їх на чанки та індексує. Жодних суперечок про чанкінг та алокацію ембедінгів. Інструмент File Search повертає релевантні шматки прямо в промпт асистента. А Code Interpreter виконує Python в ізольованому sandbox — ідеально для аналізу CSV або розрахунків.
Базова інтеграція
from openai import OpenAI
import time
client = OpenAI()
# Створення асистента
assistant = client.beta.assistants.create(
name="Corporate Support Assistant",
instructions="""Ти — асистент техпідтримки компанії TechCorp.
Допомагай клієнтам вирішувати проблеми. Використовуй завантажені документи як джерело істини.
При необхідності виконуй код для розрахунків та аналізу даних.""",
model="gpt-4o",
tools=[
{"type": "file_search"},
{"type": "code_interpreter"},
],
)
# Створення Thread (зберігає історію)
thread = client.beta.threads.create()
# Додавання повідомлення
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="Як налаштувати SSO для корпоративного облікового запису?",
)
# Запуск асистента
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id,
)
# Очікування завершення
while run.status in ["queued", "in_progress"]:
run = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
time.sleep(0.5)
# Отримання відповіді
messages = client.beta.threads.messages.list(thread_id=thread.id)
print(messages.data[0].content[0].text.value)
File Search: завантаження та індексування документів
# Створення Vector Store (сховище для RAG)
vector_store = client.beta.vector_stores.create(name="Support Docs")
# Завантаження документів
with open("docs/user-guide.pdf", "rb") as f:
file = client.beta.vector_stores.files.upload_and_poll(
vector_store_id=vector_store.id,
file=f,
)
# Прив'язка до асистента
assistant = client.beta.assistants.update(
assistant_id=assistant.id,
tool_resources={"file_search": {"vector_store_ids": [vector_store.id]}},
)
Кастомні функції + streaming
Обробка function calls у реальному часі — те, що робить агента справді корисним. Ось як це виглядає з streaming:
import json
# Асистент з кастомними функціями
assistant_with_tools = client.beta.assistants.create(
name="CRM Assistant",
model="gpt-4o",
tools=[{
"type": "function",
"function": {
"name": "get_customer_info",
"description": "Отримати інформацію про клієнта з CRM",
"parameters": {
"type": "object",
"properties": {
"customer_id": {"type": "string"},
},
"required": ["customer_id"],
},
},
}],
)
# Обробка function calls з streaming
def handle_run_with_functions(thread_id: str, assistant_id: str):
with client.beta.threads.runs.stream(
thread_id=thread_id,
assistant_id=assistant_id,
) as stream:
for event in stream:
if event.event == "thread.run.requires_action":
# Виконуємо функції
tool_outputs = []
for tool_call in event.data.required_action.submit_tool_outputs.tool_calls:
if tool_call.function.name == "get_customer_info":
args = json.loads(tool_call.function.arguments)
result = crm.get_customer(args["customer_id"])
tool_outputs.append({
"tool_call_id": tool_call.id,
"output": json.dumps(result),
})
# Відправляємо результати
stream.submit_tool_outputs_and_stream(tool_outputs)
elif event.event == "thread.message.delta":
for delta in event.data.delta.content:
if delta.type == "text":
print(delta.text.value, end="", flush=True)
Чому це швидше за кастомний RAG?
Assistants API виграє за швидкістю запуску: базовий прототип готовий за 1–3 дні проти 2–4 тижнів на кастомному пайплайні. Assistants API працює в 3 рази швидше, ніж кастомний RAG при однаковому обсязі даних. Однак він поступається в гнучкості: немає гібридного пошуку, обмежений контроль над промптом. Для продакшенів з високими вимогами до якості пошуку ми будуємо кастомний пайплайн на LangChain.
| Критерій | Assistants API | Кастомний RAG (LangChain/LlamaIndex) |
|---|---|---|
| Час запуску | 1–3 дні | 2–4 тижні |
| Управління чанкінгом | Автоматично | Повний контроль |
| Вартість зберігання | Плата за векторне сховище | Залежить від вибору бази |
| Гібридний пошук | Ні | Так |
| Контроль над промптом | Обмежений | Повний |
Детальніше про розрахунок вартості
Вартість складається з обсягу токенів, зберігання Vector Store та часу розробки. Ми готові надати детальний breakdown на консультації.Практичний кейс: корпоративний FAQ-асистент для HR
З нашої практики: наш клієнт — великий рітейлер — отримував 50+ повторюваних питань від співробітників щодня (відпустки, документи, пільги). HR-менеджер витрачав 2 години щодня на однотипні відповіді. Ми побудували агента на Assistants API з File Search: завантажили 15 регламентів у Vector Store і прив'язали до корпоративного Slack.
Результати:
- Автономні відповіді на 73% питань (економія ~100 000 грн на місяць на зарплаті HR);
- Час впровадження — 5 днів (проти 2 тижнів на кастомний RAG);
- HR-менеджер отримав 1.5 вільних години на день.
Обмеження, з якими ми зіткнулися: висока вартість зберігання Vector Store та неможливість тонкого налаштування пошуку. Для наступного проєкту ми вже рекомендували кастомний стек — але в цьому кейсі швидкість запуску переважила.
Що входить в роботу
Ми не просто підключаємо API — ми проєктуємо агента під вашу інфраструктуру. Процес роботи включає наступні етапи:
- Аналіз сценаріїв і проєктування архітектури (Threads, інструменти, інтеграції);
- Налаштування Vector Store — завантаження та індексування вашої бази знань;
- Реалізація кастомних функцій (CRM, 1С, ERP);
- Підключення streaming та обробка function calls;
- Інтеграція з корпоративними месенджерами (Slack, Telegram, Teams);
- Документація та навчання команди;
- Підтримка після запуску (гарантуємо SLA 99.9%).
Терміни та вартість
- Базовий асистент + File Search: від 1 до 3 днів
- Кастомні функції + streaming: від 3 до 5 днів
- Production-деплой з моніторингом, логуванням та CI/CD: від 1 тижня
Вартість розраховується індивідуально — залежить від кількості сценаріїв, обсягів документів і складності інтеграцій. Ми надаємо прозору кошторис до початку робіт. Наші AI-рішення вже використовують понад 20 компаній — отримайте консультацію, щоб оцінити проєкт під ваш бюджет. Зв'яжіться з нами для обговорення вашого проєкту — ми допоможемо обрати оптимальну архітектуру.







