Разработка AI-ассистента в мобильном приложении на базе Mistral
Mistral — европейский провайдер с серверами во Франции, что покрывает GDPR-требования без дополнительных соглашений об обработке данных. Для европейских B2B-приложений это часто решающий аргумент. Технически API Mistral максимально совместим с OpenAI — клиент, написанный для ChatGPT, переключается на Mistral сменой base URL и модели.
Mistral API: совместимость с OpenAI и отличия
https://api.mistral.ai/v1/chat/completions — эндпоинт принимает те же параметры, что OpenAI Chat Completions. Заголовок авторизации: Authorization: Bearer {api_key} — идентично. Это значит, что большинство OpenAI-клиентских библиотек работают с Mistral без изменений — нужно только переопределить base URL.
На Swift:
// Переиспользуем OpenAI-совместимый клиент
let mistralClient = OpenAICompatibleClient(
baseURL: URL(string: "https://api.mistral.ai/v1")!,
apiKey: serverProvidedToken // всегда через серверный прокси
)
На Android — аналогично через Retrofit или любой HTTP-клиент с настраиваемым base URL.
Модели: выбор под задачу
| Модель | Контекст | Применение |
|---|---|---|
mistral-small-latest |
32K | Быстрые задачи, классификация, краткие ответы |
mistral-medium-latest |
32K | Общий ассистент, средняя сложность |
mistral-large-latest |
128K | Сложные инструкции, анализ документов |
codestral-latest |
32K | Задачи с кодом |
mistral-embed |
— | Эмбеддинги для семантического поиска |
Для мобильного ассистента общего назначения — mistral-small-latest даёт хорошее соотношение скорости и качества. mistral-large-latest с 128K контекстом — для работы с документами.
Function Calling и JSON Mode
Mistral поддерживает function calling через tools (синтаксис идентичен OpenAI):
let tools: [Tool] = [
Tool(
type: "function",
function: FunctionDefinition(
name: "search_product_catalog",
description: "Поиск товаров по каталогу",
parameters: JSONSchema(
type: "object",
properties: ["query": .string, "category": .string],
required: ["query"]
)
)
)
]
JSON Mode (response_format: {"type": "json_object"}) — надёжный способ получить структурированный вывод. Полезен для задач извлечения данных из текста, когда результат нужно сразу десериализовать в модель.
Mistral OCR
Mistral запустил специализированный API для работы с документами — mistral-ocr-latest. Это не просто OCR, а понимание структуры документа: таблицы, формулы, многоколоночный текст. На мобиле полезен для приложений с анализом счетов, контрактов, медицинских документов.
let ocrRequest = MistralOCRRequest(
model: "mistral-ocr-latest",
document: DocumentContent(
type: "document_url",
documentURL: uploadedFileURL
),
includeImageBase64: false
)
Документ (PDF или изображение) сначала загружается через Files API, потом передаётся URI.
Pixtral: мультимодальность
pixtral-large-latest — мультимодальная модель Mistral, принимает изображения в content block:
let message = MistralMessage(
role: "user",
content: [
.imageURL("data:image/jpeg;base64,\(imageBase64)"),
.text("Опиши содержание этого документа")
]
)
Поддерживает до 128K токенов изображений в одном запросе.
GDPR и хранение данных
Mistral La Plateforme обрабатывает запросы на серверах в ЕС. По умолчанию данные не используются для дообучения. Для корпоративных клиентов доступны DPA (Data Processing Agreement) под статью 28 GDPR — это ускоряет прохождение юридического ревью при внедрении.
Ориентиры по срокам
Текстовый ассистент — 1–1,5 недели (с учётом совместимости с OpenAI SDK — фактически меньше). С OCR-функциональностью, Pixtral и серверным прокси — 2,5–4 недели.







