AI 模型与平台
基于AgentOps的自主代理:可观察性、可追溯性和超越,适用于您的AI应用程序
由基础模型(如大型语言模型(LLM))驱动的自主代理的增长,已经改变了我们解决复杂、多步骤问题的方式。这些代理执行从客户支持到软件工程的任务,导航复杂的工作流程,结合推理、工具使用和内存。
然而,随着这些系统的能力和复杂性不断增长,观察性、可靠性和合规性方面的挑战出现了。
这就是AgentOps的用途;一个概念,模仿DevOps和MLOps,但专为管理基于基础模型的代理的生命周期而设计。
什么是AgentOps?
AgentOps指的是设计、部署、监控和优化基于基础模型的自主代理所需的端到端流程、工具和框架。其目标是:
- 可观察性: 提供对代理执行和决策过程的完整可见性。
- 可追溯性: 捕获代理生命周期中的详细工件,以用于调试、优化和合规性。
- 可靠性: 通过监控和健壮的工作流程确保一致且可靠的输出。
在其核心,AgentOps超越了传统的MLOps,强调迭代、多步骤的工作流程、工具集成和自适应内存,同时保持严格的跟踪和监控。
AgentOps解决的关键挑战
1. 代理系统的复杂性
自主代理处理跨越广泛的动作空间的任务,需要在每一步都进行决策。这种复杂性需要复杂的规划和监控机制。
2. 可观察性要求
高风险的使用场景(例如医疗诊断或法律分析)需要细粒度的可追溯性。遵守欧盟AI法等法规进一步强调了强大的可观察性框架的必要性。
3. 调试和优化
在多步骤工作流程中识别错误或评估中间输出是没有代理操作详细跟踪的情况下具有挑战性的。
4. 可扩展性和成本管理
将代理扩展到生产环境需要监控延迟、令牌使用和运营成本等指标,以确保在不损害质量的情况下实现效率。
AgentOps平台的核心功能
1. 代理创建和自定义
开发人员可以使用组件注册表配置代理:
- 角色: 定义职责(例如研究人员、规划者)。
- 防护栏: 设置约束以确保道德和可靠的行为。
- 工具包: 启用与API、数据库或知识图的集成。
代理被构建为与特定的数据集、工具和提示交互,同时保持遵守预定义的规则。
2. 可观察性和跟踪
AgentOps捕获详细的执行日志:
- 跟踪: 记录代理工作流程中的每一步,从LLM调用到工具使用。
- 跨度: 将跟踪分解为细粒度的步骤,例如检索、嵌入生成或工具调用。
- 工件: 跟踪中间输出、内存状态和提示模板,以帮助调试。
可观察性工具,如Langfuse或Arize,提供仪表板来可视化这些跟踪,帮助识别瓶颈或错误。
3. 提示管理
提示工程在形成代理行为方面发挥着重要作用。关键功能包括:
- 版本控制: 跟踪提示的迭代以进行性能比较。
- 注入检测: 识别提示中的恶意代码或输入错误。
- 优化: 技术,如Chain-of-Thought(CoT)或Tree-of-Thought,提高推理能力。
4. 反馈集成
人工反馈对于迭代改进至关重要:
- 显式反馈: 用户评估输出或提供评论。
- 隐式反馈: 指标,如任务时间或点击率,用于分析有效性。
此反馈循环改进了代理的性能和用于测试的评估基准。
5. 评估和测试
AgentOps平台促进了对以下方面的严格测试:
- 基准: 将代理性能与行业标准进行比较。
- 逐步评估: 评估工作流程中的中间步骤以确保正确性。
- 轨迹评估: 验证代理采取的决策路径。
6. 内存和知识集成
代理利用短期内存来处理上下文(例如对话历史),利用长期内存来存储过去任务的见解。这样使代理能够动态适应,同时保持一致性。
7. 监控和指标
综合监控跟踪:
- 延迟: 测量响应时间以进行优化。
- 令牌使用: 监控资源消耗以控制成本。
- 质量指标: 评估相关性、准确性和毒性。
这些指标在用户会话、提示、工作流等维度上进行可视化,使实时干预成为可能。
可追溯工件的分类法
该论文引入了一种对支撑AgentOps可观察性的工件的系统分类法:
- 代理创建工件: 关于角色、目标和约束的元数据。
- 执行工件: 工具调用、子任务队列和推理步骤的日志。
- 评估工件: 基准、反馈循环和评分指标。
- 跟踪工件: 会话ID、跟踪ID和跨度用于细粒度监控。
这种分类法确保了代理生命周期中的一致性和清晰度,使调试和合规性更加易于管理。
AgentOps(工具)演练
本节将指导您完成设置和使用AgentOps来监控和优化您的AI代理的过程。
步骤1:安装AgentOps SDK
使用您喜欢的Python包管理器安装AgentOps:
pip install agentops
步骤2:初始化AgentOps
首先导入AgentOps并使用您的API密钥初始化它。将API密钥存储在一个.env文件中以确保安全:
# 初始化AgentOps使用API密钥 import agentops import os from dotenv import load_dotenv <p># 加载环境变量 load_dotenv() AGENTOPS_API_KEY = os.getenv("AGENTOPS_API_KEY")</p> <p># 初始化AgentOps客户端 agentops.init(api_key=AGENTOPS_API_KEY, default_tags=["my-first-agent"])</p>
此步骤为应用程序中的所有LLM交互设置了可观察性。
步骤3:使用装饰器记录操作
您可以使用@record_action装饰器来记录特定的函数,它会跟踪它们的参数、执行时间和输出。以下是一个示例:
from agentops import record_action <p>@record_action("custom-action-tracker") def is_prime(number): """检查一个数字是否为素数。""" if number &lt; 2: return False for i in range(2, int(number**0.5) + 1): if number % i == 0: return False return True</p>
该函数现在将在AgentOps仪表板中记录,提供执行时间和输入输出跟踪的指标。
步骤4:跟踪命名代理
如果您使用命名代理,请使用@track_agent装饰器将所有操作和事件绑定到特定的代理。
from agentops import track_agent <p>@track_agent(name="math-agent") class MathAgent: def __init__(self, name): self.name = name</p> <p>def factorial(self, n): """递归计算阶乘。""" return 1 if n == 0 else n * self.factorial(n - 1)</p>
代理内的任何操作或LLM调用现在都与"math-agent"标签关联。
步骤5:多代理支持
对于使用多个代理的系统,您可以跨代理跟踪事件以获得更好的可观察性。以下是一个示例:
@track_agent(name="qa-agent")
class QAAgent:
def generate_response(self, prompt):
return f"响应: {prompt}"
<p>@track_agent(name="developer-agent")
class DeveloperAgent:
def generate_code(self, task_description):
return f"# 要执行的代码: {task_description}"</p>
<p>qa_agent = QAAgent()
developer_agent = DeveloperAgent()</p>
<p>response = qa_agent.generate_response("解释AI中的可观察性。")
code = developer_agent.generate_code("计算斐波那契数列")</p>
每个调用都将在AgentOps仪表板中显示在其代理的跟踪中。
步骤6:结束会话
要指示会话的结束,请使用end_session方法。可选地,包括会话状态(Success或Fail)和原因。
# 会话结束 agentops.end_session(state="Success", reason="完成工作流")
这确保所有数据都记录并在AgentOps仪表板中可访问。
步骤7:在AgentOps仪表板中可视化
访问AgentOps仪表板以探索:
- 会话回放: 步骤执行跟踪。
- 分析: LLM成本、令牌使用和延迟指标。
- 错误检测: 识别和调试故障或递归循环。
增强示例:递归思维检测
AgentOps还支持检测代理工作流程中的递归循环。让我们通过递归检测来扩展前面的示例:












