跳转到内容

PydanticAI 的可组合能力与扩展生态

PydanticAI 的可组合能力与扩展生态

学习目标

补充理解:

  • Agent Spec(YAML/JSON)声明式 Agent 定义
  • Harness Capability Library 的设计
  • 第三方 Capability 的接口约定

前置知识


1. Agent Spec:YAML 声明式定义

PydanticAI 支持通过 YAML/JSON 定义 Agent,无需代码:

model: anthropic:claude-sonnet-4-6
instructions: "You are a helpful assistant."
capabilities:
- type: thinking
effort: high
- type: web_search
local: duckduckgo
output_type:
type: tool
schema:
type: object
properties:
answer: { type: string }

限制

  • 只支持可序列化的 Capability——接受 callable 的 Capability(如 Hooks)不能用于 Spec
  • 工具函数需要通过 MCP 或外部工具集注册

2. Harness Capability Library

Pydantic AI Harness 提供可复用的 Capability 集合:

Capability用途
MemoryAgent 记忆管理
Guardrails输入/输出护栏
Cost Tracking费用追踪
Rate Limiting速率限制
Caching响应缓存

这些 Capability 可以作为第三方包安装:

Terminal window
pip install pydantic-ai-harness-memory

3. 第三方 Capability 接口约定

自定义 Capability 需要遵循 AbstractCapability 接口:

class MyCapability(AbstractCapability):
def get_toolset(self):
"""返回工具集(可选)"""
return None
def get_model_settings(self):
"""返回模型设置(可选)"""
return None
def get_instructions(self):
"""返回系统提示追加(可选)"""
return None
def get_native_tools(self):
"""返回原生工具列表(可选)"""
return []
# 生命周期钩子
def wrap_model_request(self, ctx, request_ctx, handler):
return await handler(request_ctx)

4. 与通用 Skill 设计的对比

维度通用 SkillPydanticAI Capability
注册方式配置文件/注册表构造函数参数或 YAML Spec
执行环境独立进程/容器同一进程内(中间件链)
组合方式Pipeline/OrchestratorCombinedCapability 拓扑排序
沙箱隔离执行共享进程(通过类型安全保障)
状态独立状态共享 GraphAgentState

PydanticAI 的 Capability 更接近中间件而非独立的 Skill——它们在同一个进程中执行,通过类型安全的接口通信,不需要进程隔离。