It seems like CrewAI does a lot of stuff to force the models to use tools, which I think is probably the “right way” for them to go — a lot of times models tend to avoid using tools, so they probably have a lot of system prompts / systems to force models to use tools. Of course, this goes against your situation to not use any tools.
Could you try this:
In my message prompt, I reinforce that it needs to always use a tool, but then I create a tool called catch_all with the description to always use this tool if no other tools match the request.
This seems to work in my testing — K2 seems to always call it when the user request doesn’t fit the existing tools — but I haven’t tried it in CrewAI yet.
I’m really eager to see if this helps!!
{
"model": "moonshotai/kimi-k2-instruct-0905",
"messages": [
{
"role": "user",
"content": "[ALWAYS USE A TOOL] What is $100 USD to CAD?"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
]
}
},
"required": [
"location"
]
}
}
},
{
"type": "function",
"function": {
"name": "catch_all",
"description": "A general-purpose tool to handle requests that don't match any other available tools. Use this when no other tool is applicable or when the task is too complex or open-ended for a specific tool.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The user's query or request that needs to be handled"
}
},
"required": [
"query"
]
}
}
}
],
"tool_choice": "auto"
}
Output:
{
"id": "chatcmpl-eb077dd4-9cc5-4273-875b-0b54413c4069",
"object": "chat.completion",
"created": 1764119539,
"model": "moonshotai/kimi-k2-instruct-0905",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"tool_calls": [
{
"id": "functions.catch_all:0",
"type": "function",
"function": {
"name": "catch_all",
"arguments": "{\"query\":\"Convert 100 USD to CAD\"}"
}
}
]
},
"logprobs": null,
"finish_reason": "tool_calls"
}
],
"usage": {
"queue_time": 0.050531887,
"prompt_tokens": 248,
"prompt_time": 0.029942389,
"completion_tokens": 22,
"completion_time": 0.120449116,
"total_tokens": 270,
"total_time": 0.150391505
}
"service_tier": "on_demand"
}