具有 AgentOps 的自主代理:AI 应用程序的可观察性、可追溯性及其他功能

大型语言模型 (LLM) 等基础模型 (FM) 带来的自主代理的发展彻底改变了我们解决复杂、多步骤问题的方式。这些代理执行从客户支持到软件工程的各种任务,并驾驭结合推理、工具使用和记忆的复杂工作流程。
然而,随着这些系统的功能和复杂性不断增长,可观察性、可靠性和合规性方面的挑战也随之出现。
这就是 AgentOps 的用武之地;该概念以 DevOps 和 MLOps 为模型,但专门用于管理基于 FM 的代理的生命周期。
为了对 AgentOps 及其在实现基于 FM 的自主代理的可观察性和可追溯性方面的关键作用提供基础性的理解,我从最近的论文中汲取了一些见解 用于实现基于基础模型的代理的可观察性的 AgentOps 分类 作者:董黎明、陆清华和朱黎明。本文对 AgentOps 进行了全面探讨,强调了其在管理自主代理生命周期(从创建和执行到评估和监控)中的必要性。作者对可跟踪工件进行了分类,提出了可观察性平台的关键特性,并解决了决策复杂性和法规遵从性等挑战。
而 A管理操作 (该工具)作为监控、调试和优化人工智能代理的领先工具之一,已经获得了广泛的关注(如 AUTOGEN在下文中,我们将讨论 AI 操作(Ops),即更广泛的人工智能操作概念。
尽管如此,AgentOps(该工具)通过会话重播、LLM 成本跟踪和合规性监控等功能为开发人员提供了对代理工作流程的洞察。作为 AI 中最受欢迎的 Ops 工具之一,我们将在本文后面通过教程介绍其功能。
什么是 AgentOps?
AgentOps 是指在生产中设计、部署、监控和优化基于 FM 的自主代理所需的端到端流程、工具和框架。其目标是:
- 可观察性: 提供代理的执行和决策过程的全面可见性。
- 可追溯性: 捕获代理生命周期内的详细工件,以进行调试、优化和合规性检查。
- 可靠性: 通过监控和强大的工作流程确保一致且可信赖的输出。
从本质上讲,AgentOps 超越了传统的 MLOps,强调迭代、多步骤工作流、工具集成和自适应内存,同时保持严格的跟踪和监控。
AgentOps 解决的关键挑战
1. 的复杂性 代理系统
自主代理在广阔的行动空间中处理任务,每一步都需要决策。这种复杂性需要复杂的规划和监控机制。
2. 可观测性要求
医疗诊断或法律分析等高风险用例需要精细的可追溯性。遵守欧盟人工智能法案等法规进一步凸显了对强大的可观察性框架的需求。
3. 调试和优化
如果没有代理操作的详细痕迹,识别多步骤工作流程中的错误或评估中间输出将非常困难。
4. 可扩展性和成本管理
生产的扩展代理需要监控延迟、令牌使用情况和运营成本等指标,以确保效率而不影响质量。
AgentOps 平台的核心功能
1. 代理创建和定制
开发人员可以使用组件注册表来配置代理:
- 角色: 明确职责(例如研究员、规划师)。
- 护栏: 设置约束以确保行为合乎道德且可靠。
- 工具包: 实现与 API、数据库或知识图谱的集成。
代理旨在与特定数据集、工具和提示进行交互,同时保持符合预定义的规则。
2.可观察性和追踪性
AgentOps 捕获详细的执行日志:
- 痕迹: 记录代理工作流程中的每个步骤,从 LLM 调用到工具使用。
- 跨度: 将跟踪分解为细粒度的步骤,例如检索、嵌入生成或工具调用。
- 伪像: 跟踪中间输出、内存状态和提示模板以帮助调试。
Langfuse 或 Arize 等可观察性工具提供了可视化这些跟踪的仪表板,帮助识别瓶颈或错误。
3. 及时管理
及时工程在形成代理行为方面发挥着重要作用。主要功能包括:
- 版本控制: 跟踪提示的迭代以进行性能比较。
- 注入检测: 识别提示中的恶意代码或输入错误。
- 优化: 思路链(CoT)或思路树等技术可以提高推理能力。
4.反馈整合
人类的反馈对于迭代改进仍然至关重要:
- 明确反馈: 用户对输出进行评分或者提供评论。
- 隐性反馈: 通过分析任务时间或点击率等指标来衡量有效性。
这个反馈循环既完善了代理的性能,也改进了用于测试的评估基准。
5. 评估和测试
AgentOps 平台有利于进行以下方面的严格测试:
- 基准测试: 将代理商的表现与行业标准进行比较。
- 逐步评估: 评估工作流程中的中间步骤以确保正确性。
- 轨迹评估: 验证代理采取的决策路径。
6.记忆与知识整合
代理利用短期记忆来记录上下文(例如对话历史),并利用长期记忆来存储过去任务的见解。这使代理能够动态适应,同时保持一致性。
7. 监控和指标
全面的监控轨迹:
- 潜伏: 测量响应时间以进行优化。
- 代币用途: 监控资源消耗以控制成本。
- 质量指标: 评估相关性、准确性和毒性。
这些指标在用户会话、提示和工作流等维度上实现可视化,从而实现实时干预。
可追溯文物的分类
本文介绍了支持 AgentOps 可观察性的系统工件分类:
- 代理创建工件: 关于角色、目标和约束的元数据。
- 执行工件: 工具调用、子任务队列和推理步骤的日志。
- 评估工件: 基准、反馈循环和评分指标。
- 追踪文物: 用于细粒度监控的会话 ID、跟踪 ID 和跨度。
这种分类法确保了整个代理生命周期的一致性和清晰度,使得调试和合规性更易于管理。
代理操作 (工具)演练
这将指导您设置和使用 AgentOps 来监控和优化您的 AI 代理。
步骤 1:安装 AgentOps SDK
使用您喜欢的 Python 包管理器安装 AgentOps:
pip install agentops
步骤 2:初始化 AgentOps
首先,导入 AgentOps 并使用您的 API 密钥对其进行初始化。将 API 密钥存储在 .env
安全文件:
# Initialize AgentOps with API Key
import agentops
import os
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
AGENTOPS_API_KEY = os.getenv("AGENTOPS_API_KEY")
# Initialize the AgentOps client
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):
"""Check if a number is prime."""
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):
"""Calculate factorial recursively."""
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"Responding to: {prompt}"
@track_agent(name="developer-agent")
class DeveloperAgent:
def generate_code(self, task_description):
return f"# Code to perform: {task_description}"
qa_agent = QAAgent()
developer_agent = DeveloperAgent()
response = qa_agent.generate_response("Explain observability in AI.")
code = developer_agent.generate_code("calculate Fibonacci sequence")
每个呼叫都将出现在 AgentOps 仪表板中其各自代理的跟踪下。
步骤 6:结束会话
要发出会话结束信号,请使用 end_session
方法。可选地,包括会话状态 (Success
or Fail
) 及其原因。
# End of session
agentops.end_session(state="Success", reason="Completed workflow")
这可确保所有数据都已记录并可在 AgentOps 仪表板中访问。
步骤 7:在 AgentOps 仪表板中可视化
访问 AgentOps 仪表板 探索:
- 会话重播: 逐步执行的跟踪。
- 分析: LLM 成本、令牌使用情况和延迟指标。
- 错误检测: 识别并调试故障或递归循环。
增强示例:递归思维检测
AgentOps 还支持检测代理工作流中的递归循环。让我们使用递归检测来扩展前面的示例:
@track_agent(name="recursive-agent")
class RecursiveAgent:
def solve(self, task, depth=0, max_depth=5):
"""Simulates recursive task solving with depth control."""
if depth >= max_depth:
return f"Max recursion depth reached for task: {task}"
return self.solve(task, depth + 1)
recursive_agent = RecursiveAgent()
output = recursive_agent.solve("Optimize database queries")
print(output)
AgentOps 将把递归记录为会话的一部分,帮助您识别无限循环或过度深度。
总结
由 LLM 等基础模型驱动的自主 AI 代理重新定义了我们处理跨行业复杂、多步骤问题的方式。然而,它们的复杂性在可观察性、可追溯性和可靠性方面带来了独特的挑战。AgentOps 作为一个不可或缺的框架,为开发人员提供了在整个生命周期内监控、优化和确保 AI 代理合规性的工具。