Ошибка при использовании Claude 3.7 Sonnet с плагином Discourse AI

Здравствуйте,

Я пытаюсь использовать модель Claude 3.7 Sonnet с персонажем помощника форума и с пользовательскими персонажами, но получаю ошибку, приведенную ниже. У меня установлена последняя версия Discourse и последний плагин Discourse AI. Шаги для воспроизведения просты: просто задайте вопрос боту, он выполнит использование инструмента, такое как поиск, категория или чтение, и после этого возникает ошибка. LLM настроен с включенным режимом рассуждений и выделено 1024 токена для рассуждений. Можете ли вы подтвердить, является ли это ошибкой или чего-то не хватает в моей конфигурации? Большое спасибо!

{"type":"error","error":{"type":"invalid_request_error","message":"messages.1.content.0.type: Ожидается тип thinkingилиredacted_thinking, но найден tool_use. Когда включен параметр thinking, последнее сообщение от assistantдолжно начинаться с блока рассуждений (предшествующего последнему набору блоковtool_useиtool_result). Мы рекомендуем включать блоки рассуждений из предыдущих шагов диалога. Чтобы избежать этого требования, отключите параметр thinking`. Пожалуйста, обратитесь к нашей документации по адресу Работа с расширенными рассуждениями — Anthropic"}}

1 лайк

Обновляли ли вы Discourse за последние 24 часа? Если нет, вам необходимо обновить его, чтобы получить поддержку этой новой модели.

Да, я обновил вчера во второй половине дня. Я видел обновление о полной поддержке Claude Sonnet 3.7.

Я только что протестировал AI Bot с этой конфигурацией, и всё работает отлично

Спасибо за вашу помощь. Я использовал те же настройки, и ошибка сохраняется.

Ниже приведены мои настройки:

У меня установлена последняя версия всего:

Ниже приведены вводные и выходные данные отладки (незначительно отредактированные для конфиденциальности):

ВВОД (страница 1):

Токенов запроса: 1482
Токенов ответа: 202
model: claude-3-7-sonnet-20250219
max_tokens: 38192
thinking:
type: enabled
budget_tokens: 8192
messages:
0:
role: user
content: XXXXX: Проверьте, соответствует ли это объявление всем правилам XXXXX. 

XXXXX

system: Вы — полезный помощник Discourse.
Вы _понимаете_ и **генерируете** Discourse Markdown.
Вы находитесь в сообщении форума Discourse.

Вы находитесь на форуме с URL: https://XXXXX
Название вашего сайта: XXXXX
Описание: XXXXX
Участники этого разговора: XXXXX, XXXXX
Сегодняшняя дата: 2025-02-26 14:08:13 UTC, с момента вашего обучения многое изменилось.

Вы обучались на СТАРЫХ данных, полагайтесь на поиск для получения актуальной информации об этом форуме.
При поиске старайтесь УПРОЩАТЬ поисковые запросы.
Поиск в Discourse объединяет все термины через AND. Уменьшите и упростите термины, чтобы найти больше результатов.
stream: true
tools:
0:
name: categories
description: Выведет список категорий на текущем экземпляре Discourse, предпочтительно форматировать с # перед названием категории
input_schema:
type: object
properties:
required:
1:
name: search
description: Выполнит поиск тем на текущем экземпляре Discourse, при рендеринге всегда предпочтительно ссылаться на найденные темы
input_schema:
type: object
properties:
search_query:
type: string
description: Конкретные ключевые слова для поиска, разделенные пробелами (исправляйте опечатки, удаляйте служебные слова)
user:
type: string
description: Фильтровать результаты поиска по этому имени пользователя (включать только если пользователь явно просит фильтровать по пользователю)
order:
type: string
description: порядок результатов поиска
enum:
0: latest
1: latest_topic
2: oldest
3: views
4: likes
limit:
type: integer
description: ограничить количество возвращаемых результатов (обычно предпочтительно оставить по умолчанию)
max_posts:
type: integer
description: максимальное количество сообщений в темах (темы, где много людей писали)
tags:
type: string
description: список тегов для поиска. Используйте + для объединения через OR, используйте , для объединения через AND
category:
type: string
description: название категории для фильтрации
before:
type: string
description: только темы, созданные до конкретной даты ГГГГ-ММ-ДД
after:
type: string
description: только темы, созданные после конкретной даты ГГГГ-ММ-ДД
status:
type: string
description: поиск тем в определенном состоянии
enum:
0: open
1: closed
2: archived
3: noreplies
4: single_user
required:
2:
name: read
description: Прочитает тему или сообщение на этом экземпляре Discourse
input_schema:
type: object
properties:
topic_id:
type: integer
description: идентификатор темы для чтения
post_numbers:
type: array
description: номера сообщений для чтения (необязательно)
items:
type: integer
required:
0: topic_id
3:
name: tags
description: Выведет 100 самых популярных тегов на текущем экземпляре Discourse
input_schema:
type: object
properties:
required:

ВВОД (страница 2):

