Учебник

Mistral: AI-помощник для документов и кода

Ваши менеджеры тратят часы на поиск ответов в договорах и прайсах, а разработка собственного AI-решения кажется сложной. Разбираем модели Mistral Large и Codestral: как через простой API заставить их обрабатывать документы и писать код, не нанимая программиста. Получите готовый шаг для внедрения за 2-8 часов.

Макс Космов··10 мин чтения

У ваших менеджеров уходит по 3-4 часа в день, чтобы найти нужный пункт в договоре, собрать ответ по типовому запросу или подогнать шаблон документа. Плюс вы хотите добавить автодополнение кода на сайте, но программиста в штате нет. Французская лаборатория Mistral AI предлагает готовые модели, которые подключаются за вечер через API - без серверов, без сложных настроек. Разберём, как предпринимателю взять Mistral Large для работы с документами и Codestral для технических задач, и всё это без найма разработчика.

Линейка Mistral 2026: модели, цены, контексты

Mistral AI - парижская лаборатория, запустившаяся в 2023 году с открытой моделью Mixtral, а к 2026 году предлагает два трека: закрытые корпоративные модели и открытые веса. Для малого и среднего бизнеса интересны в первую очередь облачные API - не нужно думать о железе.

Портфель Mistral строится по принципу специализации:

  • Mistral Large 2 - флагман для сложных задач: анализ договоров, извлечение данных, ответы по документам. Контекст 128 000 токенов (это примерно 100 страниц текста), цена: $2 за миллион входящих токенов, $6 за миллион исходящих. Это закрытая модель - веса не публикуются, но для бизнеса это плюс: не надо ничего развёртывать.
  • Codestral 2508 - специализированная модель для кода. Контекст 256 000 токенов (вдвое больше, чем у Large), цена: $0.30 за миллион входящих, $0.90 за миллион исходящих. Ключевая возможность: режим Fill-in-the-Middle (FIM) - автодополнение, которое знает начало и конец файла и заполняет середину. Полезно, если вы или ваши сотрудники пишете скрипты для автоматизации.
  • Mistral Small - лёгкая модель для простых задач (например, классификация заявок). ~$0.20/$0.60 за миллион, контекст 32 000 токенов.
  • Mistral Embed - модель для векторных представлений (embeddings). Используется для поиска по документам. $0.10 за миллион токенов, контекст 8 000 токенов.

Доступ ко всем моделям - через официальный API la Plateforme (console.mistral.ai). Регистрация займёт 5 минут.

Mixtral 8x7B и 8x22B: открытые веса для самостоятельного хостинга

Если у вас есть свой сервер с видеокартами (хотя бы две A100 или 2x RTX 4090), можно развернуть Mixtral локально. Это даёт полный контроль над данными - важно для работы с конфиденциальными документами. Но для первого шага облачный API проще и дешевле.

Mixtral 8x7B (~47 млрд параметров, активно ~13 млрд) - классика, доступна на HuggingFace. Через OpenRouter: mistralai/mixtral-8x7b-instruct, ~$0.24/$0.24 за миллион. Mixtral 8x22B (~141 млрд, активно ~39 млрд) - мощнее, через Together: $1.20/$1.20 за миллион.

Для облачного использования Codestral и Mistral Large обычно выгоднее по соотношению цена/качество. Self-hosted - для случаев, когда данные нельзя передавать вовне.

Mistral API (la Plateforme): регистрация и настройка за 10 минут

  1. Перейти на console.mistral.ai
  2. Создать аккаунт через email
  3. Workspace -> API Keys -> Create new key
  4. Бесплатный уровень: 1 запрос в секунду, 500 000 токенов в месяц для Mistral Small - хватит для тестирования.

Mistral API совместим с OpenAI SDK, поэтому код практически не отличается от работы с ChatGPT. Пример вызова модели через API:

import os
from openai import OpenAI

client = OpenAI(
 api_key=os.environ["MISTRAL_API_KEY"],
 base_url="https://api.mistral.ai/v1"
)

