MCPcopy Create free account
hub / github.com/antirez/llama.cpp-deepseek-v4-flash / run_tool_loop

Function run_tool_loop

scripts/server-test-structured.py:181–244  ·  view source on GitHub ↗

Drive the tool-call loop. If response_format is provided it is applied to every request. Returns (all_tool_calls, final_messages, final_content).

(
    url, messages, tools, mock_tool_responses, stream, response_format=None,
    max_turns=6,
)

Source from the content-addressed store, hash-verified

179
180
181def run_tool_loop(
182 url, messages, tools, mock_tool_responses, stream, response_format=None,
183 max_turns=6,
184):
185 """
186 Drive the tool-call loop. If response_format is provided it is applied to
187 every request. Returns (all_tool_calls, final_messages, final_content).
188 """
189 msgs = list(messages)
190 all_tool_calls: list[dict] = []
191
192 for _ in range(max_turns):
193 result = chat_completion(
194 url, msgs, tools=tools, response_format=response_format, stream=stream
195 )
196 if result is None:
197 return all_tool_calls, msgs, None
198
199 tcs = result.get("tool_calls") or []
200 content = result.get("content") or ""
201
202 if not tcs:
203 if content:
204 _print(f"\n{DIM}{'·' * 60}{RESET}")
205 return all_tool_calls, msgs, content
206
207 all_tool_calls.extend(tcs)
208
209 assistant_msg: dict = {
210 "role": "assistant",
211 "content": content,
212 "tool_calls": tcs,
213 }
214 reasoning = result.get("reasoning_content")
215 if reasoning:
216 assistant_msg["reasoning_content"] = reasoning
217 msgs.append(assistant_msg)
218
219 for tc in tcs:
220 tool_name = tc["function"]["name"]
221 try:
222 args = json.loads(tc["function"]["arguments"])
223 except json.JSONDecodeError:
224 args = {}
225
226 print_tool_call(tool_name, args)
227
228 mock_fn = mock_tool_responses.get(tool_name) if mock_tool_responses else None
229 if mock_fn:
230 tool_result = mock_fn(args)
231 else:
232 tool_result = json.dumps({"error": f"Unknown tool: {tool_name}"})
233
234 print_tool_result(tool_result)
235
236 msgs.append(
237 {
238 "role": "tool",

Callers 1

run_testFunction · 0.85

Calls 6

chat_completionFunction · 0.70
_printFunction · 0.70
print_tool_callFunction · 0.70
print_tool_resultFunction · 0.70
getMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected