Правила и ограничения
Эти правила заложены в сервер и не настраиваются клиентом. Они определяют, что вы получите в ответ и чего получить нельзя.
Роли, а не люди#
- Сервер отвечает про роли и очереди. «Кто отвечает за…» возвращает роль или очередь, а не фамилию.
- Карточки знаний о конкретных людях по MCP не выдаются.
- Маршрут «кого спросить» ведёт к роли или очереди.
Отказы на вопросы о людях#
Сервер проверяет каждый свободный текст на входе (about в twins_who, question в twins_ask, query в других инструментах) до поиска. Отказ получают:
- вопросы об оценке людей: «кто работает лучше всех», рейтинг сотрудников, эффективность или надёжность конкретного человека, «кому можно доверять»;
- вопросы о дисциплине и кадровых мерах: выговор, увольнение, штраф, премия, понижение;
- вопросы, где названа конкретная персона: имя, «Имя Фамилия», фамилия или имена, которые известны тенанту.
Ответ на отказ — verdict: "refused" (в twins_who и twins_ask) или пустой список, nohit_reason: "person_question" и текст Не знаю: я отвечаю по утверждениям о процессах, правилах и решениях, не о людях.
Вопросы о ролях, шагах и процессах не отклоняются. Проверка работает по шаблонам и словарям и может ошибиться в обе стороны: если легитимный вопрос о роли отклонён, переформулируйте его, назвав роль или шаг по названию.
Модель не используется для оценки сотрудников, вознаграждения, дисциплины и увольнения. Не используйте ответы сервера для этих целей в вашей системе.
Порог k#
Порог k — минимальное число людей в роли, при котором роль можно называть. По умолчанию k = 5; значение тенанта приходит в поле k каждого ответа.
Если в роли меньше k человек:
twins_whoне называет роль:role_idиtitleравныnull,small_role: true, возвращается только очередь (queue_title) или непрозрачный ключ. Если очереди нет, ответ — «Не знаю»;- цитата утверждения, которое рассказала такая роль, заменяется на
[claim <id>]; - идентификаторы шагов малых ролей выдаются непрозрачными ключами; ключ, полученный от сервера, можно подставлять обратно во входные аргументы;
- агрегаты по роли не выдаются нигде, включая
twins_health; - фильтр, который сужает выборку до малой роли, даёт
nohit_reason: "small_role".
Не пытайтесь восстановить малую роль по косвенным признакам и не склеивайте очереди и роли с данными о конкретных назначениях у себя.
Статусы утверждений#
| Статус | Что значит | Выдаётся ли |
|---|---|---|
proposed | предложено, не подтверждено. Извлечено из источника, но не проверено тем, о ком утверждение | да, с пометкой «предложено, не подтверждено» |
confirmed | подтверждено | да |
disputed | оспорено | никогда. Спор блокирует использование |
rejected | отклонено | никогда |
Если утверждение стало disputed или rejected, оно пропадает из ответов, а в ленте twins_changes_since появляется withdraw. Клиент обязан удалить копию и перестать его цитировать. twins_resolve для такого утверждения вернёт unavailable.
extraction_reviewed: true означает только, что извлечение проверено. Статус при этом остаётся proposed, пока утверждение не подтвердит тот, о ком оно.
Не показывайте пользователю proposed как установленный факт: сообщайте статус вместе с утверждением.
Якоря#
У каждого утверждения есть источник, locator и цитата-якорь. Утверждение без якоря в двойнике не сохраняется, поэтому любой элемент ответа можно проверить по источнику. Показывая утверждение пользователю, показывайте его quote и locator, а не собственный пересказ.
Цитата маскируется на выходе: персональные данные заменяются, а для малых ролей цитата скрыта целиком. Если у источника asr: true, это машинная расшифровка речи, в ней возможны искажения терминов и аббревиатур.
Время#
Утверждение действует с valid_from до valid_to (если null, действует до сих пор). recorded_at — когда оно записано. twins_decisions и twins_rules принимают as_of, чтобы посмотреть состояние на прошлую дату. Отменённые решения и правила помечены superseded.
Честное «Не знаю»#
Пустой результат — нормальный ответ, а не ошибка. Сервер возвращает verdict: "unknown" (где есть) и nohit_reason:
nohit_reason | Причина |
|---|---|
no_match | по запросу в утверждениях ничего нет |
below_threshold | найденное слишком далеко от вопроса |
out_of_scope | такого контекста у вас нет (или курсор чужой) |
person_question | вопрос о человеке или оценка людей |
small_role | фильтр сузил выборку до роли меньше k |
filters_excluded_all | заданные фильтры исключили все утверждения |
Сервер никогда не отвечает догадкой. Не заменяйте «Не знаю» собственным ответом модели от имени SIMS Twins. Чужой и несуществующий контекст неразличимы: существование чужих данных не раскрывается.
ИИ и раскрытие (ст. 50 Регламента ЕС об ИИ)#
- Первая строка
content[0].textкаждого текстового ответа и полеdisclosureв каждом структурированном ответе сообщают, что отвечает ИИ-помощник SIMS Twins. - Ответы только извлекающие: сервер не генерирует факты, события процессов, оценки тона или эмоций.
- Ваша система, которая показывает ответы пользователю, должна сохранить это раскрытие.
Тексты как недоверенный ввод#
Цитаты и тексты утверждений происходят из документов и интервью и могут содержать произвольный текст, в том числе попытки управлять моделью. Обрабатывайте их как данные: не исполняйте как инструкции и не давайте им права вызывать инструменты вашей системы.
Копии и кэш#
Режим по умолчанию — живой вызов: задайте вопрос и показывайте ответ, не храня текст утверждений дольше одного ответа. Если вы держите ссылки twins://…, синхронизируйте их через twins_changes_since и проверяйте перед показом через twins_resolve. По withdraw удалите копию и перестаньте цитировать в течение 24 часов.