response = client.chat.completions.create(
 model="mistral-large-latest",
 messages=[
 {"role": "system", "content": "Ты опытный технический аналитик."},
 {"role": "user", "content": "Какие преимущества MoE-архитектуры перед dense transformer?"}
 ],
 max_tokens=800,
 temperature=0.3
)

print(response.choices[0].message.content)

Этот код можно запустить на любом компьютере с Python - ваш менеджер или вы сами справитесь за час.

Есть нативный пакет pip install mistralai - он даёт дополнительные возможности вроде потоковой передачи (streaming) с async и FIM-запросов. Для стандартных chat-запросов достаточно openai SDK.

Codestral Fill-in-the-Middle (FIM): как это работает и зачем бизнесу

FIM - режим для автодополнения кода, который отличается от обычного чата. Вместо «напиши функцию» модели передаётся контекст слева от курсора и контекст справа, а модель заполняет пропуск. Это работает значительно лучше для IDE-автодополнения, чем обычный чат: модель знает не только что написано до, но и к чему нужно прийти.

Зачем это бизнесу? Если у вас есть технический специалист (пусть и не программист), который пишет скрипты для обработки заказов или интеграций, Codestral ускорит его работу в 2-3 раза. Или вы можете внедрить автодополнение в свою CRM для кастомных полей.

from mistralai import Mistral

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

# prefix = всё что слева от курсора в файле
# suffix = всё что справа от курсора
prefix = """def calculate_fibonacci(n: int) -> list[int]:
 """Возвращает список чисел Фибоначчи до n-го элемента."""
 if n <= 0:
 return []
"""

suffix = """
 return result

print(calculate_fibonacci(10))
"""

response = client.fim.complete(
 model="codestral-latest",
 prompt=prefix,
 suffix=suffix,
 max_tokens=200,
 temperature=0.1
)

print(response.choices[0].message.content)
# Модель заполнит середину функции

FIM-режим доступен только через нативный mistralai пакет, не через openai SDK.

Интеграция Codestral в VS Code через Continue.dev

Continue.dev - опенсорс-расширение для VS Code и JetBrains, которое подключает LLM к среде разработки. Codestral настраивается за 5 минут.

  1. Установить Continue.dev из VS Code Marketplace
  2. Открыть ~/.continue/config.json
  3. Добавить провайдер:
{
 "models": [
 {
 "title": "Codestral",
 "provider": "mistral",
 "model": "codestral-latest",
 "apiKey": "YOUR_MISTRAL_KEY"
 }
 ],
 "tabAutocompleteModel": {
 "title": "Codestral",
 "provider": "mistral",
 "model": "codestral-latest",
 "apiKey": "YOUR_MISTRAL_KEY"
 }
}

После этого нажатие Tab в VS Code будет вызывать автодополнение через Codestral. Контекст 256 000 токенов позволяет держать в окне весь открытый файл плюс несколько соседних - качество автодополнения значительно выше, чем у короткоконтекстных моделей.

Mistral Large для работы с документами: JSON mode и function calling

Разберём на примере стройфирмы. У вас есть прайс на работы и типовой договор подряда. Менеджеры тратят время, чтобы найти в договоре пункт об ответственности за задержку или сверить стоимость работ с прайсом. Mistral Large может извлекать структурированные данные из документов и отвечать на вопросы по ним.

JSON mode позволяет получать ответ в строгом формате, который легко обработать в Excel или CRM.

# JSON mode для структурированного вывода
response = client.chat.completions.create(
 model="mistral-large-latest",
 messages=[
 {
 "role": "user",
 "content": """На основе текста ниже извлеки информацию в JSON.
 Текст: 'Иван Петров, 35 лет, работает в Яндексе как старший разработчик с 2019 года.'
 Формат: {name, age, company, position, year_started}"""
 }
 ],
 response_format={"type": "json_object"},
 max_tokens=200
)

import json
data = json.loads(response.choices[0].message.content)
print(data)

Function calling (вызов функций) работает стандартно через параметр tools - тот же формат, что у OpenAI. Mistral Large на бенчмарке BFCL показывает результаты уровня GPT-4o-mini, не GPT-4o - для критичных задач учитывайте это.

Сравнение с GPT-4o: где выгодно переходить на Mistral

GPT-4o стоит $2.50/M input, $10/M output. Mistral Large - $2/$6. Разница 40% на выходе заметна при высоких нагрузках. Если вы обрабатываете десятки тысяч запросов в день, экономия составит сотни долларов в месяц.

Mistral Large работает сопоставимо с GPT-4o на:

  • Суммаризация и извлечение данных из документов
  • Генерация текста по шаблонам
  • RAG (поиск по документам) с контекстом до 128 000 токенов
  • Многоязычные задачи (французский, итальянский, испанский - особенно силён)

GPT-4o предпочтительнее для:

  • Сложных многошаговых рассуждений
  • Задач с изображениями (у Mistral Large нет мультимодальности)
  • Задач, где важна максимальная точность следования инструкциям

Для корпоративных клиентов из ЕС Mistral добавляет аргумент GDPR-compliance: данные обрабатываются на европейских серверах, есть соглашение об обработке данных (DPA) по умолчанию.

GDPR и европейские дата-центры

Mistral базируется в Париже и держит инфраструктуру в европейских дата-центрах. Это закрывает вопрос соответствия GDPR для компаний в ЕС без дополнительных договоров - стандартные условия Mistral уже включают все требуемые гарантии.

Отдельное Enterprise-предложение позволяет развернуть модели в виртуальном частном облаке клиента - для случаев, когда данные нельзя покидать периметр организации.

Для российских компаний это менее критично, но если работаете с EU-заказчиками или обрабатываете персональные данные граждан ЕС - аргумент весомый.

Mixtral в продакшне: self-hosted через vLLM

Если вы решили развернуть Mixtral на своём сервере (например, для работы с конфиденциальными документами), вот минимальные требования:

  • Минимум 2x A100 80GB (или 4x 40GB) для float16
  • С квантизацией Q4_K_M через llama.cpp - достаточно одного A100 40GB
  • На consumer GPU: 2x RTX 4090 (48GB VRAM суммарно) для GPTQ-4bit
# Запуск через vLLM
pip install vllm

python -m vllm.entrypoints.openai.api_server \
 --model mistralai/Mixtral-8x7B-Instruct-v0.1 \
 --tensor-parallel-size 2 \
 --gpu-memory-utilization 0.9 \
 --max-model-len 32768 \
 --port 8000

После запуска - стандартный OpenAI-совместимый API на http://localhost:8000. Тот же код, что для облачного Mistral, только base_url указывает на localhost.

# Подключение к self-hosted Mixtral
from openai import OpenAI

local_client = OpenAI(
 api_key="not-needed", # vLLM не проверяет ключ по умолчанию
 base_url="http://localhost:8000/v1"
)

response = local_client.chat.completions.create(
 model="mistralai/Mixtral-8x7B-Instruct-v0.1",
 messages=[{"role": "user", "content": "Привет!"}],
 max_tokens=500
)

Mistral в составе мультиагентной системы

Mistral Large удобен для создания агентов, которые ищут информацию в базе знаний и отвечают на вопросы. Например, вы загружаете в базу все свои договоры и прайсы, а агент отвечает менеджерам: «Какой срок поставки по договору №123?»

from openai import OpenAI
import json

client = OpenAI(
 api_key=os.environ["MISTRAL_API_KEY"],
 base_url="https://api.mistral.ai/v1"
)

