(self, request: ApiRequest)
| 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 | |
| 443 | def main(): |
nothing calls this directly
no test coverage detected