Agents 课程文档

操作:使 Agent 能够与其环境互动

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

操作:使 Agent 能够与其环境互动

在本节中,我们将探讨 AI Agent 与其环境互动的具体步骤。

我们将介绍如何表示操作(使用 JSON 或代码)、停止和解析方法的重要性,并介绍不同类型的 Agent。

操作是 AI Agent 为了与其环境互动而采取的具体步骤

无论是浏览网页查找信息还是控制物理设备,每个操作都是 Agent 执行的有意识的操作。

例如,协助客户服务的 Agent 可能会检索客户数据、提供支持文章或将问题转交给人工客服代表。

Agent 操作的类型

有多种类型的 Agent 以不同的方式执行操作

Agent 类型 描述
JSON Agent 要执行的操作以 JSON 格式指定。
代码 Agent Agent 编写一个代码块,该代码块在外部进行解释。
函数调用 Agent 它是 JSON Agent 的一个子类别,经过微调,可以为每个操作生成一条新消息。

操作本身可以服务于多种目的

操作类型 描述
信息收集 执行网络搜索、查询数据库或检索文档。
工具使用 进行 API 调用、运行计算和执行代码。
环境互动 操作数字界面或控制物理设备。
沟通 通过聊天与用户互动或与其他 Agent 协作。

Agent 的一个关键部分是在操作完成时停止生成新 token 的能力,这对于所有 Agent 格式都是如此:JSON、代码或函数调用。这可以防止意外输出,并确保 Agent 的响应清晰而精确。

LLM 仅处理文本,并使用它来描述它想要采取的操作以及要提供给工具的参数。

停止和解析方法

实现操作的一个关键方法是停止和解析方法。此方法确保 Agent 的输出结构化且可预测

  1. 以结构化格式生成:

Agent 以清晰的、预定的格式(JSON 或代码)输出其预期操作。

  1. 停止进一步生成:

操作完成后,Agent 停止生成额外的 token。这可以防止额外的或错误的输出。

  1. 解析输出:

外部解析器读取格式化的操作,确定要调用的工具,并提取所需的参数。

例如,需要查询天气的 Agent 可能会输出

Thought: I need to check the current weather for New York.
Action :
{
  "action": "get_weather",
  "action_input": {"location": "New York"}
}

然后,框架可以轻松解析要调用的函数名称和要应用的参数。

这种清晰的、机器可读的格式最大限度地减少了错误,并使外部工具能够准确处理 Agent 的命令。

注意:函数调用 Agent 的操作方式类似,通过构造每个操作,以便使用正确的参数调用指定的函数。我们将在未来的单元中更深入地探讨这些类型的 Agent。

代码 Agent

另一种方法是使用代码 Agent。其理念是:代码 Agent 生成一个可执行代码块,而不是输出一个简单的 JSON 对象——通常使用像 Python 这样的高级语言。

Code Agents

这种方法有几个优点

  • 表达性: 代码可以自然地表示复杂的逻辑,包括循环、条件和嵌套函数,比 JSON 提供更大的灵活性。
  • 模块化和可重用性: 生成的代码可以包含可在不同操作或任务中重用的函数和模块。
  • 增强的可调试性: 凭借明确定义的编程语法,代码错误通常更容易检测和纠正。
  • 直接集成: 代码 Agent 可以直接与外部库和 API 集成,从而实现更复杂的操作,例如数据处理或实时决策。

例如,负责获取天气的代码 Agent 可能会生成以下 Python 代码片段

# Code Agent Example: Retrieve Weather Information
def get_weather(city):
    import requests
    api_url = f"https://api.weather.com/v1/location/{city}?apiKey=YOUR_API_KEY"
    response = requests.get(api_url)
    if response.status_code == 200:
        data = response.json()
        return data.get("weather", "No weather information available")
    else:
        return "Error: Unable to fetch weather data."

# Execute the function and prepare the final answer
result = get_weather("New York")
final_answer = f"The current weather in New York is: {result}"
print(final_answer)

在此示例中,代码 Agent

  • 通过 API 调用检索天气数据,
  • 处理响应,
  • 并使用 print() 函数输出最终答案。

此方法也遵循停止和解析方法,通过清晰地分隔代码块并指示执行何时完成(此处,通过打印 final_answer)。


我们了解到,操作通过执行清晰、结构化的任务(无论是通过 JSON、代码还是函数调用)来桥接 Agent 的内部推理及其与现实世界的互动。

这种有意识的执行确保每个操作都精确且准备好通过停止和解析方法进行外部处理。在下一节中,我们将探讨观察,以了解 Agent 如何捕获和整合来自其环境的反馈。

在此之后,我们将最终准备好构建我们的第一个 Agent!

< > 在 GitHub 上更新