开发与工程 multi-agent-orchestrationhybrid-ragstructured-outputguardrailsmcp-integrationsse-streamingaudit-logging

Selectools

用纯 Python 构建、编排并部署带安全控制的多智能体应用。

FollowAgents 评估 · FARS-2.1
谨慎使用
65/ 100 五分制 3.3 / 5
1 2 3 4 5 6
按维度查看评分与理由
1信任安全18 / 29 · 3.1/5

证据显示:工具执行有审批机制(ToolConfig.require_approval),shell 工具使用 shell=False 且 shlex 解析,SSRF 防护覆盖浏览器工具和 webhook,有审计日志和 PII 处理选项。扣分:rollback 仅提及会话存储和检查点,未明确工具执行的回滚机制;发布者身份未验证,但未因此扣分。

2可靠稳定9 / 14 · 3.2/5

证据显示:README 和 CHANGELOG 描述一致,测试文件存在且使用 FakeProvider,CI 配置了多 Python 版本测试。扣分:未提供依赖可用性证明(如锁文件),失败消息仅部分提及(如 GuardrailError 带 trace)。

3适用触发12 / 18 · 3.3/5

证据显示:README 明确目标用户为开发者,提供多种构建方式(单代理、图、部署),支持多种 provider,有环境适配(Python 3.10+,可选依赖)。扣分:能力边界在 README 中未完全明确(如 beta 模块列表),触发精度(如 guardrail 触发条件)在文档中未详细说明。

4规范维护12 / 18 · 3.3/5

证据显示:README 结构清晰,有安装说明(pip install),命名稳定(@stable 标记),有示例和 FAQ(examples 目录),已知限制(如 beta 模块),Apache-2.0 许可证,版本变更日志(CHANGELOG.md),维护责任(NichevLabs 联系方式)。扣分:无重大扣分,但安装说明未覆盖所有可选依赖的安装方式。

5有效结果9 / 13 · 3.5/5

证据显示:输出可用性高(AgentResult 结构化),边际价值明显(多代理、RAG、guardrails),成本效益有成本跟踪功能。扣分:成本效益未提供实际基准数据,仅提及性能基准文档。

6证据核验5 / 8 · 3.1/5

证据显示:README 中的声明(如测试数量、模型数量)在 CHANGELOG 和 pyproject 中有部分佐证,但未提供独立验证。扣分:事实与推断未明确分离,如“50 evaluators”等数字未在源码中直接验证。

证据充分度: 评估于 2026年8月9日 审查版本 77fa691ad9c2
使用前请注意
  • 发布者身份未验证,需谨慎对待供应链风险。
  • 依赖版本范围较宽,建议使用锁文件确保可复现性。
  • 部分安全功能(如 guardrails)依赖启发式模式,可能被绕过。
  • rollback 能力有限,工具执行副作用可能无法完全回滚。
评估证据 [1][2][3][4][5][6][7]
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Selectools 是一个 Python 3.10+ 的 AI 智能体框架,核心接口包括 Agent、AgentGraph、Pipeline 与多种模式化智能体。它可通过 OpenAI、Azure OpenAI、Anthropic、Gemini、Ollama 和 LiteLLMProvider 调用模型,并支持 FallbackProvider 与 RouterProvider。一次 agent.run() 会产出 AgentResult,其中包含内容、结构化解析结果、用量和执行 trace;astream() 则提供流式 StreamChunk 与最终结果。框架包含工具调用、四阶段 guardrail、JSONL 审计日志、会话与记忆、混合 RAG、MCP 和评测组件。它既可作为库嵌入 Python 服务,也可用 selectools serve agent.yaml 部署 HTTP/SSE 服务,或通过 AgentAPI 构建 Starlette ASGI 应用。

开发者将带有 @tool 的 Python 函数、Provider 和 AgentConfig 传给 Agent。Agent.run() 或 Agent.ask() 向模型发起调用、处理原生工具调用,并可在执行前后经过 input、output、tool_args、tool_results 四个 guardrail 阶段;结果以 AgentResult 返回,trace 记录模型调用和工具执行。AgentGraph 可按节点与边运行多个智能体,Pipeline、@step、parallel() 与 branch() 可组合普通同步或异步步骤。RAGAgent 可从目录创建检索智能体;HybridSearcher 将 BM25 与向量检索融合,并可使用重排序。selectools serve agent.yaml 可提供 HTTP 与 SSE 流式接口,AgentAPI 则提供 POST /v1/chat、会话 CRUD 与可选 bearer 认证。

  1. Python 后端团队要把 OpenAI 或 Anthropic 的工具调用助手接入现有服务,并需要 trace、重试、预算限制和流式输出。
  2. 需要将规划、写作和审核分别交给多个智能体,并以 AgentGraph.chain() 或显式有向图编排执行顺序的应用团队。
  3. 拥有本地文档库的内部知识助手,想用 RAGAgent、向量存储、BM25 与向量融合检索回答问题。
  4. 处理发邮件、创建资源或删除类工具的业务系统,需要 ToolPolicy、审批回调、guardrail 和 AuditLogger 记录执行边界。
  5. 需要将 Python 智能体公开为 REST/SSE 接口,并要求会话隔离、会话存储或 Starlette ASGI 部署的工程团队。

这个 Agent 有哪些优点和局限?

优点
  • 以 AgentGraph、Pipeline 和 | 运算符提供纯 Python 的多智能体图与步骤组合,不要求专用 DSL 或编译步骤。
  • 结构化输出同时支持本地校验,以及 OpenAI/Azure 和 Gemini 的原生 JSON Schema 约束,并以 structured_status 表达结果状态。
  • 安全控制覆盖输入、输出、工具参数和工具结果四个阶段;AuditLogger 可写入带隐私控制与轮转的 JSONL 记录。
  • 可在同一框架内使用六类模型提供方、故障回退、成本路由,以及 AgentAPI 的 REST/SSE 服务边界。
局限
  • 最低运行版本是 Python 3.10;Python 3.9 用户需固定在 selectools<1.0 或迁移运行环境。
  • 不同功能依赖可选安装包和外部服务,例如 RAG、Redis、PostgreSQL、Supabase、MongoDB、DynamoDB、MCP 或可观测性后端。
  • 云端 Provider 需要相应 API 凭据和网络连接;模型能力与原生结构化输出支持会因提供方而异。
  • 部分模块仍标记为 beta,包括 RAG/embeddings、MCP、A2A、评测目录、统一记忆、调度器和较新的后端,1.x 中仍可能演进。

如何安装或部署这个 Agent?

运行 pip install selectools。运行环境需为 Python 3.10+。如需调用云端模型,在项目根目录的 .env 中配置相应凭据,例如 OPENAI_API_KEY=sk-...;也可使用 ANTHROPIC_API_KEYGEMINI_API_KEY。可选功能使用额外依赖安装,例如 pip install selectools[rag]pip install selectools[observe]pip install selectools[mcp]

如何使用这个 Agent?

可先用无需 API key 的 LocalProvider:from selectools import Agent, AgentConfig, tool,再从 selectools.providers.stubs 导入 LocalProvider。用 @tool(description="...") 定义函数,然后创建 Agent(tools=[你的工具], provider=LocalProvider(), config=AgentConfig(max_iterations=3)),调用 result = agent.ask("你的请求") 并读取 result.content。使用 OpenAI 时改用 OpenAIProvider,并配置 OPENAI_API_KEY。部署 YAML 定义的智能体时可运行 selectools serve agent.yaml;用 AgentAPI(agent, auth_key="secret") 可将单个智能体包装为 Starlette ASGI 应用。

这个 Agent 与同类方案有什么区别?

仓库将其与 LangChain/LangGraph 对比:Selectools 以 AgentGraph.chain(a, b, c).run(prompt)@step| 表达图与流水线,并内置评测与 trace;LangChain/LangGraph 的对应示例使用 StateGraph/compile() 和 LCEL Runnable。是否迁移仍取决于现有 LangChain 依赖与所需集成。

常见问题

能否不使用 OpenAI?
可以。文档列出 Azure OpenAI、Anthropic、Gemini、Ollama 和 LiteLLMProvider;FallbackProvider 可按优先级切换提供方。
如何控制调用成本或失控循环?
AgentConfig 提供 max_total_tokens、max_cost_usd 和迭代上限;RouterProvider 可按复杂度选择模型层级,工具结果还可启用压缩。
它会执行危险工具吗?
工具可配合 ToolPolicy 的 allow/review/deny 规则、审批回调和四阶段 guardrail 使用;工具执行行为仍由应用注册的工具函数及其权限决定。
是否提供生产部署接口?
提供。selectools serve agent.yaml 支持 HTTP 与 SSE;AgentAPI 可构建含聊天、流式响应、会话 CRUD 和 bearer 认证的 Starlette ASGI 应用。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents