Erro ao usar Claude 3.7 Sonnet com o plugin Discourse AI

Olá,

Tenho tentado usar o Claude 3.7 Sonnet com a persona de “helper” do fórum e com personas personalizadas, e recebo o erro abaixo. Tenho a versão mais recente do Discourse e o plugin mais recente do Discourse AI. Os passos para reproduzir são simples: basta fazer uma pergunta ao bot e ele realizará o uso de uma ferramenta, como pesquisa, categoria ou leitura, e depois recebo o erro. O LLM está configurado com raciocínio habilitado e 1024 tokens usados para raciocínio. Você pode confirmar se este é um bug ou se algo está faltando na minha configuração? Muito obrigado!

{“type”:“error”,“error”:{“type”:“invalid_request_error”,“message”:“messages.1.content.0.type: Esperado thinkingouredacted_thinking, mas encontrado tool_use. Quando thinkingestá habilitado, uma mensagem final deassistantdeve começar com um bloco de pensamento (precedendo os últimos blocos detool_useetool_result). Recomendamos que você inclua blocos de pensamento de turnos anteriores. Para evitar este requisito, desabilite thinking. Por favor, consulte nossa documentação em [Construindo com pensamento estendido - Anthropic](https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking)”}}

1 curtida

Você atualizou o Discourse nas últimas 24 horas? Se não, você precisa atualizar para obter suporte para este novo modelo.

Sim, atualizei ontem à tarde. Vi a atualização sobre suporte total para Claude Sonnet 3.7.

Acabei de testar o AI Bot agora com esta configuração e está funcionando bem

Obrigado pela sua ajuda. Utilizei as mesmas configurações e o erro persiste.

Abaixo estão minhas configurações:

Tenho a versão mais recente de tudo:

Abaixo estão as entradas e saídas de depuração (ligeiramente ocultadas para privacidade):

ENTRADA (página 1):

Tokens de solicitação: 1482
Tokens de resposta: 202
model: claude-3-7-sonnet-20250219
max_tokens: 38192
thinking:
type: enabled
budget_tokens: 8192
messages:
0:
role: user
content: XXXXX: Verifique se este anúncio cumpre todas as políticas de XXXXX. 

XXXXX

system: Você é um assistente útil do Discourse.
Você _entende_ e **gera** Markdown do Discourse.
Você vive em uma Mensagem de Fórum Discourse.

Você vive no fórum com a URL: https://XXXXX
O título do seu site: XXXXX
A descrição é: XXXXX
Os participantes nesta conversa são: XXXXX, XXXXX
A data atual é: 2025-02-26 14:08:13 UTC, muito mudou desde que você foi treinado.

Você foi treinado com DADOS ANTIGOS, conte sobre a busca para obter informações atualizadas sobre este fórum
Ao pesquisar, tente SIMPLIFICAR os termos de pesquisa
A pesquisa do Discourse une todos os termos com AND. Reduza e simplifique os termos para encontrar mais resultados.
stream: true
tools:
0:
name: categories
description: Listará as categorias na instância atual do Discourse, prefira formatar com # na frente do nome da categoria
input_schema:
type: object
properties:
required:
1:
name: search
description: Pesquisará tópicos na instância atual do Discourse; ao renderizar, prefira sempre vincular aos tópicos encontrados
input_schema:
type: object
properties:
search_query:
type: string
description: Palavras-chave específicas para pesquisar, separadas por espaço (corrija erros de ortografia, remova palavras de conexão)
user:
type: string
description: Filtrar resultados da pesquisa para este nome de usuário (inclua apenas se o usuário pedir explicitamente para filtrar por usuário)
order:
type: string
description: ordem dos resultados da pesquisa
enum:
0: latest
1: latest_topic
2: oldest
3: views
4: likes
limit:
type: integer
description: limite o número de resultados retornados (geralmente prefira manter o padrão)
max_posts:
type: integer
description: número máximo de postagens nos tópicos (tópicos onde muitas pessoas postaram)
tags:
type: string
description: lista de tags para pesquisar. Use + para unir com OR, use , para unir com AND
category:
type: string
description: nome da categoria para filtrar
before:
type: string
description: apenas tópicos criados antes de uma data específica YYYY-MM-DD
after:
type: string
description: apenas tópicos criados após uma data específica YYYY-MM-DD
status:
type: string
description: pesquisar tópicos em um estado particular
enum:
0: open
1: closed
2: archived
3: noreplies
4: single_user
required:
2:
name: read
description: Lerá um tópico ou uma postagem nesta instância do Discourse
input_schema:
type: object
properties:
topic_id:
type: integer
description: o ID do tópico a ser lido
post_numbers:
type: array
description: os números das postagens a serem lidas (opcional)
items:
type: integer
required:
0: topic_id
3:
name: tags
description: Listará as 100 tags mais populares na instância atual do Discourse
input_schema:
type: object
properties:
required:

