MCPcopy Create free account
hub / github.com/Louisym/MiniCC / DemoApiClient

Class DemoApiClient

tutorials/05_agentic_loop_complete.py:393–440  ·  view source on GitHub ↗

模拟 API 客户端 —— 按剧本回复。 场景:用户问 "当前目录有什么文件?" AI 第一次回复:要用 bash 工具执行 ls AI 第二次回复:根据工具结果总结

Source from the content-addressed store, hash-verified

391# ======================================================================
392
393class DemoApiClient:
394 """
395 模拟 API 客户端 —— 按剧本回复。
396
397 场景:用户问 "当前目录有什么文件?"
398 AI 第一次回复:要用 bash 工具执行 ls
399 AI 第二次回复:根据工具结果总结
400 """
401 def __init__(self):
402 self.call_count = 0
403
404 def stream(self, request: ApiRequest) -> list[AssistantEvent]:
405 self.call_count += 1
406
407 if self.call_count == 1:
408 return [
409 AssistantEvent(event_type="text_delta", text="让我看看当前目录。"),
410 AssistantEvent(
411 event_type="tool_use",
412 tool_id="tool-001",
413 tool_name="bash",
414 tool_input='{"command": "ls"}',
415 ),
416 AssistantEvent(
417 event_type="usage",
418 usage=TokenUsage(input_tokens=50, output_tokens=12),
419 ),
420 AssistantEvent(event_type="message_stop"),
421 ]
422 else:
423 # 从对话历史里找到工具结果
424 tool_output = ""
425 for msg in request.messages:
426 for block in msg.blocks:
427 if isinstance(block, ToolResultBlock):
428 tool_output = block.output
429
430 return [
431 AssistantEvent(
432 event_type="text_delta",
433 text=f"当前目录的文件有:\n{tool_output}",
434 ),
435 AssistantEvent(
436 event_type="usage",
437 usage=TokenUsage(input_tokens=80, output_tokens=20),
438 ),
439 AssistantEvent(event_type="message_stop"),
440 ]
441
442
443def main():

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected