У ваших менеджеров уходит по 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 минут
- Перейти на console.mistral.ai
- Создать аккаунт через email
- Workspace -> API Keys -> Create new key
- Бесплатный уровень: 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 минут.
- Установить Continue.dev из VS Code Marketplace
- Открыть
~/.continue/config.json - Добавить провайдер:
{
"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 в своём бизнесе без программиста. Разбираем инструменты и схемы - без курсов и теории.