[Bug]: OpenAI-compatible tool calls are returned as plain text when routed through PAIR
Los mantenedores suelen responder en 5 días
@kjlubick ya está trabajando en esto.
Desde el 1/10/2026.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 55/100
Línea de trabajo
Comienza en el punto de entrada /v1/chat/completions del proxy de Ollama y compara cómo se gestionan las solicitudes y las respuestas cuando hay definiciones de herramientas. Reprodúcelo con la solicitud curl documentada contra PAIR y directamente contra Ollama, y verifica después que PAIR conserve message.tool_calls y finish_reason: tool_calls en lugar de devolver la llamada como texto.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
PAIR version or commit
0.1.1-463
Affected component
Ollama proxy
Environment
OS: Ubuntu 26.04.1 LTS on model host; Linux on NVIDIA DGX Spark PAIR client
Architecture: x86_64 model host; arm64 PAIR client
GPU and driver: AMD Radeon 8060S / Ryzen AI Max+ 395 on model host; NVIDIA GB10 on PAIR client
Engine and version: Ollama 0.33.2
Model: qwen3.6:27b
Cluster size: 4 nodes
Steps to reproduce
-
Configure a PAIR cluster with an Ollama node serving qwen3.6:27b.
-
Send an OpenAI-compatible POST request to:
/v1/chat/completionsThe request contains multiple OpenAI function/tool definitions and asks the model to work on a task for which it should call the
kanban_showfunction. -
Send the request through the PAIR Ollama proxy.
-
Send the exact same JSON request body directly to the Ollama server hosting qwen3.6:27b, bypassing PAIR.
-
Compare
finish_reason,message.content, andmessage.tool_callsin the two responses.
Repeated control test:
- Direct to Ollama: 3/3 requests returned a native
tool_callsobject. - Through PAIR: 3/3 requests returned
finish_reason: stopwith notool_callsobject. The intended function call instead appeared as ordinary assistant content.
The behavior is reproducible with curl and does not require an agent framework.
Expected behavior
When an OpenAI-compatible chat completion request containing tool definitions is routed through PAIR, native tool-calling behavior should be preserved.
For this request, the response should contain message.tool_calls with a call to kanban_show, and finish_reason should be tool_calls, matching the response obtained when the identical request is sent directly to the Ollama server.
Actual behavior
When the identical request is sent through the PAIR Ollama proxy, the native OpenAI-compatible tool call is not returned.
In repeated testing, PAIR returned:
finish_reason: stopmessage.tool_calls: null/ absent- The intended
kanban_showcall embedded inmessage.contentas ordinary text.
Three consecutive PAIR requests produced textual representations such as:
-
Python-like syntax:
kanban_show(task_id="t_65ba4229") -
Bracket syntax:
[kanban_show][0] -
XML-like syntax:
<invoke>kanban_show(task_id="t_65ba4229")</invoke>
By contrast, three consecutive requests using the identical JSON request body sent directly to Ollama returned native OpenAI-compatible tool calls:
finish_reason: tool_calls
with message.tool_calls containing a function call to kanban_show.
The same JSON payload succeeds when sent directly to the Ollama server on the model host, so the failure is introduced only when the request is routed through PAIR.
This also prevents OpenAI-compatible agent/tool frameworks from recognizing and executing the requested function when the request is routed through PAIR.
Sanitized logs or screenshots
Confirmations
- I searched existing issues for duplicates.
- This is not a security vulnerability.
- I agree to follow the Code of Conduct.
- Lenguaje dominante
- Go
- Estrellas
- 1.6k
- Forks
- 266
- Merge medio
- 3 d 6 h
- PR fusionados (30 d)
- 22
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de NVIDIA/Personal-AI-Router
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
NVIDIA/Personal-AI-Router#165 ·
Los mantenedores suelen responder en 5 días
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 46/100
NVIDIA/Personal-AI-Router#164 ·
Los mantenedores suelen responder en 5 días
-
enhancement
Dificultad 4/5 Más de una semana Aptitud para principiantes 12/100
NVIDIA/Personal-AI-Router#162 ·
Los mantenedores suelen responder en 5 días
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
NVIDIA/Personal-AI-Router#154 · 1 comentario ·
Los mantenedores suelen responder en 5 días
-
[Feature]: [Ollama] Alert the user about model pull failuresPosiblemente ocupada @ckelseynv la tomó hace 4 días. Abiertoenhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 56/100
NVIDIA/Personal-AI-Router#152 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 5 días
Todos los issues de NVIDIA/Personal-AI-Router
Issues similares
-
Action Required: Fix Renovate ConfigurationPosiblemente ocupada @thompson-tomo la tomó hoy. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
open-telemetry/opentelemetry-collector#16170 ·
Los mantenedores suelen responder en 1 día
-
automation awf compiler specifications
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
state:triage-needed
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
puppe1990/amarra-cais#342 ·
Los mantenedores suelen responder en 1 día
-
replay: a run cancelled during environment setup is logged as an ERROR (Instrument drops the cancellation)Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día