test_agents.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. """HelloAgents 官方类集成测试。"""
  2. from hello_agents import Config, SimpleAgent
  3. from src.agents import build_agent_team
  4. from src.config import LLMSettings
  5. from src.tools import create_tool_registry
  6. def test_build_agent_team_creates_four_official_simple_agents() -> None:
  7. settings = LLMSettings(
  8. model="test-model",
  9. api_key="test-secret-key",
  10. base_url="https://example.test/v1",
  11. )
  12. registry = create_tool_registry()
  13. team = build_agent_team(settings, registry)
  14. assert all(
  15. isinstance(agent, SimpleAgent)
  16. for agent in (team.analyst, team.architect, team.reviewer, team.synthesizer)
  17. )
  18. assert team.analyst.tool_registry is registry
  19. assert team.synthesizer.tool_registry is registry
  20. assert team.architect.tool_registry is None
  21. assert team.reviewer.tool_registry is None
  22. def test_official_simple_agent_runs_with_offline_fake_llm() -> None:
  23. class FakeLLM:
  24. def invoke(self, messages, **kwargs) -> str:
  25. assert messages[-1]["content"] == "请澄清这个需求"
  26. return "待确认:目标用户和验收标准。"
  27. agent = SimpleAgent(
  28. name="离线框架集成测试",
  29. llm=FakeLLM(), # type: ignore[arg-type]
  30. config=Config(debug=False),
  31. )
  32. result = agent.run("请澄清这个需求")
  33. assert result == "待确认:目标用户和验收标准。"
  34. def test_official_simple_agent_can_call_requirement_tool_with_plain_text() -> None:
  35. class ToolCallingFakeLLM:
  36. def __init__(self) -> None:
  37. self.responses = iter(
  38. [
  39. "[TOOL_CALL:requirement_audit:面向居民做一个活动报名小程序]",
  40. "需求初检已经完成。",
  41. ]
  42. )
  43. self.calls = []
  44. def invoke(self, messages, **kwargs) -> str:
  45. self.calls.append(messages)
  46. return next(self.responses)
  47. fake_llm = ToolCallingFakeLLM()
  48. agent = SimpleAgent(
  49. name="工具调用集成测试",
  50. llm=fake_llm, # type: ignore[arg-type]
  51. config=Config(debug=False),
  52. tool_registry=create_tool_registry(),
  53. )
  54. result = agent.run("请检查需求完整度")
  55. assert result == "需求初检已经完成。"
  56. assert '"ok": true' in fake_llm.calls[1][-1]["content"]