Перейти к основному содержимому

Сценарии использования

На этой странице — задачи, с которыми к 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)​

Задача. Модель отвечает не «из головы», а по вашим документам — регламентам, договорам, базе поддержки — и ссылается на источник. На этот сценарий опираются почти все остальные.

Как устроено.

  1. Документы переводят в текст: Word и PDF — конвертером, сканы — распознаванием.
  2. Текст режут на фрагменты. Для каждого фрагмента модель эмбеддингов считает вектор — числовой «отпечаток смысла». Векторы хранятся в вашей базе, например PostgreSQL с pgvector или Qdrant.
  3. На вопрос считают его вектор и берут из базы ближайшие фрагменты. Найденное можно дополнительно отсортировать моделью переранжирования.
  4. Найденные фрагменты отдают чат-модели вместе с вопросом.

Маршруты.

НазначениеМаршрут
Эмбеддинги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. Примеры вызова — на странице Примеры подключения и использования.

Документы и договоры​

Задача. Вытащить реквизиты и суммы из счёта, сравнить договор с шаблоном, найти рискованные пункты, пересказать документ, ответить на вопрос по пакету документов.

Как устроено.

  1. Файл переводят в текст: Word и PDF с текстовым слоем — конвертером itg.docling.convert_sync, сканы и фото — распознаванием itg.ocr.v2.doc-to-text.
  2. Модель извлекает поля в 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.
  • Методику отчёта проверяет человек: модель не знает, из какого поля правильно брать показатель.

Защита персональных данных​

Задача. Не передавать внешней модели ФИО, телефоны, паспортные данные и другие сведения о людях.

Варианты.

  1. Локальные модели. itg.qwen_local_latest.chat_completions и itg.gemma-4-26b-a4b.chat_completions работают на оборудовании ITGLOBAL.COM: запросы не уходят к внешним поставщикам. Самый простой путь, если качества локальной модели хватает для задачи.
  2. Обезличивание перед отправкой. Сервис 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
DeepLain.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: младшая модель чаще путает термины.