48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
import sys
|
|
import os
|
|
import time
|
|
from simulation.sim_base import BaseSimulation, run_sim
|
|
|
|
class ToolsSimulation(BaseSimulation):
|
|
def run(self):
|
|
print("\n--- Running Tools Simulation ---")
|
|
|
|
# 1. Trigger list_directory tool
|
|
msg = "List the files in the current directory."
|
|
print(f"[Sim] Sending message to trigger tool: {msg}")
|
|
self.sim.run_discussion_turn(msg)
|
|
|
|
# 2. Wait for AI to execute tool
|
|
print("[Sim] Waiting for tool execution...")
|
|
time.sleep(5) # Give it some time
|
|
|
|
# 3. Verify Tool Log
|
|
# We need a hook to get the tool log
|
|
# In gui_2.py, there is _on_tool_log which appends to self._tool_log
|
|
# We need a hook to read self._tool_log
|
|
|
|
# 4. Trigger read_file tool
|
|
msg = "Read the first 10 lines of aggregate.py."
|
|
print(f"[Sim] Sending message to trigger tool: {msg}")
|
|
self.sim.run_discussion_turn(msg)
|
|
|
|
# 5. Wait and Verify
|
|
print("[Sim] Waiting for tool execution...")
|
|
time.sleep(5)
|
|
|
|
session = self.client.get_session()
|
|
entries = session.get('session', {}).get('entries', [])
|
|
# Tool outputs are usually in the conversation history as 'Tool' role or similar
|
|
tool_outputs = [e for e in entries if e.get('role') in ['Tool', 'Function']]
|
|
print(f"[Sim] Found {len(tool_outputs)} tool outputs in history.")
|
|
# Actually in Gemini history, they might be nested.
|
|
# But our GUI disc_entries list usually has them as separate entries or
|
|
# they are part of the AI turn.
|
|
|
|
# Let's check if the AI mentions it in its response
|
|
last_ai_msg = entries[-1]['content']
|
|
print(f"[Sim] Final AI Response: {last_ai_msg[:100]}...")
|
|
|
|
if __name__ == "__main__":
|
|
run_sim(ToolsSimulation)
|