def rag_agent(query: str, knowledge_base: list[str]) -> str:
 """Агент с доступом к базе знаний через function calling"""
 tools = [
 {
 "type": "function",
 "function": {
 "name": "search_knowledge_base",
 "description": "Поиск релевантной информации в базе знаний",
 "parameters": {
 "type": "object",
 "properties": {
 "query": {"type": "string"},
 "top_k": {"type": "integer", "default": 3}
 },
 "required": ["query"]
 }
 }
 }
 ]
 
 messages = [
 {"role": "system", "content": "Ты аналитик. Используй базу знаний для ответа на вопросы."},
 {"role": "user", "content": query}
 ]
 
 # Первый вызов - модель решает, нужен ли поиск
 response = client.chat.completions.create(
 model="mistral-large-latest",
 messages=messages,
 tools=tools,
 tool_choice="auto"
 )
 
 msg = response.choices[0].message
 
 if msg.tool_calls:
 # Модель хочет поискать - выполняем
 tool_call = msg.tool_calls[0]
 search_args = json.loads(tool_call.function.arguments)
 
 # Имитация поиска (в реальности - векторный поиск)
 search_results = knowledge_base[:search_args.get("top_k", 3)]
 search_text = "\n".join(search_results)
 
 # Отправляем результат поиска обратно
 messages.append({"role": "assistant", "content": None, "tool_calls": msg.tool_calls})
 messages.append({
 "role": "tool",
 "tool_call_id": tool_call.id,
 "content": search_text
 })
 
 # Финальный ответ с учётом найденного
 final_response = client.chat.completions.create(
 model="mistral-large-latest",
 messages=messages
 )
 return final_response.choices[0].message.content
 
 return msg.content

kb = [
 "Продукт X имеет три тарифных плана: Base ($9/мес), Pro ($29/мес), Enterprise (по запросу)",
 "Поддержка работает с 9 до 18 МСК в будние дни",
 "API включён начиная с Pro тарифа"
]

result = rag_agent("Есть ли API в базовом тарифе?", kb)
print(result)

Этот код можно адаптировать под свою базу знаний - загрузить в неё документы компании и получать ответы на вопросы сотрудников.

Стриминг с Mistral SDK

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

import asyncio
from mistralai import Mistral

async def stream_mistral(prompt: str):
 client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
 
 async with client.chat.stream(
 model="mistral-large-latest",
 messages=[{"role": "user", "content": prompt}]
 ) as stream:
 async for chunk in stream:
 if chunk.data.choices[0].delta.content:
 print(chunk.data.choices[0].delta.content, end="", flush=True)
 
 # Финальное usage
 final = await stream.get_final_completion()
 print(f"\n\
Токены: {final.usage.prompt_tokens} in / {final.usage.completion_tokens} out")

asyncio.run(stream_mistral("Объясни разницу между TCP и UDP протоколами"))

Async streaming критичен для веб-приложений, где несколько пользователей одновременно ждут ответа - синхронный код блокирует выполнение и замедляет все запросы.

Mistral Embed: векторизация текстов для поиска по документам

Mistral Embed - модель для создания векторных представлений текста. Используется в RAG-пайплайнах как альтернатива OpenAI text-embedding-3.

Разберём на примере проектного бюро. У вас есть архив проектной документации (сотни PDF). Менеджеры тратят часы на поиск нужного чертежа или спецификации. Mistral Embed превращает каждый документ в вектор - числовой код, по которому можно искать похожие тексты. Затем Mistral Large отвечает на вопросы по найденным документам.

from openai import OpenAI
from typing import List
import numpy as np

client = OpenAI(
 api_key=os.environ["MISTRAL_API_KEY"],
 base_url="https://api.mistral.ai/v1"
)

def get_embeddings(texts: List[str]) -> List[List[float]]:
 """Получить embeddings для списка текстов через Mistral Embed"""
 response = client.embeddings.create(
 model="mistral-embed",
 input=texts
 )
 return [item.embedding for item in response.data]

def cosine_similarity(a: List[float], b: List[float]) -> float:
 a_np, b_np = np.array(a), np.array(b)
 return float(np.dot(a_np, b_np) / (np.linalg.norm(a_np) * np.linalg.norm(b_np)))

# Простой in-memory RAG
documents = [
 "Mistral Large поддерживает контекст 128K токенов",
 "Codestral специализируется на генерации кода с FIM-режимом",
 "Mixtral 8x7B - опенсорс MoE модель от Mistral"
]

