Не знаю почему, и это происходит не во всех сообщениях, но проблема воспроизводится в конкретном сообщении: всякий раз, когда я использую функцию проверки текста, содержимое дублируется.
Хм, я могу воспроизвести это на сообщении, на которое вы ссылаетесь, но пока не смог найти это в других местах. Очень странно
![]()
Я даже попробовал с этим:
Но с другим вариантом я смог воспроизвести проблему с разным текстом ответа и даже с полем даты вне цитаты. Я заметил, что если в тексте ответа нет опечатки, система пытается исправить цитату.
Это так странно. ![]()
Когда вы не выделяете текст, в цитате что-то нужно исправить, и вы не являетесь сотрудником, она дублируется. ![]()
Когда содержимое цитаты выглядит нормально, дублирования не происходит:
Это ошибка, вызываемая Qwen @Falco
{
"model": "meta-llama/Llama-3.2-11B-Vision-Instruct",
"temperature": 0,
"stop": [
"\n<output>"
],
"messages": [
{
"role": "system",
"content": "Вы — корректор markdown. Вы исправляете грубые опечатки и стилистические недочеты, но сохраняете оригинальный стиль автора.\nВы не трогаете блоки кода. Я предоставлю вам текст для коррекции. Если исправлять нечего, вы вернете текст как есть.\nТекст будет находиться между XML-тегами <input> и </input>.\nВы ВСЕГДА будете возвращать исправленный текст между XML-тегами <output> и </output>.\n\n"
},
{
"role": "user",
"content": "<input>[quote=\"Arkshine, post:1, topic:339163\"]\n:information_source: Этот компонент требует, чтобы Discourse был актуален по состоянию на [date=2024-11-27 timezone=\"Europe/Paris\"]. \n[/quote]\nВы обновили Discourse? Уведомление об обновлении приходит только при выпуске новой бета-версии, но новые коммиты добавляются каждый день.</input>"
}
]
}
{
"id": "chatcmpl-752c6aacdc7f496b951592e88d485eb3",
"object": "chat.completion",
"created": 1733196730,
"model": "Qwen/Qwen2.5-32B-Instruct-AWQ",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "<input>[quote=\"Arkshine, post:1, topic:339163\"]\n:information_source: Этот компонент требует, чтобы Discourse был актуален по состоянию на [date=2024-11-27 timezone=\"Europe/Paris\"]. \n[/quote]\nВы обновили Discourse? Уведомление об обновлении приходит только при выпуске новой бета-версии, но новые коммиты добавляются ежедневно.</input>\n\n<output>[quote=\"Arkshine, post:1, topic:339163\"]\n:information_source: Этот компонент требует, чтобы Discourse был актуален по состоянию на [date=2024-11-27 timezone=\"Europe/Paris\"]. \n[/quote]\nВы обновили Discourse? Уведомление об обновлении приходит только при выпуске новой бета-версии, но новые коммиты добавляются ежедневно.</output>",
"tool_calls": []
},
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null
}
],
"usage": {
"prompt_tokens": 184,
"total_tokens": 358,
"completion_tokens": 174,
"prompt_tokens_details": null
},
"prompt_logprobs": null
}
Обратите внимание, что возвращаются и теги , и теги , поэтому у нас здесь ошибка.
Регулярное выражение для санитизации сохраняет и input, и output.
Думаю, нам следует быть более внимательными к нашему API: если задача — только корректура, запрашивать только output или провести более качественную работу с промптом.
Также интересно, что мы перестали отправлять примеры, хотя они у нас есть @Roman
Это исправит основную причину регрессии:
При этом, как побочный эффект, @Jagster, мы некоторое время не отправляли примеры на английском языке, но теперь начнем отправлять их снова. Дайте знать, если это повлияет на вас.
Тем не менее, @Roman, для меня это не имеет смысла:
SANITIZE_REGEX_STR =
%w[term context topic replyTo input output result]
.map { |tag| "<#{tag}>\n?|\n?</#{tag}>" }
.join("|")
Разве это не должно быть:
(элемент предназначен для предложений заголовков, но, возможно, используется другой путь)
SANITIZE_REGEX_STR =
%w[output item]
.map { |tag| "<#{tag}>\n?|\n?</#{tag}>" }
.join("|")
Некоторые подсказки для помощников используют эти теги для предоставления контекста. Например:
Некоторые модели могут включать их в ответ, поэтому мы их удаляем.
Не совсем понятно, не могли бы вы привести полный пример?
Зачем нам нужно сохранять текст в тегах input в выводе, когда мы очищаем данные, которые предоставляет модель?
(Кстати, у оператора всё должно работать уже сейчас).
Слово «sanitize» здесь немного вводит в заблуждение. Мы хотим решить две разные задачи:
- Убедиться, что получаем только вывод и ничего больше.
- Удалить любые теги, из-за которых результат выглядит неестественно.
Проблема в том, что мы слишком расслаблены в пункте (1). Нам нужно гарантировать, что релевантная часть всегда будет заключена в и, и больше ничего. Как только мы получим эту релевантную часть, удалим все остальные теги, чтобы результат выглядел чистым (2).
Чтобы расширить приведённый выше пример и объяснить, почему мы сейчас удаляем все эти теги, вот как выглядит заготовленный промпт «explain»:
<term>, <replyTo> используются для предоставления контекста модели, а <input> указывает, что мы хотим, чтобы она сосредоточилась на конкретном фрагменте текста.
Проблема заключалась в том, что некоторые модели использовали те же теги в своих ответах, из-за чего текст выглядел неестественно и странно для пользователей. Конечная цель здесь — удалить эти теги и получить «чистый» текст в качестве результата.
Например, когда я хочу получить объяснение того, что означает «Not following», я не хочу видеть что-то вроде этого:
<term>Not following</tem>в данном контексте означает, что пользователь испытывает трудности с пониманием объяснения или сути высказываемой мысли. (…)