Токенов запроса: 778
Токенов ответа: 450
model: claude-3-7-sonnet-20250219
max_tokens: 38192
thinking:
type: enabled
budget_tokens: 8192
messages:
0:
role: user
content: Учитывая следующий разговор:

{{{
Пользователь сказал:
Проверьте, соответствует ли это объявление всем правилам XXXX. 

XXXX

Модель сказала:
Чтобы проверить, соответствует ли это объявление всем правилам XXXX, мне нужно обратиться к действующим правилам в системе. Я поищу информацию о правилах публикации объявлений о вакансиях.

<details>
<summary>Поиск</summary>
<p>Найдено 53 <a href='/search?q=politicas+publicacion+anuncios+ofertas+laborales'>resultados</a> по запросу 'politicas publicacion anuncios ofertas laborales'</p>
</details>
<span></span>



К сожалению, похоже, что наша система столкнулась с неожиданной проблемой при попытке ответить.

[details='Детали ошибки']
{"type":"error","error":{"type":"invalid_request_error","message":"messages.1.content.0.type: Ожидался `thinking` или `redacted_thinking`, но найден `tool_use`. Когда `thinking` включен, последнее сообщение `assistant` должно начинаться с блока мышления (предшествующего последнему набору блоков `tool_use` и `tool_result`). Мы рекомендуем включать блоки мышления из предыдущих ходов. Чтобы избежать этого требования, отключите `thinking`. Пожалуйста, обратитесь к нашей документации по адресу https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking"}}
[/details]


}}}

Ответьте только заголовком длиной 7 слов или меньше.
system: Вы — titlebot. Учитывая разговор, вы предложите заголовок.

- Вы никогда не будете отвечать ничем, кроме предложенного заголовка.
- Вы всегда будете использовать язык разговора в своих предложениях заголовков.
- Заголовок должен передавать суть разговора.

ВВОД (страница 3):

Токенов запроса: 925
Токенов ответа: 154
model: gpt-4o-mini
messages:
0:
role: system
content: Вы — продвинутый бот для суммирования, который генерирует краткие и связные резюме предоставленного текста.

- Включайте только резюме, без каких-либо дополнительных комментариев.
- Вы понимаете и генерируете Markdown форума Discourse; включая ссылки, _курсив_, **жирный шрифт**.
- Сохраняйте исходный язык текста, который суммируется.
- Стремитесь к тому, чтобы резюме составляли 400 слов или меньше.
- Каждое сообщение оформлено как "<НОМЕР_СООБЩЕНИЯ>) <ИМЯ_ПОЛЬЗОВАТЕЛЯ> <СООБЩЕНИЕ>"
- Цитируйте конкретные примечательные сообщения, используя формат [ОПИСАНИЕ](/t/-/1488/НОМЕР_СООБЩЕНИЯ)
- Пример: ссылки на 3-е и 6-е сообщения от sam: sam ([#3](/t/-/1488/3), [#6](/t/-/1488/6))
- Пример: ссылка на 6-е сообщение от jane: [согласился с](/t/-/1488/6)
- Пример: ссылка на 13-е сообщение от joe: [joe](/t/-/1488/13)
- При форматировании имен пользователей используйте либо @ИМЯ_ПОЛЬЗОВАТЕЛЯ, либо [ИМЯ_ПОЛЬЗОВАТЕЛЯ](/t/-/1488/НОМЕР_СООБЩЕНИЯ)
1:
role: user
content: Вот сообщения внутри тегов XML <input></input>:

<input>1) user1 сказал: Я люблю понедельники 2) user2 сказал: Я ненавижу понедельники</input>

Сгенерируйте краткое и связное резюме текста выше, сохраняя исходный язык.
2:
role: assistant
content: Два пользователя делятся своими чувствами по поводу понедельников. [user1](/t/-/1488/1) ненавидит их, а [user2](/t/-/1488/2) любит их.
3:
role: user
content: Заголовок обсуждения: Проверка вакансии XXXXX.

Вот сообщения внутри тегов XML <input></input>:

<input>
(1 XXXXX сказал: XXXXX (2 XXXXX сказал: Чтобы проверить, соответствует ли это объявление всем правилам XXXXX, мне нужно обратиться к действующим правилам в системе. Я поищу информацию о правилах публикации объявлений о вакансиях.

<details>
<summary>Поиск</summary>
<p>Найдено 53 <a href='/search?q=politicas+publicacion+anuncios+ofertas+laborales'>resultados</a> по запросу 'politicas publicacion anuncios ofertas laborales'</p>
</details>
<span></span>



К сожалению, похоже, что наша система столкнулась с неожиданной проблемой при попытке ответить.

[details='Детали ошибки']
{"type":"error","error":{"type":"invalid_request_error","message":"messages.1.content.0.type: Ожидался `thinking` или `redacted_thinking`, но найден `tool_use`. Когда `thinking` включен, последнее сообщение `assistant` должно начинаться с блока мышления (предшествующего последнему набору блоков `tool_use` и `tool_result`). Мы рекомендуем включать блоки мышления из предыдущих ходов. Чтобы избежать этого требования, отключите `thinking`. Пожалуйста, обратитесь к нашей документации по адресу https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking"}}
[/details]
</input>

Сгенерируйте краткое и связное резюме текста выше, сохраняя исходный язык.

ВЫХОД:

Токенов запроса: 1482
Токенов ответа: 202
event: message_start
data: {"type":"message_start","message":{"id":"msg_017uvsRAvCrkin8deo7KfSJt","type":"message","role":"assistant","model":"claude-3-7-sonnet-20250219","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":1482,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":3}} }

event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""} }

event: ping
data: {"type": "ping"}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"Мне н"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"еобходимо проверить это объявление о вакансии, чтобы убедиться"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" в его соответствии"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" правилам XXXXX,"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" исключая требование о прозрачности названия компании"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":". Для эффективного выполнения этой задачи"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":", мне сначала следует поискать информацию"}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" о правилах XXXXX для"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" объявлений о вакансиях."} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"\n\nДавайте поищу информацию"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" о правилах или рекомендациях для объявлений о вакансиях"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" на платформе XXXXX"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"."} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":"EuYBCkQYAiJAV6gVRVTK/ffuBAUV445vA+2ceuLiwxoP8zp1cUlPnNePLQ/PPDz25BQ9d0GyvgP2mxXVoibY8Y5fF0Y5ZXaR9BIM6B73OywtDTgvsnqpGgyLjAssqp2Lfyq3ucoiMKGlt32Bdl4/9lUWS3bXwPB2GCUeMUkgbKxJGzUF2CN+oVd/2RSSz5hzJynbKEiUbypQd1OjBx+f5vzMznA6drsgbFxUT3yzYzqBxpIWr8x7O8t8v63gcZw/mo3lIJrMSrAbVWL4bxXKe9cEq8LcG3DxffOSmsowGfeoKnAzkvsJus0="} }

event: content_block_stop
data: {"type":"content_block_stop","index":0 }

event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"text","text":""} }

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"Чтобы проверить, соответствует ли это объявление всем правилам XXXXX "} }

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"XXXXX , мне нужно обратиться к действующим правилам в системе. Я поищу информацию о правилах публикации объявлений о вакансиях."} }

event: content_block_stop
data: {"type":"content_block_stop","index":1}

event: content_block_start
data: {"type":"content_block_start","index":2,"content_block":{"type":"tool_use","id":"toolu_01JwNffkhK6d1LPtcbNHRtry","name":"search","input":{}} }

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":""} }

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":"{\"search_q"} }

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":"uer"} }

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":"y\": \"po"} }

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":"lit"} }

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":"ic"} }

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":"as publicac"} }

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":"ion anun"} }

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":"cios "} }

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":"ofertas labo"} }

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":"rales\"}"}}

event: content_block_stop
data: {"type":"content_block_stop","index":2 }

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"tool_use","stop_sequence":null},"usage":{"output_tokens":202} }

event: message_stop
data: {"type":"message_stop" }
2 лайка

А, понятно, проблема в смешивании мыслительного процесса и использования нативных инструментов через официальный API Anthropic.

1 лайк

Верно, когда я отключаю поддержку нативных инструментов в настройках LLM, всё работает.

1 лайк

Спасибо, посмотрю. Нужно разобраться, как сохранить блоки мышления — сейчас мы их не возвращаем, потребуется довольно много изменений.

Сокращённые блоки мышления ещё больше запутывают.

2 лайка

Мыслительный процесс зафиксирован согласно:

Это очень сложное изменение: протокол от Anthropic непрост в реализации, необходимо переносить блоки с мыслями.

Сообщите, как у вас получится.

2 лайка

Спасибо за исправление. Я провёл несколько тестов, и теперь всё работает. Я заметил, что с моделью Claude 3.7 Sonnet потребление токенов значительно выше и многократно превышает мои лимиты уровня 3 — 80 тысяч токенов в минуту. Я достигаю этого лимита даже с такими ограничительными настройками:

{"type":"error","error":{"type":"rate_limit_error","message":"Этот запрос превысит лимит скорости для вашей организации (86982fb5-12e6-4c93-be7a-4e51d63d1bf3) — 80 000 входных токенов в минуту. Подробную информацию см. в разделе: Лимиты скорости — Anthropic. Текущее потребление можно увидеть в заголовках ответа. Пожалуйста, уменьшите длину промпта или запрошенное максимальное количество токенов либо повторите попытку позже. Вы также можете связаться с отделом продаж по адресу https://www.anthropic.com/contact-sales, чтобы обсудить варианты повышения лимита скорости."}}

1 лайк

Похоже, у Anthropic сейчас проблемы с масштабированием версии 3.7: вчера был сбой, а в целом производительность API работает нестабильно.

Рекомендую подождать пару недель, пока они устранят неполадки.

Также думаю о внедрении кэширования токенов, хотя бы для чата, чтобы проверить, получится ли это реализовать.

2 лайка

Эта тема была автоматически закрыта через 5 дней. Новые ответы больше не допускаются.