# Индексируем документы
doc_embeddings = get_embeddings(documents)

def search(query: str, top_k: int = 2) -> List[str]:
 """Поиск релевантных документов по семантическому сходству"""
 query_emb = get_embeddings([query])[0]
 
 scores = [
 (doc, cosine_similarity(query_emb, doc_emb))
 for doc, doc_emb in zip(documents, doc_embeddings)
 ]
 scores.sort(key=lambda x: x[1], reverse=True)
 
 return [doc for doc, score in scores[:top_k]]

# Поиск + генерация ответа
query = "Какие опенсорс модели предлагает Mistral?"
relevant_docs = search(query)
context = "\n".join(relevant_docs)

response = client.chat.completions.create(
 model="mistral-large-latest",
 messages=[
 {"role": "system", "content": f"Отвечай только на основе контекста:\n{context}"},
 {"role": "user", "content": query}
 ],
 max_tokens=200
)
print(response.choices[0].message.content)

Mistral Embed стоит $0.10/M токенов - дешевле OpenAI text-embedding-3-small ($0.02/M) только на очень больших объёмах данных, где размерность вектора важнее цены. Для большинства RAG-задач оба варианта работают сопоставимо.

Частые вопросы

Чем Codestral лучше обычного Mistral для задач кода?

Codestral обучен специально на коде - больший корпус, лучше понимает синтаксис 80+ языков. Главное преимущество - FIM-режим для автодополнения в IDE: обычные чат-модели не поддерживают нативно формат prompt/suffix. Контекст 256K у Codestral вдвое больше, чем у Mistral Large (128K), что позволяет держать большие файлы целиком.

Как работает Fill-in-the-Middle и зачем он нужен?

FIM - это формат промпта специального вида: передаётся начало кода и конец, а модель генерирует середину. В отличие от обычного completion (где модель видит только начало), FIM позволяет точно попасть в контекст - важно для автодополнения, где после курсора уже есть код. Это стандартный метод, который используют GitHub Copilot и аналоги.

Mixtral - это одна модель или несколько? Как выбрать нужную?

Mixtral - семейство открытых весов: 8x7B (меньше и быстрее) и 8x22B (мощнее и дороже). Обе с архитектурой MoE. Mixtral 8x7B - хорошая базовая модель для многих задач при низкой цене ($0.24/M). Mixtral 8x22B ближе по качеству к Mistral Large, но с открытыми весами для самостоятельного развёртывания.

Mistral Large vs Claude Sonnet: что взять для агентного пайплайна?

Claude Sonnet ($3/$15 per 1M) дороже Mistral Large ($2/$6). Но показывает лучшие результаты на сложных агентных задачах - особенно многошаговое планирование и следование сложным инструкциям. Для боевая среда-агента с критическими требованиями к надёжности - Claude. Для агента с умеренными требованиями и бюджетными ограничениями - Mistral Large вполне достаточен.

Как использовать Mistral через OpenRouter вместо нативного API?

Слаги на OpenRouter: mistralai/mistral-large-2407, mistralai/codestral-latest. Цены сопоставимы с нативным API или чуть выше. Основной смысл - если уже используете OpenRouter для других моделей и хотите единый счёт и API key. FIM через OpenRouter не поддерживается - для этого нужен нативный Mistral API.

Что дальше

Ваш следующий шаг. Зарегистрируйтесь на console.mistral.ai, создайте API-ключ и скопируйте пример кода для извлечения данных из документов (JSON mode). Попросите вашего менеджера или себя за вечер запустить этот скрипт на своём компьютере - протестируйте на одном договоре. Если всё работает, подключите Codestral через Continue.dev в VS Code для ускорения написания скриптов. Бесплатного лимита в 500 000 токенов хватит на первые эксперименты.

AI Компас (t.me/kosmoslab_ai) - канал для предпринимателей в РФ и СНГ, которые применяют AI в своём бизнесе без программиста. Разбираем инструменты и схемы - без курсов и теории.