Інтеграція LLM (ChatGPT/Claude) у мобільного чат-бота

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Інтеграція LLM (ChatGPT/Claude) у мобільного чат-бота
Середній
~3-5 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Інтеграція LLM (ChatGPT/Claude) в мобільного чат-бота

Прямий вияв до OpenAI API з мобільного додатку працює на прототипах і вбиває продакшн: ключ в APK — це питання годин до його компрометації. Правильна архітектура завжди передбачає прокси-сервер між додатком і LLM. Це не ускладнення — це обов'язкова умова.

Архітектура: що повинно бути на сервері

Бекенд виконує кілька завдань, які неможливо перекладати на клієнт:

  • Зберігання API-ключів OpenAI / Anthropic
  • Rate limiting по користувачу — без нього один активний юзер може вигоріти весь місячний ліміт
  • Історія діалогу — LLM stateless, кожен запит повинен включати попередні повідомлення
  • Модераціяomni-moderation-latest від OpenAI або власна перевірка перед відправленням у модель
  • Кешування однакових запитів (FAQ, часто повторювані питання)

Історія діалогу — найдорожча аспект. Кожен додатковий обмін репліками збільшує контекст, а значить — вартість запиту. Для чат-бота підтримки немає сенсу зберігати всю історію: достатньо останніх 10–20 повідомлень плюс system prompt.

Streaming на мобільному клієнті

Користувач не буде чекати 5–10 секунд поки модель сформує відповідь цілком. Потрібен streaming: сервер передає токени по мірі генерації через Server-Sent Events (SSE) або WebSocket, клієнт показує їх в реальному часі.

OpenAI API підтримує SSE через параметр stream: true. На сервері:

const stream = await openai.chat.completions.create({
  model: 'gpt-4o',
  messages: conversationHistory,
  stream: true,
});

for await (const chunk of stream) {
  const delta = chunk.choices[0]?.delta?.content;
  if (delta) {
    res.write(`data: ${JSON.stringify({ token: delta })}\n\n`);
  }
}
res.write('data: [DONE]\n\n');
res.end();

На Android клієнт читає SSE через OkHttp EventSource:

val request = Request.Builder()
    .url("$baseUrl/chat/stream")
    .post(body)
    .build()

val listener = object : EventSourceListener() {
    override fun onEvent(source: EventSource, id: String?, type: String?, data: String) {
        if (data == "[DONE]") return
        val token = Json.decodeFromString<TokenEvent>(data).token
        viewModel.appendToken(token)
    }
}
EventSources.createFactory(okHttpClient).newEventSource(request, listener)

На iOS — використовуйте URLSession з dataTaskPublisher або AsyncSequence для читання SSE рядок за рядком.

System prompt: головний інструмент управління поведінкою

Якість бота на 80% визначається system prompt, а не вибором між GPT-4o та Claude. Типові помилки:

Занадто загальний промпт. «Ти — корисний асистент магазину» залишає модель занадто широкий простір для дій. Модель почне міркувати на відвлечені теми та галюцинувати неіснуючі акції.

Немає обмежень на області знань. Явно пишемо: «Відповідай тільки на питання про продукти компанії X. Якщо питання не по темі — ввічливо відмовляй».

Не вказаний формат відповіді. Для чат-бота в мобільному додатку довгі абзаци незручні — просимо модель відповідати коротко, використовувати списки тільки коли необхідно.

Anthropic Claude через Messages API працює аналогічно, але у нього немає system в масиві messages — він передається окремим параметром. Claude краще тримає роль при спробах jailbreak, що актуально для публічних ботів.

Функціональні виклики (Tool Use / Function Calling)

Для бота, який повинен здійснювати дії (створити замовлення, перевірити статус, знайти товар), потрібен механізм function calling. Модель повертає не текст, а JSON з ім'ям функції та параметрами. Сервер виконує функцію та отримує результат назад моделі для формування відповіді.

tools = [{
    "type": "function",
    "function": {
        "name": "get_order_status",
        "description": "Отримати статус замовлення по його номеру",
        "parameters": {
            "type": "object",
            "properties": {
                "order_id": {"type": "string", "description": "Номер замовлення"}
            },
            "required": ["order_id"]
        }
    }
}]

Це дозволяє будувати ботів, які реально виконують завдання, а не тільки відповідають на питання.

Вибір моделі

Модель Контекст Швидкість Застосування
GPT-4o 128K Середня Складні сценарії, довгі документи
GPT-4o mini 128K Швидка FAQ, прості запити
Claude 3.5 Haiku 200K Дуже швидка Масові чати, streaming
Claude 3.5 Sonnet 200K Середня Якісні відповіді, tool use

Для мобільного чат-бота підтримки GPT-4o mini або Claude 3.5 Haiku дають найкращий баланс швидкості та вартості.

Процес розробки

Проектування архітектури: сценарії використання, інструменти (functions), зберігання історії.

Розробка бекенду: API-прокси, rate limiting, зберігання контексту.

Системний промпт: тестування на граничних випадках, залишання на темі.

Мобільний клієнт: SSE/WebSocket для streaming, UI анімації «пише...».

Навантажувальне тестування та налаштування лімітів перед запуском.

Орієнтири за часом

Базовий LLM чат-бот + мобільний клієнт — 3–5 днів. З function calling, історією, rate limiting, модерацією та аналітикою діалогів — 2–4 тижні.