Chat clients like the Open WebUI which we use in LiftWing Studio support "tool calling": the client sends the model a list of functions it may request (e.g a calculator, a clock, weather lookup, etc), the model replies with a structured request, the client runs the function and returns the result, and the model gives a final answer.
Our qwen36 model-server (behind the llm-qwen36-27b and llm-qwen3-14b services) does not support this: the KServe adapter it uses discards the tool list before it reaches the model. vLLM's built-in tool-calling flags only work in its own API server (see vLLM tool calling docs), which we do not use, so we shall implement support in our model-server.
In this task we shall:
- Add tool-calling logic in model-server
- Deploy model-server on LiftWing using TOOL_CALLING_ENABLED=True since it's False by default
- Register a test tool in LiftWing Studio
- Enable the test tool in a chat with the qwen model and use it
Acceptance criteria: Tool calling works for qwen models using the flow below:
- LiftWing Studio user sends What is the square root of 144?
- LiftWing model replies with <tool_call>{"name": "calculator", "arguments": {"equation": "sqrt(144)"}}</tool_call>
- LiftWing Studio runs calculator("sqrt(144)") locally, gets 12.0, appends the result to the conversation
- LiftWing model sees the result in the next turn and replies The square root of 144 is 12.0.

