人工智能
自主代理与AgentOps:增强AI应用的可观察性、可追溯性和其他功能

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












