自定义 LLM - 作业异常 [deepseek-coder-v2:latest 不支持工具\",\"type\":\"api_error\",\"param\":null,\"code\":null]

我们已启用自定义 LLM,但在尝试聊天机器人时遇到问题。

日志

消息(报告了 2 条)

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

回溯

/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":"截至我2023年初的最后更新,关于2025年之后的“Conan”没有具体信息,因为我没有未来预测能力或实时数据。但是,我可以提供一些关于如何查找Conan最新版本的通用建议,Conan是一个用于C/C++依赖管理的包管理器:\n\n1. **访问官方网站**:获取Conan最新版本信息的最可靠方法是访问官方网站 https://conan.io/。在那里,您通常可以找到与最新版本相关的最新发行说明和文档。\n\n2. **检查GitHub仓库**:Conan的代码库托管在GitHub上,因此您也可以检查仓库(https://github.com/conan-io/conan)以获取对应不同版本的发行版或标签。代码库通常包含以提交和拉取请求形式的发行说明。\n\n3"}},"finish_reason":"length"}],"usage":{"prompt_tokens":30,"completion_tokens":200,"total_tokens":230}}

看起来这是关键错误:

deepseek-coder-v2:latest 不支持工具

查看此处的模型列表:deepseek-coder · Ollama Search
看起来 deepseek-coder-v2 不支持工具 — 您需要从您的 persona 中移除工具,或者切换到支持工具调用的模型,例如 deepseek-coder-v2-tool-calling。

2 个赞

当我们使用输入的 CURL 命令执行时,它会毫无问题地产生输出。我们在 persona 和相应设置中没有进行任何自定义。

@awesomerobot

您能否提供更多详细信息和一些示例?这将帮助我们获得更清晰的理解并促进更好的讨论。

curl 命令似乎不包含工具调用,所以可能是这个原因?在 persona 设置中,这里列出了任何工具吗?

1 个赞

@awesomerobot

我们还没有包含任何自定义的 Persona,所以你在应用程序中看到的所有 Persona 都只是默认选项。此外,我们目前也没有使用它们!

Personas:

Tools

在再次查看您之前的屏幕截图后,我发现您正在为您的机器人使用“论坛助手”角色……这包括一些您无法删除的内置工具,并且这些工具将无法与您正在使用的模型一起使用。
您应该尝试一个不包含工具的预配置角色(“创意”是一个选项),或者创建一个不包含工具的新角色。

您能否澄清一下,拥有角色对于大型语言模型(LLM)的有效运行是否至关重要?

是的,我们的人工智能功能使用具有指定角色的语言模型(LLM)。

当您启用多个角色并创建新消息时,您会看到一个下拉菜单,允许您选择角色:

出于测试目的,如果您启用内置的创意角色:

然后刷新页面并使用它开始新消息,我预计这可以与您的语言模型(LLM)一起使用,因为创意角色不包含任何工具。

1 个赞

我只看到这些选项,您能帮我看看设置吗?

您需要访问 /admin/plugins/discourse-ai/ai-personas 并创建一个新角色或启用一个不带工具的角色。如果您想尝试一个现有角色,Creative 将是一个不错的测试选择,因为它不包含任何工具。

所以您需要在此处点击编辑:

然后在角色设置的底部,您需要启用它,点击“创建用户”,然后保存您的更改。

完成后,Creative 角色应该会出现在列表中(您可能需要先刷新页面)。

是否还需要选择默认模型?

另外,请协助处理以下设置:

AI 助手校对者角色
AI 助手标题建议者角色
AI 助手解释者角色
AI 助手帖子插画师角色
AI 助手智能日期角色
AI 助手翻译者角色
AI 助手 Markdown 表格角色
AI 助手自定义提示角色
AI 助手图片标题角色
AI 嵌入语义搜索 Hyde 角色
AI 摘要角色
AI 摘要要点角色
AI 机器人发现角色
AI Discord 搜索角色
AI 翻译区域设置检测器角色
AI 翻译原始帖子翻译器角色
AI 翻译主题标题翻译器角色
AI 翻译短文本翻译器角色
推断概念生成角色
推断概念匹配角色
推断概念去重角色
AI 嵌入为 PM 生成
AI 机器人公开分享允许的群组

如何向大型语言模型提问,以及如何设定角色以获得更好的输出

我希望获得基于我的论坛和模型中的数据,如果数据不可用,则不作回答。

@awesomerobot

非常感谢您的意见!我非常感激。我能收到机器人的回复,但似乎我的论坛内容还没有被包含进去。您有什么建议可以改进这一点吗?再次感谢!

1 个赞

您需要切换到一个支持工具使用的 LLM,例如我们包含的“论坛助手”角色,它使用“搜索”和“读取”工具来查找论坛中的相关内容并将其整合到其回复中。

如果模型没有原生工具支持,您始终可以使用 XML 替代方案,它会将工具包含在提示中:

3 个赞

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