Сценарии использования
На этой странице — задачи, с которыми к AIaaS приходят чаще всего. Для каждой описано, что обычно автоматизируют, какие маршруты подходят, приведён короткий пример и перечислено, что учесть.
Базовые вызовы каждого типа моделей — на странице Примеры подключения и использования, цены и окно контекста моделей — на странице Модели и поставщики, оценка расходов — в калькуляторе стоимости.
Примеры проверены запросами к шлюзу AIaaS. Адрес и ключ они берут из переменных окружения:
export API_KEY="ваш_API_ключ"
export BASE_URL="https://<адрес, выданный при подключении>/v1"
Значения заголовков X-AIN-USERNAME и X-AIN-SOURCEID пишите латиницей: библиотеки httpx и openai не пропускают кириллицу в заголовках.
Коротко
| Задача | Что использовать |
|---|---|
| Поиск по базе знаний | модели эмбеддингов и переранжирования, конвертер документов, любая чат-модель |
| Поддержка клиентов | чат-модель с вызовом инструментов, поиск по базе знаний |
| Документы и договоры | конвертер документов, распознавание сканов, ответ в JSON, модели с большим окном |
| Звонки и встречи | расшифровка речи, разметка по говорящим, чат-модель для итогов |
| Продажи и CRM | чат-модель с инструментами к CRM и прайсу |
| Разработка с ИИ-агентами | облачные модели с окном до 1 млн токенов, локальная модель |
| Аналитика и отчёты | чат-модель, ответ в JSON |
| Защита персональных данных | локальные модели, сервис обезличивания |
| Картинки и видео | модели изображений и видео |
| Перевод | модели перевода, DeepL |
Поиск по базе знаний (RAG)
Задача. Модель отвечает не «из головы», а по вашим документам — регламентам, договорам, базе поддержки — и ссылается на источник. На этот сценарий опираются почти все остальные.
Как устроено.
- Документы переводят в текст: Word и PDF — конвертером, сканы — распознаванием.
- Текст режут на фрагменты. Для каждого фрагмента модель эмбеддингов считает вектор — числовой «отпечаток смысла». Векторы хранятся в вашей базе, например PostgreSQL с pgvector или Qdrant.
- На вопрос считают его вектор и берут из базы ближайшие фрагменты. Найденное можно дополнительно отсортировать моделью переранжирования.
- Найденные фрагменты отдают чат-модели вместе с вопросом.
Маршруты.
| Назначение | Маршрут |
|---|---|
| Эмбеддинги | itg.qwen3-embedding-4b.embeddings (работает на оборудовании ITGLOBAL.COM), opr.gemini-embedding-2.embeddings, sbr.giga-embeddings-3b.embeddings, opr.voyage-4.embeddings |
| Переранжирование | opr.qwen3-reranker-8b.rerank, opr.rerank-2.5-lite.rerank, itg.qwen3-reranker-4b.rerank |
| Документы в текст | itg.docling.convert_sync — Word и PDF, itg.ocr.v2.doc-to-text — сканы и фото |
| Ответ | любая чат-модель; данные не уходят к внешним поставщикам — itg.qwen_local_latest.chat_completions, itg.gemma-4-26b-a4b.chat_completions |
Пример. Найти фрагмент по смыслу и ответить по нему. В реальной системе векторы документов считаются один раз и хранятся в базе, а ищет сама база.
import math
import os
import httpx
headers = {
"Authorization": f"Bearer {os.environ['API_KEY']}",
"X-AIN-USERNAME": "your_login",
"X-AIN-SOURCEID": "your_system",
}
client = httpx.Client(base_url=os.environ["BASE_URL"], headers=headers, timeout=120.0)
docs = [
"Заявку на возврат товара можно подать в течение 14 дней с момента покупки.",
"Офис работает с 9:00 до 18:00 по московскому времени, без выходных.",
"Доставка по Москве бесплатная при заказе от 3000 рублей.",
]
question = "Сколько дней есть на возврат товара?"
def embed(texts):
r = client.post("/embeddings", json={"model": "itg.qwen3-embedding-4b.embeddings", "input": texts})
r.raise_for_status()
return [item["embedding"] for item in r.json()["data"]]
def cosine(a, b):
dot = sum(x * y for x, y in zip(a, b))
return dot / (math.sqrt(sum(x * x for x in a)) * math.sqrt(sum(y * y for y in b)))
# 1. Векторы документов считаются один раз и хранятся в вашей базе
doc_vectors = embed(docs)
# 2. На вопрос — ближайший по смыслу фрагмент
q_vector = embed([question])[0]
best = max(range(len(docs)), key=lambda i: cosine(q_vector, doc_vectors[i]))
# 3. Ответ модели — только по найденному фрагменту
r = client.post("/chat/completions", json={
"model": "itg.qwen_local_latest.chat_completions",
"messages": [
{"role": "system", "content": "Отвечай только по фрагменту из базы знаний. "
"Если ответа в нём нет, так и скажи."},
{"role": "user", "content": f"Фрагмент: {docs[best]}\n\nВопрос: {question}"},
],
"max_tokens": 2000,
})
r.raise_for_status()
print("Найден фрагмент:", docs[best])
print("Ответ:", r.json()["choices"][0]["message"]["content"].strip())
Результат — формулировка ответа модели может отличаться:
Найден фрагмент: Заявку на возврат товара можно подать в течение 14 дней с момента покупки.
Ответ: На возврат товара отводится **14 дней** с момента покупки.
Что учесть.
- База векторов, нарезка документов и права доступа к ним — на вашей стороне. AIaaS даёт модели.
- Векторы разных моделей эмбеддингов несовместимы: при смене модели базу пересчитывают целиком.
- Качество поиска больше зависит от сборки — как режутся документы, как совмещаются поиск по словам и по смыслу, — чем от выбора модели эмбеддингов. Проверяйте на своих вопросах.
- Маршрут
itg.qwen3-reranker-4b.rerankждёт запрос и документы в своём формате — обёртка приведена в разделе Реранкинг. Без неё оценки получаются почти одинаковыми.
Поддержка клиентов
Задача. Бот первой линии или помощник оператора: отвечает на типовые вопросы по базе знаний, узнаёт статус заказа или договора в вашей системе, передаёт человеку то, что не решает сам.
Как устроено. Поиск по базе знаний (см. выше) плюс чат-модель с вызовом инструментов. Вы описываете функции своей системы, модель сама решает, когда какую вызвать, и возвращает вызов с аргументами. Выполняет его ваш код, результат отдаётся модели, и она отвечает клиенту.
Маршруты. Вызов инструментов по примеру ниже проверен на itg.qwen_local_latest.chat_completions, yndx.yandex-gpt-5.1-pro.chat_completions и opr.deepseek4_pro.chat_completions. Другие модели перед запуском проверьте на своём наборе функций.
Пример. Клиент спрашивает о заказе, модель вызывает функцию get_order_status.
import json
import os
import httpx
MODEL = "itg.qwen_local_latest.chat_completions"
headers = {
"Authorization": f"Bearer {os.environ['API_KEY']}",
"X-AIN-USERNAME": "your_login",
"X-AIN-SOURCEID": "your_system",
}
client = httpx.Client(base_url=os.environ["BASE_URL"], headers=headers, timeout=120.0)
tools = [{
"type": "function",
"function": {
"name": "get_order_status",
"description": "Статус заказа по его номеру",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string", "description": "Номер заказа"}},
"required": ["order_id"],
},
},
}]
def get_order_status(order_id):
# Здесь — запрос в вашу систему заказов
return {"order_id": order_id, "status": "передан в доставку", "delivery_date": "18 октября"}
messages = [{"role": "user", "content": "Добрый день! Где мой заказ 48213?"}]
# 1. Модель решает, что нужен инструмент, и возвращает его вызов
r = client.post("/chat/completions", json={"model": MODEL, "messages": messages, "tools": tools})
r.raise_for_status()
msg = r.json()["choices"][0]["message"]
call = msg["tool_calls"][0]
args = json.loads(call["function"]["arguments"])
print("Модель вызвала:", call["function"]["name"], args)
# 2. Ваш код выполняет вызов и возвращает результат модели
result = get_order_status(**args)
messages.append({"role": "assistant", "content": msg.get("content") or "", "tool_calls": msg["tool_calls"]})
messages.append({"role": "tool", "tool_call_id": call["id"], "content": json.dumps(result, ensure_ascii=False)})
# 3. Модель отвечает клиенту по результату
r = client.post("/chat/completions", json={"model": MODEL, "messages": messages, "tools": tools})
r.raise_for_status()
print("Ответ:", r.json()["choices"][0]["message"]["content"].strip())
Результат — формулировка ответа модели может отличаться:
Модель вызвала: get_order_status {'order_id': '48213'}
Ответ: Добрый день! Ваш заказ **48213** передан в доставку. Ожидаемая дата доставки — **18 октября**.
Что учесть.
- Модель только предлагает вызов. Проверяйте аргументы перед запросом в свои системы и не давайте боту функций, которые меняют данные без подтверждения человека.
- Если в обращениях есть персональные данные клиентов — см. раздел Защита персональных данных.
- Для голосового канала: расшифровка речи —
itg.whisperx-prod.audio_transcriptions, синтез —opr.gemini-3.1-flash-tts-preview.audio_speech. Примеры вызова — на странице Примеры подключения и использования.
Документы и договоры
Задача. Вытащить реквизиты и суммы из счёта, сравнить договор с шаблоном, найти рискованные пункты, пересказать документ, ответить на вопрос по пакету документов.
Как устроено.
- Файл переводят в текст: Word и PDF с текстовым слоем — конвертером
itg.docling.convert_sync, сканы и фото — распознаваниемitg.ocr.v2.doc-to-text. - Модель извлекает поля в JSON или отвечает на вопрос. Длинный документ целиком помещается в модели с окном до 1 млн токенов — GLM-5.3, DeepSeek V4, Kimi K3, GPT-6 Sol. Для пакета документов удобнее поиск по фрагментам, как в разделе Поиск по базе знаний.
Маршруты.
| Назначение | Маршрут |
|---|---|
| Word и PDF в текст | itg.docling.convert_sync |
| Сканы и фото в текст | itg.ocr.v2.doc-to-text |
| Реквизиты платёжных документов | itg.ocr.v2.process-document |
| Извлечение полей и ответы | любая чат-модель; данные не уходят к внешним поставщикам — itg.qwen_local_latest.chat_completions, itg.gemma-4-26b-a4b.chat_completions |
Вызов конвертера и распознавания — на странице Примеры подключения и использования.
Пример. Извлечь поля счёта в JSON.
import json
import os
import httpx
headers = {
"Authorization": f"Bearer {os.environ['API_KEY']}",
"X-AIN-USERNAME": "your_login",
"X-AIN-SOURCEID": "your_system",
}
client = httpx.Client(base_url=os.environ["BASE_URL"], headers=headers, timeout=120.0)
# Текст документа — например, результат распознавания скана
text = (
"Счёт на оплату № 1547 от 12.10.2026. Поставщик: ООО «Ромашка», ИНН 1234567890. "
"Итого к оплате: 118 000,00 руб., в том числе НДС 20% — 19 666,67 руб."
)
r = client.post("/chat/completions", json={
"model": "itg.qwen_local_latest.chat_completions",
"messages": [
{"role": "system", "content": "Извлеки из счёта поля и верни только JSON с ключами "
"number, date, supplier, inn, total, vat. Суммы — числами."},
{"role": "user", "content": text},
],
"response_format": {"type": "json_object"},
"max_tokens": 2000,
})
r.raise_for_status()
invoice = json.loads(r.json()["choices"][0]["message"]["content"])
print(json.dumps(invoice, ensure_ascii=False, indent=2))
Результат:
{
"number": "1547",
"date": "12.10.2026",
"supplier": "ООО «Ромашка»",
"inn": "1234567890",
"total": 118000.0,
"vat": 19666.67
}
Что учесть.
- Русские сканы распознавайте только через
itg.ocr.v2.doc-to-text: конвертерitg.docling.convert_syncчитает кириллицу на сканах как латиницу. itg.ocr.v2.doc-to-textопределяет формат по расширению имени файла — передавайте имя с расширением. Поддерживаются JPG, PNG, WEBP и PDF.- Типы полей модель выбирает сама: одна и та же инструкция у разных моделей даёт номер и ИНН то строкой, то числом. Число теряет ведущие нули ИНН, поэтому типы лучше указать в инструкции явно и проверять поля в коде.
response_format: {"type": "json_object"}гарантирует корректный JSON, но не набор полей. Строгую схему (json_schema) локальные модели выдерживают не всегда.
Звонки и встречи
Задача. Перевести запись в текст с отметками времени и понять, кто что сказал. Дальше — протокол встречи, итоги звонка, заполнение CRM, оценка работы оператора.
Маршруты.
| Назначение | Маршрут |
|---|---|
| Расшифровка с разметкой по говорящим | itg.identification.ident_diarize_struct |
| Расшифровка без разметки | itg.whisperx-prod.audio_transcriptions |
| Итоги и протокол | любая чат-модель |
Пример. Расшифровать звонок с разметкой по говорящим.
import os
import httpx
headers = {
"Authorization": f"Bearer {os.environ['API_KEY']}",
"X-AIN-USERNAME": "your_login",
"X-AIN-SOURCEID": "your_system",
}
with open("call.mp3", "rb") as f:
r = httpx.post(
f"{os.environ['BASE_URL']}/ident_diarize_struct",
headers=headers,
data={"model": "itg.identification.ident_diarize_struct"},
files={"file": ("call.mp3", f, "audio/mpeg")},
timeout=300.0,
)
r.raise_for_status()
for s in r.json()["speakers"]:
print(f'{s["start"]:5.1f}–{s["end"]:5.1f} с {s["name"]}: {s["text"].strip()}')
Результат:
0.2– 8.4 с Speaker 0: Добрый день, это отдел продаж. Хотели уточнить по договору на облачные серверы.
8.5– 20.0 с Speaker 1: Здравствуйте. Да, договор у нас на подписании, юристы просили поправить пункт про сроки оплаты.
20.0– 23.5 с Speaker 0: Какой срок вам удобен, 30 дней или 45?
25.5– 30.6 с Speaker 1: Лучше 45 дней, и ещё нужна скидка на второй год, хотя бы 5%.
33.6– 42.3 с Speaker 0: 5% на второй год согласуем. Пришлю новую редакцию договора сегодня до вечера.
42.4– 47.5 с Speaker 1: Отлично, тогда ждём письмо. Спасибо, до свидания.
Ответ сервиса — {"speakers": [{"name", "start", "end", "text"}, …]}. Чтобы получить итоги, передайте реплики чат-модели с просьбой составить протокол.
Что учесть.
itg.whisperx-prod.audio_transcriptionsговорящих не размечает. Для звонков и встреч нуженitg.identification.ident_diarize_struct.- Говорящие называются
Speaker 0,Speaker 1и так далее. Кто из них менеджер, а кто клиент, определяет ваш код или модель по содержанию. - Качество разметки на записях с наложением речи и шумом проверьте на своих данных.
Продажи и CRM
Задача. Помощник менеджера: подготовить КП и расчёт по прайсу, разобрать ТЗ тендера, ответить на технический вопрос, вести карточку сделки.
Как устроено. Чат-модель с инструментами к CRM и прайсу — так же, как в разделе Поддержка клиентов: меняются только описания функций. Ответы по продуктам и регламентам — через поиск по базе знаний. Для КП — шаблон документа, который заполняет ваш код.
Что учесть.
- Цены и суммы считайте программой, а не моделью. Модель пишет текст, сопровождающий расчёт.
- В карточках сделок бывают персональные данные — см. раздел Защита персональных данных.
Разработка с ИИ-агентами
Задача. Агент в редакторе или терминале сам читает код, вносит правки и запускает проверки.
Как устроено. Инструмент разработчика подключается к AIaaS как к OpenAI-совместимому адресу: адрес, ключ и маршрут модели. Обычно используют две модели: сильную для сложных шагов и быструю для простых. Настройка конкретных инструментов — Kilo Code, OpenCode, OpenClaw, Hermes — в разделе Подключение агентов и IDE.
Маршруты.
| Назначение | Маршрут |
|---|---|
| Сложные задачи | opr.claude-sonnet-5.5.chat_completions, opr.gpt-6-sol.chat_completions |
| Основная работа | opr.glm-5.3.chat_completions, opr.kimi-k3.chat_completions, opr.deepseek4_pro.chat_completions |
| Простые шаги | opr.glm-5.3-flash.chat_completions, opr.deepseek4_flash.chat_completions |
| Код не уходит к внешним поставщикам | itg.qwen_local_latest.chat_completions |
Что учесть.
- На каждом шаге агент заново отправляет весь контекст, поэтому почти весь вход повторяется. Как это сказывается на расходах — в калькуляторе стоимости, профиль «Кодинг-агент».
- Для больших репозиториев выбирайте облачные модели: окно локальной модели меньше.
- Если инструмент не позволяет задать заголовки
X-AIN-USERNAMEиX-AIN-SOURCEID, запросы проходят и без них, но в аналитике потребления не будет разбивки по пользователям и системам.
Аналитика и отчёты
Задача. Регулярные отчёты из учётных систем с выводами словами, разбор выгрузок и таблиц, классификация записей — например, обращений по темам.
Как устроено. Программа выгружает данные и считает показатели. Модель пишет выводы и комментарии, классифицирует записи и возвращает результат в JSON — как в примере из раздела Документы и договоры.
Что учесть.
- Числа считайте программой. В расчётах модели ошибаются и выдают ошибку уверенно, одним числом.
- Если считать всё же нужно внутри модели, берите модель с рассуждениями. Это дольше и дороже по токенам.
- У моделей с рассуждениями рассуждение расходует лимит
max_tokens. При маленьком лимите ответ придёт пустым:contentравенnull,finish_reason—length. - Методику отчёта проверяет человек: модель не знает, из какого поля правильно брать показатель.
Защита персональных данных
Задача. Не передавать внешней модели ФИО, телефоны, паспортные данные и другие сведения о людях.
Варианты.
- Локальные модели.
itg.qwen_local_latest.chat_completionsиitg.gemma-4-26b-a4b.chat_completionsработают на оборудовании ITGLOBAL.COM: запросы не уходят к внешним поставщикам. Самый простой путь, если качества локальной модели хватает для задачи. - Обезличивание перед отправкой. Сервис
itg.pii-detectionнаходит персональные данные и заменяет их заглушками, модель работает с заглушками, а в ответ подставляются исходные значения. Полный цикл — в разделе Обнаружение персональных данных, готовая обёртка — в разделе Интеграция PII-прокси.
Что учесть.
- Распознаватель может пропустить часть данных, чаще всего ФИО. Частичная замена опасна: фамилия скрыта, а имя и отчество ушли наружу. Проверяйте на своих текстах.
- Заглушки мешают модели, если ей нужно работать с самими значениями: считать, сравнивать, рассуждать о городах и датах. Такие задачи лучше решать локальной моделью без обезличивания.
- Обезличивание в канале API дополняет вашу DLP-систему, но не заменяет её.
Картинки и видео
Задача. Баннеры, иллюстрации к статьям, карточки товара, короткие ролики по описанию.
Маршруты.
| Назначение | Маршрут |
|---|---|
| Изображения | opr.flux-2-pro.images, opr.gpt-image-2.images, opr.seedream-4.5.images, opr.recraft-v4.images, opr.nano-banana-2.chat_completions |
| Видео | opr.flux-3-video.videos, opr.seedance-2.0-fast.videos |
Пример — на странице Примеры подключения и использования: изображения создаются по двум разным протоколам, видео — в три шага.
Что учесть.
- Изображение приходит внутри JSON в base64, ответ весит несколько мегабайт. Ставьте таймаут не меньше 300 секунд.
- Видео создаётся асинхронно, за минуты: задание, опрос статуса, скачивание. Параметры ролика задаёт платформа.
- Текст на картинке, особенно на русском, модели передают неточно. Проверяйте на своей задаче или добавляйте текст в макет отдельно.
Перевод
Задача. Перевод договоров, документации, переписки.
Маршруты.
| Назначение | Маршрут |
|---|---|
| Модели перевода | opr.hy-mt2-30b-a3b.chat_completions, opr.hy-mt2-7b.chat_completions, opr.hy-mt2-1.8b.chat_completions |
| DeepL | ain.deepl.translate — пример вызова |
| Перевод с правкой стиля | любая сильная чат-модель |
Пример. Перевести пункт договора на английский.
import os
import httpx
headers = {
"Authorization": f"Bearer {os.environ['API_KEY']}",
"X-AIN-USERNAME": "your_login",
"X-AIN-SOURCEID": "your_system",
}
client = httpx.Client(base_url=os.environ["BASE_URL"], headers=headers, timeout=60.0)
text = (
"Исполнитель обязуется устранить инцидент первого приоритета в течение четырёх часов. "
"Компенсация составляет 5% от ежемесячного платежа за каждый час сверх нормы."
)
r = client.post("/chat/completions", json={
"model": "opr.hy-mt2-30b-a3b.chat_completions",
"messages": [{
"role": "user",
"content": f"Translate the following segment into English, without additional explanation.\n\n{text}",
}],
"temperature": 0,
})
r.raise_for_status()
print(r.json()["choices"][0]["message"]["content"])
Результат:
The executor is obligated to resolve a priority-one incident within four hours. The compensation amounts to 5% of the monthly fee for each hour exceeding the limit.
Для перевода на русский замените в запросе into English на into Russian.
Что учесть.
- Модели Hy-MT2 ждут запрос в формате из примера: язык перевода указывается словами в тексте запроса.
- Окно моделей перевода — 8 тыс. токенов. Длинный документ переводите по частям, например по абзацам.
- Для договоров и терминологии берите
opr.hy-mt2-30b-a3b.chat_completions: младшая модель чаще путает термины.