Files
zhuangang/topics/ai/agent-design/examples/agent-patterns/test_patterns.py
T

30 lines
1.1 KiB
Python

# requires: pytest
from pathlib import Path
import patterns as p
def test_replan_after_failure():
steps, log = p.plan_and_execute("生成 2026-09 报表")
assert "query_sales 失败" in log[1] and all(s.status == "done" for s in steps)
def test_give_up_after_max_replans():
steps, log = p.plan_and_execute("生成报表(没有月份)", max_replans=1)
assert log[-1].startswith("超过最大重新规划次数")
def test_skill_index_is_small_and_body_loaded_on_demand():
skills = p.discover_skills(Path(p.__file__).parent / "skills")
idx = p.skills_index(skills)
assert "500" not in idx and len(skills) == 2 # 索引里没有技能全文
assert p.pick_skill("帮我统计上月订单", skills).name == "sql-report"
assert p.pick_skill("今天天气", skills) is None
def test_context_keeps_recent_and_summary():
ctx = p.Context(system="s", budget=20, keep_recent=2)
for t in ["订单 A1", "好", "地址 上海 1 号", "嗯", "发票", "可以"]:
ctx.add("user", t)
assert len(ctx.messages) == 2 and "A1" in ctx.summary