Exceção de trabalho de LLMs personalizados [deepseek-coder-v2:latest não suporta ferramentas", "tipo": "api_error", "param": null, "código": null]

Ativamos o LLM personalizado, mas estamos enfrentando um problema ao tentar usar o chatbot.

Log

Mensagem (2 cópias relatadas)

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": "Você é um assistente prestativo."
    },
    {
      "role": "user",
      "content": "Qual é a versão mais recente do Conan até 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":" Até minha última atualização no início de 2023, não há informações específicas sobre o \"Conan\" após 2025, pois não tenho capacidades de predição futura ou dados em tempo real. No entanto, posso fornecer algumas orientações gerais sobre como encontrar a versão mais recente do Conan, que é um gerenciador de pacotes para gerenciamento de dependências C/C++:\n\n1. **Visite o Site Oficial:** A maneira mais confiável de obter informações sobre a versão mais recente do Conan é visitar o site oficial em https://conan.io/. Lá você geralmente encontra as notas de lançamento mais recentes e a documentação relacionada à versão mais recente.\n\n2. **Verifique o Repositório GitHub:** O código-fonte do Conan está hospedado no GitHub, então você também pode verificar o repositório (https://github.com/conan-io/conan) para obter lançamentos ou tags que correspondam a diferentes versões. O repositório frequentemente inclui notas de lançamento na forma de commits e pull requests.\n\n3"},"finish_reason":"length"}],"usage":{"prompt_tokens":30,"completion_tokens":200,"total_tokens":230}}

Parece que este é o erro principal:

deepseek-coder-v2:latest não suporta ferramentas

Olhando a lista de modelos aqui: deepseek-coder · Ollama Search
parece que o deepseek-coder-v2 não suporta ferramentas — você precisaria remover ferramentas da sua persona ou mudar para um modelo com chamadas de ferramentas como deepseek-coder-v2-tool-calling.

2 curtidas

Quando executamos o comando CURL com as entradas, ele produz a saída sem problemas. Não fizemos nenhuma personalização na persona e nas configurações respectivas.

@awesomerobot

Você poderia fornecer mais detalhes e alguns exemplos? Isso nos ajudaria a ter um entendimento mais claro e a promover melhores discussões.

parece que o comando curl não inclui chamadas de ferramenta, então pode ser por isso? nas configurações de persona, há alguma ferramenta listada aqui?

1 curtida

@awesomerobot

Ainda não incluímos nenhuma Persona personalizada, então todas as que você vê no aplicativo são apenas as opções padrão. Além disso, não estamos usando nenhuma delas no momento!

Personas:

Ferramentas

Depois de dar outra olhada na sua captura de tela anterior, vejo que você está usando a persona forum helper para o seu bot… isso inclui algumas ferramentas integradas que você não pode remover e não funcionarão com o modelo que você está usando.
Você deve tentar uma das personas pré-configuradas que não inclui ferramentas (“criativa” é uma opção) ou criar uma nova persona que não inclua ferramentas.

Você poderia, por favor, esclarecer se ter uma persona é essencial para o funcionamento eficaz de LLMs?

Sim, nossos recursos de IA usam um LLM com uma persona especificada.

Quando você tiver mais de uma persona habilitada e criar uma nova mensagem, verá um menu suspenso que permite escolher a persona:

Para fins de teste, se você habilitar a persona Criativa integrada:

e, em seguida, atualizar a página e iniciar uma nova mensagem com ela, eu esperaria que isso funcionasse com seu LLM porque a persona Criativa não inclui nenhuma ferramenta.

1 curtida

Estou vendo apenas estas opções, você poderia me ajudar com a configuração?

Você precisa visitar /admin/plugins/discourse-ai/ai-personas e criar uma nova persona ou habilitar uma sem ferramentas. Se você quiser experimentar uma persona existente, a “Criativa” seria uma boa para testar, pois não inclui nenhuma ferramenta.

Então você clicaria em editar aqui:

e na parte inferior das configurações da persona, você precisará habilitá-la, clicar em “criar usuário” e salvar suas alterações.

Depois que isso for feito, a persona Criativa deverá aparecer na lista (pode ser necessário atualizar a página primeiro).

Precisamos também selecionar o modal padrão?

Além disso, por favor, ajude com as seguintes configurações:

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

Como alimentar minha pergunta aos LLMs e qual persona usar para obter melhores resultados

Quero obter a resposta com base nos dados do meu Fórum e Modelo, caso não estejam disponíveis.

@awesomerobot

Muito obrigado pela sua contribuição! Eu realmente aprecio. Estou recebendo respostas do bot, mas parece que o conteúdo do meu fórum ainda não está incluído. Você tem alguma sugestão de como poderíamos melhorar isso? Obrigado novamente!

1 curtida

Você precisará mudar para um LLM que suporte o uso de ferramentas, nossa persona incluída de “ajudante de fórum”, por exemplo, usa ferramentas de “pesquisa” e “leitura” para encontrar conteúdo relevante no fórum para incorporar em suas respostas.

Se o modelo não tiver suporte nativo a ferramentas, você sempre poderá usar a alternativa XML, que as inclui no prompt:

3 curtidas

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