mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-10-03 19:57:35 +00:00
# What does this PR do? When a model decides to use an MCP tool call that requires no arguments, it sets the `arguments` field to `None`. This causes the user to see a `400 bad requst error` due to validation errors down the stack because this field gets removed when being parsed by an openai compatible inference provider like vLLM This PR ensures that, as soon as the tool call args are accumulated while streaming, we check to ensure no tool call function arguments are set to None - if they are we replace them with "{}" <!-- If resolving an issue, uncomment and update the line below --> Closes #3456 ## Test Plan Added new unit test to verify that any tool calls with function arguments set to `None` get handled correctly --------- Signed-off-by: Jaideep Rao <jrao@redhat.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Ashwin Bharambe <ashwin.bharambe@gmail.com>
258 lines
9.6 KiB
JSON
258 lines
9.6 KiB
JSON
{
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "http://localhost:11434/api/generate",
|
|
"headers": {},
|
|
"body": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"raw": true,
|
|
"prompt": "<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nYou are a helpful assistant. You have access to functions, but you should only use them if they are required.\nYou are an expert in composing functions. You are given a question and a set of possible functions.\nBased on the question, you may or may not need to make one function/tool call to achieve the purpose.\n\nIf you decide to invoke any of the function(s), you MUST put it in the format of [func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)]\nIf you decide to invoke a function, you SHOULD NOT include any other text in the response. besides the function call in the above format.\nFor a boolean parameter, be sure to use `True` or `False` (capitalized) for the value.\n\n\nHere is a list of functions in JSON format that you can invoke.\n\n[\n {\n \"name\": \"get_boiling_point\",\n \"description\": \"Returns the boiling point of a liquid in Celcius or Fahrenheit.\",\n \"parameters\": {\n \"type\": \"dict\",\n \"required\": [\"liquid_name\"],\n \"properties\": {\n \"liquid_name\": {\n \"type\": \"str\",\n \"description\": \"The name of the liquid\"\n },\n \"celcius\": {\n \"type\": \"bool\",\n \"description\": \"Whether to return the boiling point in Celcius\",\n \"default\": \"True\"\n }\n }\n }\n }\n]\n\nYou can answer general questions or invoke tools when necessary.\nIn addition to tool calls, you should also augment your responses by using the tool outputs.\nYou are a helpful assistant Always respond with tool calls no matter what. <|eot_id|><|start_header_id|>user<|end_header_id|>\n\nGet the boiling point of polyjuice with a tool call.<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n[get_boiling_point(liquid_name=\"polyjuice\", celcius=True)]<|eot_id|><|start_header_id|>ipython<|end_header_id|>\n\n-100<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n",
|
|
"options": {
|
|
"temperature": 0.0001,
|
|
"top_p": 0.9
|
|
},
|
|
"stream": true
|
|
},
|
|
"endpoint": "/api/generate",
|
|
"model": "llama3.2:3b-instruct-fp16"
|
|
},
|
|
"response": {
|
|
"body": [
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:32.266493609Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": "The",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:32.468394034Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": " boiling",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:32.668683201Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": " point",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:32.86812Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": " of",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:33.066156104Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": " poly",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:33.258437386Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": "ju",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:33.455421239Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": "ice",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:33.653866336Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": " is",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:33.849413071Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": " -",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:34.044100975Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": "100",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:34.239766712Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": "\u00b0C",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:34.435865862Z",
|
|
"done": false,
|
|
"done_reason": null,
|
|
"total_duration": null,
|
|
"load_duration": null,
|
|
"prompt_eval_count": null,
|
|
"prompt_eval_duration": null,
|
|
"eval_count": null,
|
|
"eval_duration": null,
|
|
"response": ".",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
},
|
|
{
|
|
"__type__": "ollama._types.GenerateResponse",
|
|
"__data__": {
|
|
"model": "llama3.2:3b-instruct-fp16",
|
|
"created_at": "2025-10-01T01:34:34.629495297Z",
|
|
"done": true,
|
|
"done_reason": "stop",
|
|
"total_duration": 4426089450,
|
|
"load_duration": 45156482,
|
|
"prompt_eval_count": 407,
|
|
"prompt_eval_duration": 2016388423,
|
|
"eval_count": 13,
|
|
"eval_duration": 2363948468,
|
|
"response": "",
|
|
"thinking": null,
|
|
"context": null
|
|
}
|
|
}
|
|
],
|
|
"is_streaming": true
|
|
}
|
|
}
|