Erreur d'emploi des LLM personnalisés [deepseek-coder-v2:latest ne prend pas en charge les outils", "type": "api_error", "param": null, "code": null]

Nous avons activé le LLM personnalisé, mais nous rencontrons un problème en essayant le chatbot.

Journal

Message (2 copies signalées)

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

Trace

/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": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": "What is the latest version of Conan as per 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”:" D’après ma dernière mise à jour début 2023, il n’y a pas d’informations spécifiques sur "Conan" après 2025, car je n’ai pas de capacités de prédiction future ni de données en temps réel. Cependant, je peux vous donner quelques conseils généraux sur la façon de trouver la dernière version de Conan, qui est un gestionnaire de paquets pour la gestion des dépendances C/C++ :\n\n1. Visitez le site officiel : La manière la plus fiable d’obtenir des informations sur la dernière version de Conan est de visiter le site officiel à l’adresse https://conan.io/. Vous y trouverez généralement les dernières notes de publication et la documentation relative à la dernière version.\n\n2. Consultez le dépôt GitHub : La base de code de Conan est hébergée sur GitHub, vous pouvez donc également consulter le dépôt (GitHub - conan-io/conan: Conan - The open-source C and C++ package manager) pour les versions ou les tags qui correspondent aux différentes versions. Le dépôt comprend souvent des notes de version sous forme de commits et de pull requests.\n\n3"},“finish_reason”:“length”}],“usage”:{“prompt_tokens”:30,“completion_tokens”:200,“total_tokens”:230}}

On dirait que c’est l’erreur clé :

deepseek-coder-v2:latest ne prend pas en charge les outils

En regardant la liste des modèles ici : deepseek-coder · Ollama Search
il semble que deepseek-coder-v2 ne prenne pas en charge les outils — vous devriez soit supprimer les outils de votre persona, soit passer à un modèle prenant en charge les appels d’outils comme deepseek-coder-v2-tool-calling.

2 « J'aime »

Lorsque nous exécutons la commande CURL avec les entrées, elle produit la sortie sans aucun problème. Nous n’avons effectué aucune personnalisation dans le persona et les paramètres respectifs.

@awesomerobot

Pourriez-vous fournir plus de détails et quelques exemples ? Cela nous aiderait à mieux comprendre et à favoriser de meilleures discussions.

la commande curl ne semble pas inclure d’appels d’outils, c’est peut-être pour cela ? dans les paramètres de persona, y a-t-il des outils listés ici ?

1 « J'aime »

@awesomerobot

Nous n’avons encore inclus aucune Personne personnalisée, donc toutes celles que vous voyez dans l’application ne sont que les options par défaut. De plus, nous n’en utilisons aucune pour le moment !

Personnes :

Outils

Après avoir examiné de plus près votre capture d’écran précédente, je vois que vous utilisez le persona forum helper pour votre bot… cela inclut des outils intégrés que vous ne pouvez pas supprimer et qui ne fonctionneront pas avec le modèle que vous utilisez.
Vous devriez essayer l’un des personas préconfigurés qui n’incluent pas d’outils (« créatif » est une option) ou créer un nouveau persona qui n’inclut pas d’outils.

Pourriez-vous s’il vous plaît clarifier si avoir une persona est essentiel au bon fonctionnement des LLM ?

Oui, nos fonctionnalités d’IA utilisent un LLM avec une persona spécifiée.

Lorsque vous avez plus d’une persona activée et que vous créez un nouveau message, vous verrez un menu déroulant qui vous permettra de choisir la persona :

À des fins de test, si vous activez la persona Créative intégrée :

et que vous actualisez ensuite la page et démarrez un nouveau message avec elle, je m’attendrais à ce que cela fonctionne avec votre LLM car la persona Créative n’inclut aucun outil.

1 « J'aime »

Je ne vois que ces options, pourriez-vous m’aider avec le réglage

Vous devez visiter /admin/plugins/discourse-ai/ai-personas et soit créer une nouvelle persona, soit en activer une sans outils. Si vous souhaitez essayer une persona existante, « Créative » serait une bonne option à tester car elle n’inclut aucun outil.

Vous cliqueriez donc sur modifier ici :

et en bas des paramètres de la persona, vous devrez l’activer, cliquer sur « créer un utilisateur » et enregistrer vos modifications.

Une fois cela fait, la persona Créative devrait apparaître dans la liste (vous devrez peut-être d’abord actualiser la page).

Devons-nous également sélectionner la modale par défaut ?

Aussi, veuillez aider avec les paramètres suivants :

Persona de relecteur d'aide IA
Persona de suggestions de titres d'aide IA
Persona d'explication d'aide IA
Persona d'illustrateur de publication d'aide IA
Persona de dates intelligentes d'aide IA
Persona de traducteur d'aide IA
Persona de tableaux markdown d'aide IA
Persona d'invite personnalisée d'aide IA
Persona de légende d'image d'aide IA
Persona hyde de recherche sémantique d'incorporations IA
Persona de résumé IA
Persona de résumés IA
Persona de découverte de bots IA
Persona de recherche Discord IA
Persona de détecteur de locale de traduction IA
Persona de traducteur brut de traduction IA
Persona de traducteur de titre de sujet de traduction IA
Persona de traducteur de texte court de traduction IA
Générer des personas de concepts inférés
Faire correspondre des personas de concepts inférés
Dédoublonner des personas de concepts inférés
Générer des incorporations IA pour les PM
Groupes autorisés pour le partage public de bots IA

Comment interroger mes questions aux LLM et quel persona utiliser pour obtenir de meilleurs résultats

Je souhaite obtenir une réponse basée sur les données de mon forum et de mon modèle si elles ne sont pas disponibles.

@awesomerobot

Merci beaucoup pour votre contribution ! Je l’apprécie vraiment. Je reçois des réponses du bot, mais il semble que le contenu de mon forum ne soit pas encore inclus. Avez-vous des suggestions sur la façon dont nous pourrions améliorer cela ? Merci encore !

1 « J'aime »

Vous devrez passer à un LLM qui prend en charge l’utilisation d’outils. Notre persona inclus “forum helper”, par exemple, utilise les outils “search” et “read” pour trouver du contenu pertinent dans le forum afin de l’intégrer dans ses réponses.

Si le modèle ne dispose pas de prise en charge native des outils, vous pouvez toujours utiliser l’alternative XML, qui les inclut dans l’invite :

3 « J'aime »

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