Реализация AI-агента с доступом к внешним API в мобильном приложении

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

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Реализация AI-агента с доступом к внешним API в мобильном приложении
Сложный
~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

Реализация AI-агента с доступом к внешним API в мобильном приложении

AI-агент с доступом к внешним API — это не просто Function Calling. Это архитектура, в которой модель самостоятельно решает, какую последовательность запросов к внешним сервисам выполнить, чтобы дать ответ. Пользователь пишет «забронируй мне перелёт в Берлин на следующую пятницу, отель рядом с центром до 100 евро» — агент ищет рейсы, выбирает оптимальный, ищет отели по критериям, сравнивает варианты, и только потом предлагает подтвердить. Несколько API, несколько шагов, минимум вмешательства пользователя.

Orchestration Loop и его реализация на мобильном

Сердце агента — цикл: LLM → tool_calls → execute → LLM → .... На мобильном этот цикл живёт либо на клиенте, либо на сервере (рекомендую второй вариант для сложных агентов). Клиентский цикл уместен для 2–4 инструментов без длинных цепочек зависимостей.

// Android — агентный цикл
suspend fun runAgent(userMessage: String): String {
    val messages = mutableListOf(Message(role = "user", content = userMessage))
    repeat(MAX_ITERATIONS) {
        val response = llmClient.complete(messages, tools = availableTools)
        if (response.finishReason == "stop") return response.content ?: ""
        if (response.finishReason == "tool_calls") {
            messages.add(response.toAssistantMessage())
            response.toolCalls.map { call ->
                async { toolDispatcher.dispatch(call.name, call.arguments) }
            }.awaitAll().forEachIndexed { i, result ->
                messages.add(Message(role = "tool", toolCallId = response.toolCalls[i].id, content = result))
            }
        }
    }
    return "Агент не смог завершить задачу за $MAX_ITERATIONS шагов"
}

MAX_ITERATIONS — критически важная защита. Без неё агент может зациклиться и выжечь бюджет токенов. Для большинства задач 10 итераций достаточно.

Реальные проблемы при доступе к внешним API

Аутентификация и безопасность токенов. Агент вызывает внешние API от имени пользователя — значит нужны токены (OAuth, API key). Никогда не храните чужие API-ключи в мобильном приложении открытым текстом. Правильная схема: мобильный клиент → ваш бэкенд (с валидацией) → внешний API. Бэкенд хранит токены, проксирует запросы, логирует вызовы. Иначе ключ Google Maps или Booking API утечёт через декомпиляцию APK.

Rate limiting и таймауты. Внешние API ограничивают запросы. Если агент делает 5 запросов к одному сервису за 2 секунды, получает 429 Too Many Requests. Нужен retry с exponential backoff: первый retry через 1с, второй через 2с, третий через 4с. OkHttp Interceptor позволяет реализовать это прозрачно для всех вызовов.

Непредсказуемые ответы API. Внешние API возвращают данные в разных форматах, с разными кодами ошибок, иногда возвращают HTML вместо JSON при ошибках инфраструктуры. Каждый инструмент должен возвращать агенту понятный текст ошибки, а не бросать исключение. Агент умеет работать с ошибками — если ему передать {"error": "Авиакомпания недоступна, попробуй другую"}, он переключится на альтернативу.

Инструменты агента: описание решает всё

Архитектурно каждый внешний API — это один или несколько инструментов с чётким описанием. Пример для API бронирования авиабилетов:

{
  "name": "search_flights",
  "description": "Ищет доступные рейсы. Используй ТОЛЬКО когда пользователь хочет найти или забронировать перелёт. Не используй для отелей или трансфера.",
  "parameters": {
    "origin": {"type": "string", "description": "IATA-код аэропорта отправления, например MSQ, SVO"},
    "destination": {"type": "string", "description": "IATA-код аэропорта назначения"},
    "date": {"type": "string", "description": "Дата в формате YYYY-MM-DD"},
    "passengers": {"type": "integer", "default": 1}
  }
}

Слово «ТОЛЬКО» в описании важно — без явных ограничений модель может вызвать инструмент в неподходящем контексте.

Серверный агент vs клиентский

Для агентов с доступом к 5+ API, долгими цепочками вызовов или чувствительными данными рекомендуем серверную оркестрацию. Клиент отправляет задачу, получает обновления через WebSocket или long polling, рендерит прогресс. Это позволяет:

  • Продолжать работу агента при сворачивании приложения
  • Кешировать промежуточные результаты
  • Логировать каждый шаг для дебага
  • Не раскрывать ключи внешних API на клиенте

На мобильном остаётся только UI: прогресс-индикатор шагов агента, возможность отмены, итоговая карточка с результатом и подтверждением действия.

Этапы работы

Аудит внешних API и их аутентификации → проектирование инструментов и схем → реализация бэкенд-прокси (если нужен) → агентный цикл с защитой от зацикливания → обработка rate limit и таймаутов → UX прогресс агента на клиенте → тестирование сценариев с ошибками API → мониторинг и алерты.

Сроки: агент с 3–5 внешними API, серверная оркестрация — 4–7 недель. Клиентский агент для 2–3 простых API — 2–3 недели.