Розробка AI-асистента на базі Mistral у мобільному додатку
Mistral—європейський провайдер з серверами у Франції, що покриває вимоги GDPR без додаткових угод щодо обробки даних. Для європейських B2B-додатків—це часто вирішальний аргумент. Технічно API Mistral максимально сумісна з OpenAI—клієнт, написаний для ChatGPT, перемикається на Mistral зміною базової URL та моделі.
Mistral API: сумісність з OpenAI та відмінності
https://api.mistral.ai/v1/chat/completions—кінцева точка приймає ті ж параметри, що OpenAI Chat Completions. Заголовок авторизації: Authorization: Bearer {api_key}—ідентично. Це означає, що більшість OpenAI бібліотек клієнта працює з Mistral без змін—просто переопределіть базову URL.
На Swift:
// Повторно використовуємо OpenAI-сумісний клієнт
let mistralClient = OpenAICompatibleClient(
baseURL: URL(string: "https://api.mistral.ai/v1")!,
apiKey: serverProvidedToken // завжди через серверний проксі
)
На Android—аналогічно через Retrofit або будь-який HTTP-клієнт з налаштовуваною базовою 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, приймає зображення у блоці вмісту:
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 тижні.







