Errore in modalità di ragionamento AI

Versione:

Discourse v2026.7.2 — Commits · discourse/discourse · GitHub — Ember v6.10.1

Dettagli dell’errore:

DiscourseAi::Completions::Endpoints::OpenAi: status: 400 - body: {"error":{"code":400,"upstream_code":"invalid_request_error","message":"The `reasoning_content` in the thinking mode must be passed bac
activesupport-8.0.5/lib/active_support/broadcast_logger.rb:218:in 'block in ActiveSupport::BroadcastLogger#dispatch' 
activesupport-8.0.5/lib/active_support/broadcast_logger.rb:217:in 'Array#map' 
activesupport-8.0.5/lib/active_support/broadcast_logger.rb:217:in 'ActiveSupport::BroadcastLogger#dispatch' 
activesupport-8.0.5/lib/active_support/broadcast_logger.rb:129:in 'ActiveSupport::BroadcastLogger#error' 
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:685:in 'Kernel#public_send' 
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:685:in 'DiscourseAi::Completions::Endpoints::Base#failed_response_retry_status_and_delay' 
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:330:in 'block (3 levels) in DiscourseAi::Completions::Endpoints::Base#perform_completion_request_with_retries' 
net-http-0.9.1/lib/net/http.rb:2461:in 'block in Net::HTTP#transport_request' 
net-http-0.9.1/lib/net/http/response.rb:321:in 'Net::HTTPResponse#reading_body' 
net-http-0.9.1/lib/net/http.rb:2458:in 'Net::HTTP#transport_request' 
net-http-0.9.1/lib/net/http.rb:2410:in 'Net::HTTP#request' 
rack-mini-profiler-4.0.1/lib/patches/net_patches.rb:19:in 'block in Net::HTTP#request_with_mini_profiler' 
rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:51:in 'Rack::MiniProfiler::ProfilingMethods#step' 
rack-mini-profiler-4.0.1/lib/patches/net_patches.rb:18:in 'Net::HTTP#request_with_mini_profiler' 
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:325:in 'block (2 levels) in DiscourseAi::Completions::Endpoints::Base#perform_completion_request_with_retries' 
net-http-0.9.1/lib/net/http.rb:1630:in 'Net::HTTP#start' 
net-http-0.9.1/lib/net/http.rb:1064:in 'Net::HTTP.start' 
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:306:in 'block in DiscourseAi::Completions::Endpoints::Base#perform_completion_request_with_retries' 
<internal:kernel>:168:in 'Kernel#loop'
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:282:in 'DiscourseAi::Completions::Endpoints::Base#perform_completion_request_with_retries' 
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:191:in 'DiscourseAi::Completions::Endpoints::Base#perform_completion!' 
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/open_ai_shared.rb:50:in 'DiscourseAi::Completions::Endpoints::OpenAiShared#perform_completion!' 
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:218:in 'DiscourseAi::Completions::Endpoints::Base#replay_non_streaming_as_streaming!' 
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:172:in 'DiscourseAi::Completions::Endpoints::Base#perform_completion!' 
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/open_ai_shared.rb:50:in 'DiscourseAi::Completions::Endpoints::OpenAiShared#perform_completion!' 
/var/www/discourse/plugins/discourse-ai/lib/completions/llm.rb:245:in 'DiscourseAi::Completions::Llm#generate' 
/var/www/discourse/plugins/discourse-ai/lib/agents/bot.rb:176:in 'DiscourseAi::Agents::Bot#reply' 
/var/www/discourse/plugins/discourse-ai/lib/ai_bot/playground.rb:378:in 'DiscourseAi::AiBot::Playground#reply_to_chat_message' 
/var/www/discourse/plugins/discourse-ai/app/jobs/regular/create_ai_chat_reply.rb:20:in 'Jobs::CreateAiChatReply#execute' 
/var/www/discourse/app/jobs/base.rb:313:in 'block (2 levels) in Jobs::Base#perform' 
rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in 'RailsMultisite::ConnectionManagement::NullInstance#with_connection'
rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in 'RailsMultisite::ConnectionManagement.with_connection'
/var/www/discourse/app/jobs/base.rb:300:in 'block in Jobs::Base#perform' 
/var/www/discourse/app/jobs/base.rb:297:in 'Array#each' 
/var/www/discourse/app/jobs/base.rb:297:in 'Jobs::Base#perform' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:220:in 'Sidekiq::Processor#execute_job' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:185:in 'block (4 levels) in Sidekiq::Processor#process' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:180:in 'Sidekiq::Middleware::Chain#traverse' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse' 
/var/www/discourse/lib/sidekiq/suppress_user_email_errors.rb:6:in 'Sidekiq::SuppressUserEmailErrors#call' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse' 
/var/www/discourse/lib/sidekiq/discourse_event.rb:6:in 'Sidekiq::DiscourseEvent#call' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse' 
/var/www/discourse/lib/sidekiq/pausable.rb:131:in 'Sidekiq::Pausable#call' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse' 
sidekiq-7.3.10/lib/sidekiq/job/interrupt_handler.rb:9:in 'Sidekiq::Job::InterruptHandler#call' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse' 
sidekiq-7.3.10/lib/sidekiq/metrics/tracking.rb:26:in 'Sidekiq::Metrics::ExecutionTracker#track' 
sidekiq-7.3.10/lib/sidekiq/metrics/tracking.rb:134:in 'Sidekiq::Metrics::Middleware#call' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse' 
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:173:in 'Sidekiq::Middleware::Chain#invoke' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:184:in 'block (3 levels) in Sidekiq::Processor#process' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:145:in 'block (6 levels) in Sidekiq::Processor#dispatch' 
sidekiq-7.3.10/lib/sidekiq/job_retry.rb:118:in 'Sidekiq::JobRetry#local' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:144:in 'block (5 levels) in Sidekiq::Processor#dispatch' 
sidekiq-7.3.10/lib/sidekiq/config.rb:39:in 'block in <class:Config>' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:139:in 'block (4 levels) in Sidekiq::Processor#dispatch' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:281:in 'Sidekiq::Processor#stats' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:134:in 'block (3 levels) in Sidekiq::Processor#dispatch' 
sidekiq-7.3.10/lib/sidekiq/job_logger.rb:15:in 'Sidekiq::JobLogger#call' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:133:in 'block (2 levels) in Sidekiq::Processor#dispatch' 
sidekiq-7.3.10/lib/sidekiq/job_retry.rb:85:in 'Sidekiq::JobRetry#global' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:132:in 'block in Sidekiq::Processor#dispatch' 
sidekiq-7.3.10/lib/sidekiq/job_logger.rb:40:in 'Sidekiq::JobLogger#prepare' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:131:in 'Sidekiq::Processor#dispatch' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:183:in 'block (2 levels) in Sidekiq::Processor#process' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:182:in 'Thread.handle_interrupt' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:182:in 'block in Sidekiq::Processor#process' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:181:in 'Thread.handle_interrupt' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:181:in 'Sidekiq::Processor#process' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:86:in 'Sidekiq::Processor#process_one' 
sidekiq-7.3.10/lib/sidekiq/processor.rb:76:in 'Sidekiq::Processor#run' 
sidekiq-7.3.10/lib/sidekiq/component.rb:10:in 'Sidekiq::Component#watchdog' 
sidekiq-7.3.10/lib/sidekiq/component.rb:19:in 'block in Sidekiq::Component#safe_thread' 

Configurazione AI:

Ho provato quanto segue:
Tentativo 1:
Ho attivato la disabilitazione del completamento streaming (convertendo le richieste streaming in richieste non streaming), ma durante l’esecuzione del test si è verificato un errore:

Errore nella richiesta di streaming: il modello ha restituito una risposta vuota.

Tentativo 2:
Ho disattivato la disabilitazione del completamento streaming (convertendo le richieste streaming in richieste non streaming)

Allo stesso tempo, per Lavoro di ragionamento (solo per i modelli di ragionamento) (facoltativo), ho selezionato “none”.

L’esecuzione del test è andata a buon fine, ma in questo modo ho perso la funzionalità di ragionamento, che non è ciò che desideravo.

Domanda: è il plugin AI che non gestisce correttamente la logica di esecuzione dei test, oppure il formato restituito dalla piattaforma di grandi modelli con cui mi interfaccio non è compatibile? Se sono necessarie ulteriori informazioni, sono lieto di fornirle per individuare il problema specifico.

Il messaggio di errore DiscourseAi::Completions::Endpoints::OpenAi: ... è stato troncato?

Ho appena cercato quel messaggio di errore su Bing e sembra essere un problema specifico del provider DeepSeek

https://blog.csdn.net/weixin_38106322/article/details/161165043

Hai provato un altro provider (ad esempio OpenRouter)?

Grazie per la risposta. Utilizzo un servizio di routing LLM aggregato internamente dalla mia azienda.

Non ho mai provato OpenRouter, non ho attivato il loro servizio.

Se il problema è che DeepSeek richiede che i token di ragionamento vengano inviati di nuovo durante il completamento (noto anche come thinking intercalato[1]), penso che si tratti di una richiesta di funzionalità legittima.


  1. Questo potrebbe non essere accurato: ho appena cercato e il thinking intercalato riguarda più la conservazione del ragionamento tra le chiamate a strumenti piuttosto che tra contenuti arbitrari ↩︎