У ваших менеджеров уходят часы на изучение договоров, прайсов и переписки. Llama 4 от Meta обрабатывает до 10 млн токенов за раз - это сотни страниц документов. Разбираем, как за 2 часа настроить API через Together AI или Fireworks и получать выжимки без найма разработчика.
Семейство Llama 4: Scout, Maverick, Behemoth
Meta выпустила Llama 4 в начале 2026 с двумя неожиданными характеристиками: нативная мультимодальность (работа с картинками без отдельного модуля) и контекстное окно 10M токенов у Scout-варианта. Прямой API от Meta пока в waitlist - основной путь к моделям идёт через сторонних провайдеров.
Llama 4 Scout - меньшая модель, ориентированная на длинный контекст. Контекстное окно 10M токенов - рекорд среди моделей с открытыми весами на момент выпуска. Цена у Together AI: $0.08/M input, $0.30/M output. На практике 10M контекст редко нужен целиком, но даже 500K для анализа большой базы договоров - уже полезно.
Llama 4 Maverick - флагманская модель для большинства задач. Контекст 1M токенов, $0.15/M input, $0.60/M output у Together. Качество заметно выше Scout на сложных задачах, например, при анализе условий контрактов или генерации коммерческих предложений.
Llama 4 Behemoth - самая мощная версия, на момент написания доступна в ограниченном режиме. Позиционируется как прямой конкурент GPT-4.5 и Claude Opus.
Модели используют MoE (Mixture of Experts) архитектуру - это когда активируется не вся сеть, а только нужные части, что позволяет держать высокую скорость при большом общем объёме.
Нативная мультимодальность: текст + картинки без отдельного модуля
Предыдущие версии Llama требовали отдельный адаптер для работы с изображениями. Llama 4 принимает картинки напрямую в формате image_url - как в стандартном OpenAI-формате сообщений.
Это значит, что можно в одном запросе смешивать текст и несколько изображений без дополнительных зависимостей. Разберём на примере строительной фирмы: у вас есть фотография объекта и смета в PDF. Вы загружаете фото по ссылке и пишете: "Сравни смету с фактическими работами на фото". Модель ответит.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_TOGETHER_KEY",
base_url="https://api.together.xyz/v1"
)
response = client.chat.completions.create(
model="meta-llama/Llama-4-Maverick",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {"url": "https://example.com/chart.png"}
},
{
"type": "text",
"text": "Опиши основные тренды на этом графике"
}
]
}
],
max_tokens=500
)
Ограничение: изображения передаются через URL, не base64 напрямую - файл должен быть доступен по HTTP. Для приватных файлов нужно предварительно загрузить на облачное хранилище (например, S3 или Яндекс.Облако).
Доступ через Together AI: регистрация и первый запрос
Together AI - основной провайдер для Llama 4 с точки зрения баланса скорости и цены. Всё делается без программиста - достаточно уметь скопировать код из примера.
- Регистрация на api.together.xyz - можно через GitHub или Google
- Панель -> API Keys -> Create key
- Стартовые $5 кредитов при первом пополнении
Полный пример запроса к Scout для работы с большим документом (например, вашим типовым договором подряда или прайсом):
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["TOGETHER_API_KEY"],
base_url="https://api.together.xyz/v1"
)
# Загружаем большой документ (например, договор или прайс)
with open("large_document.txt", "r") as f:
document = f.read()
response = client.chat.completions.create(
model="meta-llama/Llama-4-Scout",
messages=[
{
"role": "system",
"content": "Ты юридический аналитик. Отвечай конкретно с примерами из текста."
},
{
"role": "user",
"content": f"Вот документ:\n\n{document}\n\
Какие основные риски для подрядчика в этом договоре?"
}
],
max_tokens=2000,
temperature=0.3
)
print(response.choices[0].message.content)
print(f"Использовано: {response.usage.prompt_tokens:,} input / {response.usage.completion_tokens:,} output токенов")
Этот код ваш менеджер может запустить на своём компьютере - нужно только установить Python и библиотеку openai.
Доступ через Fireworks и OpenRouter: сравнение задержка и цены
Fireworks позиционирует себя на боевую среду с гарантиями скорости. Задержка до первого токена (TTFT) у Fireworks обычно ниже чем у Together, что критично для интерактивных приложений - например, чат-бота для клиентов.
Слаг у Fireworks: accounts/fireworks/models/llama4-maverick-instruct-basic
OpenRouter даёт единую точку API со слагами meta-llama/llama-4-maverick и meta-llama/llama-4-scout. Преимущество - автоматический запасной вариант: если один провайдер недоступен, OpenRouter переключается на следующий без изменения кода.
# OpenRouter
client = OpenAI(
api_key=os.environ["OPENROUTER_API_KEY"],
base_url="https://openrouter.ai/api/v1"
)
response = client.chat.completions.create(
model="meta-llama/llama-4-maverick",
messages=[{"role": "user", "content": "Напиши коммерческое предложение для клиента"}],
extra_headers={
"HTTP-Referer": "https://your-app.com",
"X-Title": "My App"
}
)
По цене: OpenRouter обычно добавляет небольшую наценку (~5%) поверх провайдера, но экономит на инфраструктуре для fallback.
Стриминг ответов и подсчёт токенов
Для интерактивных интерфейсов стриминг критичен - без него пользователь ждёт всего ответа перед отображением. Например, если вы делаете чат-бота для консультаций по продукту.
import time
start = time.time()
tokens_generated = 0
stream = client.chat.completions.create(
model="meta-llama/Llama-4-Maverick",
messages=[{"role": "user", "content": "Объясни условия поставки в договоре"}],
max_tokens=1000,
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
tokens_generated += 1
elapsed = time.time() - start
print(f"\n\
Примерная скорость: {tokens_generated / elapsed:.0f} токенов/сек")
При стриминге поле usage доступно только в финальном чанке (если провайдер его отдаёт). Для точного подсчёта токенов используйте stream_options={"include_usage": True} - Together AI и OpenRouter поддерживают это.
Llama 4 vs Llama 3.3 70B: когда Scout оправдывает дороговизну контекста
Llama 3.3 70B через Groq стоит $0.59/$0.79 per 1M - дороже чем Llama 4 Scout ($0.08/$0.30). Но Llama 4 Scout при этом новее и качественнее на большинстве задач.
Llama 3.3 70B актуален в одном сценарии: когда нужна максимальная скорость. Groq на Llama 3.3 70B даёт ~394 токенов/сек - для голосового ассистента или live-демонстраций это важно. У Together с Llama 4 Maverick скорость 50-80 токенов/сек.
Llama 4 Scout с 10M контекстом оправдан для:
- Анализа больших кодовых баз целиком (если у вас IT-продукт)
- Суммаризации длинных документов (книги, юридические досье)
- RAG с очень большой базой знаний без разбиения
Для обычного чатбота или помощника на 10-20 ходов - разница в контексте не нужна, лучше взять Maverick за качество.
Ограничения: Llama API от Meta пока в waitlist
Meta запустила собственный Llama API (llama.developer.meta.com), но на момент написания он в waitlist. Это прямой API от создателей модели, что могло бы означать самые актуальные версии и официальный SLA.
Пока waitlist не открылся широко, Together AI и Fireworks - основные пути. Они обычно добавляют новые версии Llama в течение нескольких дней после выпуска.
Ещё одно ограничение: изображения только через URL. Если нужно отправить приватный файл, потребуется промежуточный шаг. Загрузите файл в S3/GCS и передайте временную ссылку. Либо закодируйте в base64 и передайте через data URL (поддержка зависит от провайдера).
Практические паттерны: многотурный диалог с памятью
Для чатботов и помощников нужно сохранять историю диалога между запросами. Стандартный паттерн:
import os
from openai import OpenAI
from dataclasses import dataclass, field
from typing import List
client = OpenAI(
api_key=os.environ["TOGETHER_API_KEY"],
base_url="https://api.together.xyz/v1"
)
@dataclass
class Conversation:
system_prompt: str
history: List[dict] = field(default_factory=list)
model: str = "meta-llama/Llama-4-Maverick"
max_history_turns: int = 20 # ограничиваем историю
def chat(self, user_message: str) -> str:
self.history.append({"role": "user", "content": user_message})
# Берём последние N сообщений чтобы не выйти за контекст
recent_history = self.history[-self.max_history_turns * 2:]
messages = [
{"role": "system", "content": self.system_prompt}
] + recent_history
response = client.chat.completions.create(
model=self.model,
messages=messages,
max_tokens=1000,
temperature=0.7
)
assistant_message = response.choices[0].message.content
self.history.append({"role": "assistant", "content": assistant_message})
# Логируем расход токенов
usage = response.usage
print(f"[{usage.prompt_tokens} in / {usage.completion_tokens} out]")
return assistant_message
# Использование
bot = Conversation(
system_prompt="Ты помощник по работе с клиентами. Помогаешь отвечать на вопросы по продукту."
)
print(bot.chat("Какие сроки поставки?"))
print(bot.chat("А какие условия оплаты?"))
Для Scout с 10M контекстом max_history_turns можно поставить значительно выше - модель выдержит очень длинный диалог. Но следите за стоимостью: при большой истории input-токены растут быстро.
Мультимодальный чатбот: несколько изображений в одном запросе
Llama 4 поддерживает несколько изображений в одном сообщении. Разберём на примере проектного бюро: у вас есть два варианта планировки помещения, и вы хотите, чтобы модель их сравнила.
import base64
import httpx
def url_to_base64(url: str) -> str:
"""Скачивает изображение и конвертирует в base64"""
response = httpx.get(url)
return base64.b64encode(response.content).decode()
# Запрос с несколькими изображениями
response = client.chat.completions.create(
model="meta-llama/Llama-4-Maverick",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Сравни эти два дизайна интерфейса:"},
{
"type": "image_url",
"image_url": {"url": "https://example.com/design-v1.png"}
},
{"type": "text", "text": "и"},
{
"type": "image_url",
"image_url": {"url": "https://example.com/design-v2.png"}
},
{"type": "text", "text": "Какой лучше по UX и почему?"}
]
}
],
max_tokens=800
)
print(response.choices[0].message.content)
Максимальное число изображений в одном запросе зависит от провайдера - Together AI поддерживает до 5. Общий объём изображений не должен превышать лимит контекстного окна модели.
Управление температурой и top_p для разных задач
Llama 4 чувствительна к параметрам семплирования - правильная настройка улучшает результаты:
# Для кода и точных ответов: низкая температура
code_response = client.chat.completions.create(
model="meta-llama/Llama-4-Maverick",
messages=[{"role": "user", "content": "Напиши письмо клиенту о задержке поставки"}],
temperature=0.1, # детерминированный вывод
top_p=0.95,
max_tokens=500
)
# Для творческих задач: выше температура
creative_response = client.chat.completions.create(
model="meta-llama/Llama-4-Maverick",
messages=[{"role": "user", "content": "Придумай 5 названий для новой услуги"}],
temperature=0.9, # больше разнообразия
top_p=0.9,
max_tokens=300
)
# Для аналитики и summarization: средняя температура
analysis_response = client.chat.completions.create(
model="meta-llama/Llama-4-Scout", # дешевле для длинных документов
messages=[{"role": "user", "content": "Проанализируй ключевые риски в этом договоре: ..."}],
temperature=0.3,
max_tokens=1000
)
Для Scout при анализе длинных документов температура 0.2-0.4 даёт более точное и предсказуемое извлечение информации.
Системный промпт как инструмент специализации
Llama 4 хорошо следует системным промптам, что позволяет создавать специализированных ассистентов. Разберём на примере интернет-магазина:
# Customer support бот
CS_SYSTEM = """Ты агент поддержки интернет-магазина.
Правила:
1. Отвечаешь только на вопросы по товарам и заказам
2. При сложных технических вопросах - передаёшь менеджеру
3. Не обсуждаешь конкурентов
4. Всегда вежлив, но без лишней вежливости
5. Если не знаешь ответа - честно говоришь об этом"""
# Аналитик прайс-листов
PRICE_SYSTEM = """Ты аналитик по закупкам.
При анализе прайс-листов:
- Ищешь самые выгодные позиции
- Сравниваешь цены с прошлым периодом
- Отмечаешь аномалии (резкие скачки цен)
- Не рекомендуешь поставщиков с плохой репутацией"""
Maverick с 1M контекстом позволяет передавать в системный промпт большие базы знаний - документацию продукта, примеры решённых тикетов, описание архитектуры. Это эффективнее чем строить отдельный RAG для случаев когда база знаний помещается в контекст.
Контроль качества: оценка ответов Llama 4 программно
Для боевых систем нужен автоматический контроль качества ответов. Этот код ваш менеджер может адаптировать для проверки ответов модели:
import re
from typing import Optional
def validate_llama_response(
response: str,
min_length: int = 50,
max_length: int = 10000,
required_keywords: list = None,
forbidden_phrases: list = None
) -> tuple[bool, Optional[str]]:
"""Валидация ответа модели. Возвращает (ok, reason_if_failed)"""
if len(response) < min_length:
return False, f"Ответ слишком короткий: {len(response)} символов"
if len(response) > max_length:
return False, f"Ответ слишком длинный: {len(response)} символов"
if required_keywords:
missing = [kw for kw in required_keywords if kw.lower() not in response.lower()]
if missing:
return False, f"Отсутствуют ключевые слова: {missing}"
if forbidden_phrases:
found = [ph for ph in forbidden_phrases if ph.lower() in response.lower()]
if found:
return False, f"Найдены запрещённые фразы: {found}"
# Проверка на "I don't know" паттерны
uncertainty_patterns = [
r"i don't know",
r"i cannot",
r"i'm not sure",
r"не могу помочь"
]
for pattern in uncertainty_patterns:
if re.search(pattern, response.lower()):
return False, "Модель отказалась отвечать"
return True, None
def reliable_completion(
client, model: str, messages: list,
max_retries: int = 3,
**validation_kwargs
) -> str:
"""Запрос с повтором при неудачной валидации"""
for attempt in range(max_retries):
response = client.chat.completions.create(
model=model,
messages=messages,
max_tokens=1000,
temperature=0.7 + attempt * 0.1 # слегка увеличиваем температуру
)
answer = response.choices[0].message.content
ok, reason = validate_llama_response(answer, **validation_kwargs)
if ok:
return answer
print(f"Попытка {attempt + 1} не прошла валидацию: {reason}")
if attempt < max_retries - 1:
messages = messages + [{
"role": "user",
"content": f"Предыдущий ответ был неполным. Пожалуйста, дай более развёрнутый ответ."
}]
return answer # возвращаем последний ответ даже если не прошёл
# Использование
answer = reliable_completion(
client,
model="meta-llama/Llama-4-Maverick",
messages=[{"role": "user", "content": "Объясни условия поставки"}],
min_length=200,
required_keywords=["срок", "доставка"]
)
Частые вопросы
Почему Llama 4 Scout дешевле Maverick, но с большим контекстом?
Scout - меньшая по числу активных параметров модель. MoE-архитектура позволяет поддерживать огромный контекст без пропорционального роста цены инференса. Maverick крупнее и лучше по качеству на сложных задачах - отсюда цена выше. Большой контекст Scout не требует большей вычислительной мощности на токен.
Можно ли отправить PDF в Llama 4 Maverick напрямую?
Напрямую - нет. API принимает текст и изображения (через URL). PDF нужно предварительно конвертировать в текст (pdfminer, pypdf2) или в серию изображений страниц. Некоторые провайдеры работают над нативной поддержкой документов, но пока это задача клиентского кода.
Как попасть в waitlist официального Llama API от Meta?
Через llama.developer.meta.com - форма регистрации интереса. Процесс небыстрый, Meta приоритизирует корпоративные аккаунты. Для большинства задач сторонние провайдеры работают не хуже.
Что лучше: Together AI или Fireworks для Llama 4 по скорости?
Fireworks обычно показывает меньший TTFT (time to first token) - критично для интерактивных приложений. Together предлагает более широкий каталог и fine-tuning. Для боевой среды с требованиями к скорости - Fireworks, для экспериментов и разнообразия - Together.
Llama 4 vs GPT-4o: в каких задачах опенсорс-модель выигрывает?
Llama 4 Maverick конкурентен с GPT-4o на многих задачах при цене в 5-10 раз ниже. GPT-4o сохраняет преимущество на сложных многошаговых рассуждениях, следовании очень детальным инструкциям и некоторых задачах кодинга. На суммаризации, извлечении данных, вопросах-ответах по документам и генерации кода - разница минимальна.
Что делать прямо сейчас
- Зарегистрируйтесь на Together AI (api.together.xyz) - получите $5 на старте.
- Скопируйте код из раздела "Первый запрос" и замените текст документа на свой прайс или договор.
- Запустите скрипт - получите анализ за 2 минуты вместо 2 часов ручной работы.
- Если нужно быстрее - используйте Fireworks, если нужна надёжность - OpenRouter.
AI Компас (t.me/kosmoslab_ai) - канал для предпринимателей в РФ и СНГ, которые применяют AI в своём бизнесе без программиста. Разбираем инструменты и схемы - без курсов и теории.