Error en el modo de razonamiento de la IA

Versión:

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

Detalles del error:

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' 

Configuración de IA:

He intentado lo siguiente:
Intento 1:
Activar la deshabilitación de la completación en streaming (convertir la solicitud en streaming en una solicitud no en streaming), pero al ejecutar la prueba se produjo el siguiente error:

Error en la solicitud de streaming: el modelo devolvió una respuesta vacía.

Intento 2:
Desactivar la deshabilitación de la completación en streaming (convertir la solicitud en streaming en una solicitud no en streaming)

Al mismo tiempo, en Razonamiento (solo aplicable a modelos de razonamiento) (opcional), seleccioné “none”.

La prueba se ejecutó correctamente, pero de esta manera perdí la función de razonamiento, lo cual no es lo que deseo.

Duda: ¿es que el plugin de IA no maneja correctamente la lógica de ejecución de pruebas, o es que el formato de respuesta de la plataforma de modelo de lenguaje grande con la que estoy conectando no coincide? Si se necesita más información, estaré encantado de proporcionarla para determinar el problema específico.

¿El mensaje de error DiscourseAi::Completions::Endpoints::OpenAi: ... está cortado?

Acabo de buscar ese mensaje de error en Bing y parece ser un problema específico del proveedor DeepSeek

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

¿Has probado con otro proveedor (p. ej., OpenRouter)?

Gracias por responder. Estoy utilizando un servicio de enrutamiento de LLM (llmrouter) que nuestra empresa ha desarrollado internamente.

No he probado OpenRouter, ya que no tengo activado su servicio.

Si el problema es que DeepSeek requiere que se devuelvan tokens de razonamiento durante la generación de la respuesta (también conocido como razonamiento intercalado[1]), creo que se trata de una solicitud de funcionalidad legítima.


  1. Esto podría no ser exacto; simplemente busqué y el razonamiento intercalado se refiere más a preservar el razonamiento entre llamadas a herramientas, en lugar de entre contenido arbitrario ↩︎