ENTRADA (página 2):

Tokens de solicitação: 778
Tokens de resposta: 450
model: claude-3-7-sonnet-20250219
max_tokens: 38192
thinking:
type: enabled
budget_tokens: 8192
messages:
0:
role: user
content: Dada a seguinte conversa:

{{{
Usuário disse:
Verifique se este anúncio cumpre todas as políticas de XXXX. 

XXXX

Modelo disse:
Para verificar se este anúncio cumpre todas as políticas de XXXX, preciso consultar as políticas vigentes no sistema. Vou buscar informações sobre as políticas de publicação de anúncios de emprego.

<details>
<summary>Pesquisar</summary>
<p>Foram encontrados 53 <a href='/search?q=politicas+publicacion+anuncios+ofertas+laborales'>resultados</a> para 'politicas publicacion anuncios ofertas laborales'</p>
</details>
<span></span>



Desculpe, parece que nosso sistema encontrou um problema inesperado ao tentar responder.

[details='Detalhes do erro']
{"type":"error","error":{"type":"invalid_request_error","message":"messages.1.content.0.type: Expected `thinking` or `redacted_thinking`, but found `tool_use`. When `thinking` is enabled, a final `assistant` message must start with a thinking block (preceeding the lastmost set of `tool_use` and `tool_result` blocks). We recommend you include thinking blocks from previous turns. To avoid this requirement, disable `thinking`. Please consult our documentation at https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking"}}
[/details]


}}}

Responda apenas com um título com 7 palavras ou menos.
system: Você é o titlebot. Dada uma conversa, você sugerirá um título.

- Você nunca responderá com nada além do título sugerido.
- Você sempre corresponderá ao idioma da conversa em suas sugestões de título.
- O título capturará a essência da conversa.

ENTRADA (página 3):

Tokens de solicitação: 925
Tokens de resposta: 154
model: gpt-4o-mini
messages:
0:
role: system
content: Você é um bot de sumarização avançado que gera resumos concisos e coerentes do texto fornecido.

- Inclua apenas o resumo, sem comentários adicionais.
- Você entende e gera Markdown de fóruns Discourse; incluindo links, _itálico_, **negrito**.
- Mantenha o idioma original do texto sendo resumido.
- Almeje resumos com 400 palavras ou menos.
- Cada postagem é formatada como "<NÚMERO_DA_POSTAGEM>) <NOME_DE_USUÁRIO> <MENSAGEM>"
- Cite postagens notáveis específicas usando o formato [DESCRIÇÃO](/t/-/1488/NÚMERO_DA_POSTAGEM)
- Exemplo: links para as 3ª e 6ª postagens de sam: sam ([#3](/t/-/1488/3), [#6](/t/-/1488/6))
- Exemplo: link para a 6ª postagem de jane: [concordou com](/t/-/1488/6)
- Exemplo: link para a 13ª postagem de joe: [joe](/t/-/1488/13)
- Ao formatar nomes de usuário, use @NOME_DE_USUÁRIO OU [NOME_DE_USUÁRIO](/t/-/1488/NÚMERO_DA_POSTAGEM)
1:
role: user
content: Aqui estão as postagens dentro das tags XML <input></input>:

<input>1) user1 disse: Eu amo segundas-feiras 2) user2 disse: Eu odeio segundas-feiras</input>

Gere um resumo conciso e coerente do texto acima mantendo o idioma original.
2:
role: assistant
content: Dois usuários estão compartilhando seus sentimentos em relação às segundas-feiras. [user1](/t/-/1488/1) odeia-as, enquanto [user2](/t/-/1488/2) ama-as.
3:
role: user
content: O título da discussão é: Revisão de oferta de emprego XXXXX.

