Excepción de trabajo de LLM personalizados [deepseek-coder-v2:latest no admite herramientas", "tipo": "api_error", "param": null, "código": null]

Hemos habilitado el LLM personalizado, pero estamos experimentando un problema al probar el chatbot.

Registro

Mensaje (se informaron 2 copias)

Job exception: {"error":{"message":"registry.ollama.ai/library/deepseek-coder-v2:latest does not support tools","type":"api_error","param":null,"code":null}}

Backtrace

/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:173:in `block (2 levels) in perform_completion!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:2433:in `block in transport_request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:320:in `reading_body'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:2430:in `transport_request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:2384:in `request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-4.0.1/lib/patches/net_patches.rb:19:in `block in request_with_mini_profiler'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:51:in `step'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-4.0.1/lib/patches/net_patches.rb:18:in `request_with_mini_profiler'
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:168:in `block in perform_completion!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:1632:in `start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:1070:in `start'
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:139:in `perform_completion!'
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/open_ai.rb:53:in `perform_completion!'
/var/www/discourse/plugins/discourse-ai/lib/completions/llm.rb:415:in `generate'
/var/www/discourse/plugins/discourse-ai/lib/personas/bot.rb:89:in `reply'
/var/www/discourse/plugins/discourse-ai/lib/ai_bot/playground.rb:494:in `reply_to'
/var/www/discourse/plugins/discourse-ai/app/jobs/regular/create_ai_reply.rb:18:in `execute'
/var/www/discourse/app/jobs/base.rb:318:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in `with_connection'
/var/www/discourse/app/jobs/base.rb:305:in `block in perform'
/var/www/discourse/app/jobs/base.rb:301:in `each'
/var/www/discourse/app/jobs/base.rb:301:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/discourse_event.rb:6:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/pausable.rb:131:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in <class:Config>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe_thread'
curl -X POST http://localhost:11434/v1/chat/completions -H "Content-Type: application/json" -d '{
  "model": "deepseek-coder-v2:latest",
  "messages": [
    {
      "role": "system",
      "content": "Eres un asistente útil."
    },
    {
      "role": "user",
      "content": "¿Cuál es la última versión de Conan según 2025?"
    }
  ],
  "temperature": 0.7,
  "max_tokens": 200
}'

{“id”:“chatcmpl-940”,“object”:“chat.completion”,“created”:1757057197,“model”:“deepseek-coder-v2:latest”,“system_fingerprint”:“fp_ollama”,“choices”:[{“index”:0,“message”:{“role”:“assistant”,“content”:" Según mi última actualización a principios de 2023, no hay información específica sobre "Conan" después de 2025, ya que no tengo capacidades de predicción futura ni datos en tiempo real. Sin embargo, puedo ofrecer algunos consejos generales sobre cómo encontrar la última versión de Conan, que es un gestor de paquetes para la gestión de dependencias de C/C++:\n\n1. Visita el sitio web oficial: La forma más fiable de obtener información sobre la última versión de Conan es visitar el sitio web oficial en https://conan.io/. Allí normalmente puedes encontrar las últimas notas de la versión y la documentación relacionada con la versión más reciente.\n\n2. Consulta el repositorio de GitHub: El código base de Conan está alojado en GitHub, por lo que también puedes consultar el repositorio (GitHub - conan-io/conan: Conan - The open-source C and C++ package manager) para ver las versiones o etiquetas que corresponden a diferentes versiones. El repositorio a menudo incluye notas de la versión en forma de commits y solicitudes de extracción.\n\n3"},“finish_reason”:“length”}],“usage”:{“prompt_tokens”:30,“completion_tokens”:200,“total_tokens”:230}}

Parece que este es el error clave:

deepseek-coder-v2:latest no soporta herramientas

mirando la lista de modelos aquí: deepseek-coder · Ollama Search
no parece que deepseek-coder-v2 soporte herramientas; deberías eliminar las herramientas de tu persona o cambiar a un modelo con llamadas a herramientas como deepseek-coder-v2-tool-calling.

2 Me gusta

Cuando ejecutamos el comando CURL con las entradas, produce la salida sin ningún problema. No hemos realizado ninguna personalización en la persona ni en la configuración respectiva.

@awesomerobot

¿Podrías proporcionar más detalles y algunos ejemplos? Esto nos ayudaría a obtener una comprensión más clara y a fomentar mejores discusiones.

¿Es posible que el comando curl no incluya llamadas a herramientas, por eso? En la configuración de la persona, ¿hay herramientas listadas aquí?

1 me gusta

@awesomerobot

Aún no hemos incluido ninguna Persona personalizada, por lo que todas las que ves en la aplicación son solo las opciones predeterminadas. ¡Además, no estamos usando ninguna de ellas en este momento!

Personas:

Herramientas

Después de revisar tu captura de pantalla anterior, veo que estás usando la personalidad ayudante del foro para tu bot… esto incluye algunas herramientas integradas que no puedes eliminar y que no funcionarán con el modelo que estás utilizando.

Deberías probar una de las personalidades preconfiguradas que no incluye herramientas ( “creativa” es una opción) o crear una nueva personalidad que no incluya herramientas.

¿Podría aclarar si tener una persona es esencial para el funcionamiento eficaz de los LLM?

Sí, nuestras funciones de IA utilizan un LLM con una persona especificada.

Cuando tenga más de una persona habilitada y cree un nuevo mensaje, verá un menú desplegable que le permitirá elegir la persona:

Para fines de prueba, si habilita la persona Creativa incorporada:

y luego actualiza la página y comienza un nuevo mensaje con ella, esperaría que esto funcione con su LLM porque la persona Creativa no incluye ninguna herramienta.

1 me gusta

Solo veo estas opciones, ¿podrías ayudarme con la configuración?

Necesitas visitar /admin/plugins/discourse-ai/ai-personas y crear una nueva persona o habilitar una sin herramientas. Si quieres probar una persona existente, “Creative” sería una buena opción para probar ya que no incluye ninguna herramienta.

Así que harías clic en editar aquí:

y en la parte inferior de la configuración de la persona, deberás habilitarla, hacer clic en “crear usuario” y guardar tus cambios.

Una vez hecho esto, la persona “Creative” debería aparecer en la lista (es posible que necesites actualizar la página primero).

¿También necesitamos seleccionar la modalidad predeterminada?

Además, por favor, ayúdanos con la siguiente configuración:

AI helper proofreader persona
AI helper title suggestions persona
AI helper explain persona
AI helper post illustrator persona
AI helper smart dates persona
AI helper translator persona
AI helper markdown tables persona
AI helper custom prompt persona
AI helper image caption persona
AI embeddings semantic search hyde persona
AI summarization persona
AI summary gists persona
AI bot discover persona
AI Discord search persona
AI translation locale detector persona
AI translation post raw translator persona
AI translation topic title translator persona
AI translation short text translator persona
Inferred concepts generate persona
Inferred concepts match persona
Inferred concepts deduplicate persona
AI embeddings generate for PMs
AI bot public sharing allowed groups

Cómo alimentar mi pregunta a los LLM y la personalidad para obtener mejores resultados

Quiero obtener la respuesta basándome en los datos de mi foro y modelo si no están disponibles.

@awesomerobot

¡Muchas gracias por tu aporte! Lo aprecio mucho. Estoy recibiendo respuestas del bot, pero parece que el contenido de mi foro aún no está incluido. ¿Tienes alguna sugerencia sobre cómo podríamos mejorar eso? ¡Gracias de nuevo!

1 me gusta

Necesitarás cambiar a un LLM que admita el uso de herramientas, nuestro “asistente del foro” incluido, por ejemplo, utiliza herramientas de “búsqueda” y “lectura” para encontrar contenido relevante en el foro e incorporarlo en sus respuestas.

Si el modelo no tiene soporte nativo para herramientas, siempre puedes usar la alternativa XML, que las incluye en el prompt:

3 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.