支持永久记忆、持续学习、探索性解决复杂问题的Agent框架。
|
|
1 месяц назад | |
|---|---|---|
| docs | 1 месяц назад | |
| reson_agent | 1 месяц назад | |
| tests | 1 месяц назад | |
| .gitignore | 1 месяц назад | |
| README.md | 1 месяц назад | |
| pyproject.toml | 1 месяц назад |
可扩展、可学习的 Agent 框架,支持执行追踪和持久记忆。
@tool 装饰器自动注册工具,支持 Schema 生成、确认机制、参数编辑# 基础安装
pip install reson-agent
# 带 PostgreSQL 支持
pip install reson-agent[postgres]
# 完整安装
pip install reson-agent[all]
from reson_agent import AgentRunner
from reson_agent.storage import MemoryTraceStore
# 最简使用
runner = AgentRunner(
trace_store=MemoryTraceStore() # 内存存储,测试用
)
result = await runner.call(
messages=[{"role": "user", "content": "你好"}],
model="gpt-4o"
)
print(result.reply)
from reson_agent import AgentRunner
from reson_agent.storage import MemoryTraceStore, MemoryMemoryStore
from reson_agent.tools import tool
# 注册工具
@tool(
editable_params=["query"],
display={"zh": {"name": "搜索", "params": {"query": "关键词"}}}
)
async def search(query: str, uid: str = "") -> str:
"""搜索相关内容"""
return f"搜索结果: {query}"
# 创建 Runner
runner = AgentRunner(
trace_store=MemoryTraceStore(),
memory_store=MemoryMemoryStore(), # 可选,启用经验/技能
)
# 执行任务
async for event in runner.run(
task="帮我分析最近的阅读兴趣",
agent_type="researcher",
max_iterations=5
):
if event.type == "llm_delta":
print(event.data["delta"], end="")
elif event.type == "conclusion":
print(f"\n结论: {event.data['content']}")
# 对某个执行步骤给反馈
exp_id = await runner.add_feedback(
trace_id="trace_abc",
target_step_id="step_123",
feedback_type="correction",
content="搜索时应该限制在最近30天内"
)
一次完整的 LLM 交互,包含多个 Step。
@dataclass
class Trace:
trace_id: str
mode: Literal["call", "agent"] # 单次调用 or Agent 模式
status: Literal["running", "completed", "failed"]
# ...
Trace 中的一个原子操作。
@dataclass
class Step:
step_id: str
trace_id: str
step_type: Literal["llm_call", "tool_call", "tool_result", "conclusion", "feedback"]
parent_ids: List[str] # 形成 DAG
data: Dict[str, Any]
从执行或反馈中提取的规则。
@dataclass
class Experience:
condition: str # 什么情况下适用
rule: str # 应该怎么做
evidence: List[str] # step_ids 作为证据
从经验归纳的高层知识。
@dataclass
class Skill:
name: str
guidelines: List[str]
derived_from: List[str] # experience_ids
实现 TraceStore 和 MemoryStore Protocol 即可接入任何存储。
from reson_agent.storage import TraceStore, MemoryStore
class MyPostgresTraceStore(TraceStore):
async def create_trace(self, trace: Trace) -> str: ...
async def add_step(self, step: Step) -> str: ...
# ...
MIT