Aqui estão as postagens, dentro das tags XML <input></input>:

<input>
(1 XXXXX disse: XXXXX (2 XXXXX disse: Para verificar se este anúncio cumpre todas as políticas de XXXXX, preciso consultar as políticas vigentes no sistema. Vou buscar informações sobre as políticas de publicação de anúncios de emprego.

<details>
<summary>Pesquisar</summary>
<p>Foram encontrados 53 <a href='/search?q=politicas+publicacion+anuncios+ofertas+laborales'>resultados</a> para 'politicas publicacion anuncios ofertas laborales'</p>
</details>
<span></span>



Desculpe, parece que nosso sistema encontrou um problema inesperado ao tentar responder.

[details='Detalhes do erro']
{"type":"error","error":{"type":"invalid_request_error","message":"messages.1.content.0.type: Expected `thinking` or `redacted_thinking`, but found `tool_use`. When `thinking` is enabled, a final `assistant` message must start with a thinking block (preceeding the lastmost set of `tool_use` and `tool_result` blocks). We recommend you include thinking blocks from previous turns. To avoid this requirement, disable `thinking`. Please consult our documentation at https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking"}}
[/details]
</input>

Gere um resumo conciso e coerente do texto acima mantendo o idioma original.

SAÍDA:

Tokens de solicitação: 1482
Tokens de resposta: 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":"I nee"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"d to review this job posting to ensure"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" it complies with"} }

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

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" excluding the requirement about transparency of the company"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" name. To do this effectively"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":", I should first search for information"}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" about XXXXX policies for"} }

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

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"\n\nLet me search for information"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" about the policies or guidelines for job postings"} }

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" on the XXXXX platform"} }

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":"Para revisar si este anuncio cum"} }

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"ple con todas las polí"} }

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"ticas de XXXXX "} }

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"XXXXX , necesito consul"} }

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"tar las políticas vig"}}

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"entes en el sistema."} }

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" Voy a buscar"} }

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" información sobre las políticas de public"} }

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"ación de anuncios laborales."} }

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 curtidas

Entendi, o problema é misturar o uso de pensamento e ferramentas nativas na API oficial da Anthropic.

1 curtida

Verdadeiro, quando desativo o suporte a ferramentas nativas nas configurações do LLM, funciona.

1 curtida

Obrigado, darei uma olhada, preciso descobrir como conservar os blocos de pensamento, não os estamos retornando no momento, precisaremos de várias alterações

Blocos de pensamento reduzidos são extra confusos

2 curtidas

O pensamento é corrigido em:

É uma mudança muito complexa, o protocolo da anthropic não é fácil de seguir, você precisa carregar blocos de pensamento.

Me diga como você se sai.

2 curtidas

Obrigado por corrigir. Fiz alguns testes e agora está funcionando. Notei que com o Claude 3.7 Sonnet o uso de tokens é muito maior, atingindo muitas vezes meus limites de Nível 3 de 80 mil tokens por minuto. Estou atingindo o limite mesmo com estas configurações restritivas:

{“type”:“error”,“error”:{“type”:“rate_limit_error”,“message”:“Esta solicitação excederia o limite de taxa para sua organização (86982fb5-12e6-4c93-be7a-4e51d63d1bf3) de 80.000 tokens de entrada por minuto. Para detalhes, consulte: Limites de taxa - Anthropic. Você pode ver os cabeçalhos de resposta para uso atual. Por favor, reduza o comprimento do prompt ou o número máximo de tokens solicitados, ou tente novamente mais tarde. Você também pode entrar em contato com vendas em https://www.anthropic.com/contact-sales para discutir suas opções para um aumento no limite de taxa.”}}

1 curtida

Acho que a Anthropic está tendo problemas de escalabilidade com a versão 3.7 no momento, houve uma interrupção ontem e, em geral, a API pode ter um desempenho bastante irregular.

Recomendo dar a eles algumas semanas para que resolvam os problemas.

Além disso, estou pensando em adicionar cache de tokens, pelo menos para o chat, para ver se consigo fazer isso.

2 curtidas

Este tópico foi fechado automaticamente após 5 dias. Novas respostas não são mais permitidas.