Fiz mais algumas analises aqui e consegui contornar o erro usando um script. Mas no final, não deu pra usar com opencode pq o modelo não chama ferramentas. Mandei o deepseek fazer um resumo para tentar ajudar:
Contexto: Usando Open WebUI com provedor GigaToken (API: https://api.giga-token.com/rest/V1) modelo GLM-4.7. Criamos um proxy local para corrigir o formato do "delta":[] que a API retorna no lugar de "delta":{} nos chunks finais do streaming.
Regressão identificada: O function calling não funciona. O Open WebUI envia corretamente "tools" no body da requisição, mas o modelo/API ignora e responde apenas com texto simples (finish_reason:"stop"), sem nunca chamar as ferramentas disponíveis.
Exemplo concreto:
- Prompt: leia o arquivo README.MD e ajude a planejar um ERP
- Request 1 (sem tools, primeira chamada): resposta "Plano de implementação ERP" — sem tool call
- Request 2 (com tools, retorno do resultado do ReadFile executado localmente): resposta "Lendo o arquivo README.MD..." — sem tool call também
Evidência:
[1] body received (2530 bytes, tools:undefined, tool_choice:auto, last_msg:user)
[2] body received (33552 bytes, tools:true, tool_choice:true, last_msg:user)
Ambas as respostas retornam apenas delta.content com texto, finish_reason:"stop". O modelo nunca retorna tool_calls no delta.
Problemas adicionais:- Streaming retorna "delta":[] (array vazio) no último chunk — formato inválido, deveria ser "delta":{} (objeto vazio). Isso quebra validadores de schema no cliente.
- Streaming demora ~20-25s para iniciar a resposta (TTFT alto).