本快速入门将向你展示如何在几分钟内创建一个功能齐全的 AI 代理。
使用 AI 编码助手?

安装依赖项

安装以下软件包以便跟随学习:

设置 API 密钥

从任何受支持的模型提供商(例如 Google Gemini 或 OpenAI)获取 API 密钥。 设置 API 密钥,例如:
使用 LangSmith 网关LangSmith 网关通过 LangSmith 路由大多数主要提供商。你可以使用自己的提供商密钥,或者使用网关额度在没有提供商密钥的情况下访问模型。

构建一个基础代理

首先创建一个简单的代理,它可以回答问题和调用工具。此示例中的代理使用选定的语言模型、一个基本天气函数作为工具,以及一个简单的提示来指导其行为:
当你运行代码并提示代理告诉你旧金山的天气时,代理会利用该输入及其可用的上下文。 代理理解你是在询问旧金山市的天气,因此使用提供的城市名称调用天气工具。
你可以通过更改模型名称并设置相应的 API 密钥来使用任何受支持的模型。使用 LangSmith 跟踪代理内部发生的情况。请按照跟踪快速入门进行设置。我们建议你还设置 LangSmith Engine,它可以监控你的跟踪信息、检测问题并提出修复建议。

构建一个真实世界的代理

在下面的示例中,你将构建一个可以回答有关文本文件问题的研究代理。 在此过程中,你将探索以下概念:
  1. 用于改善代理行为的详细系统提示
  2. 与外部数据集成的创建工具
  3. 用于获得一致响应的模型配置
  4. 用于类似聊天交互的对话记忆
  5. 内置功能的深度代理
  6. 测试你的代理
1

定义系统提示

系统提示定义了你的代理的角色和行为。请保持其具体且可操作:
2

创建工具

工具允许模型通过调用你定义的函数与外部系统交互。 工具可以依赖于运行时上下文,也可以与代理记忆交互。此示例使用一个工具从给定 URL 加载文档:
Zod 是一个用于验证和解析预定义模式的库。你可以使用它来定义工具的输入模式,以确保代理仅使用正确的参数调用该工具。或者,你可以将 schema 属性定义为 JSON schema 对象。请注意,JSON 模式在运行时不会被验证。
3

配置你的模型

为你的用例设置合适的语言模型参数。例如:
根据所选的模型和提供商,初始化参数可能会有所不同;请参考其参考页面了解详细信息。
4

添加记忆

向你的代理添加记忆以在交互过程中维持状态。这允许代理记住以前的对话和上下文。
在生产环境中,请使用将消息历史保存到数据库的持久化检查点器。 请参阅添加和管理记忆了解更多详情。
5

创建并运行代理

现在,使用所有组件组装你的代理并运行它。创建代理有两个不同的框架:LangChain 代理和深度代理。 LangChain 和深度代理都为你提供了对工具、记忆等的精细控制。 两者的主要区别在于,深度代理内置了一系列常用的功能,如规划、文件系统工具和子代理。当你希望以最小的设置获得最大能力时,请使用深度代理;当你需要精细控制时,请选择 LangChain 代理。
由于代码调用模型时使用了《了不起的盖茨比》的完整文本,因此会消耗大量 token。你可以在下一步中查看示例输出。
让我们两者都尝试一下:
6

查看结果

结果会根据模型和执行情况而有所不同。
如果你查看两个选项卡上的输出,你会注意到 LangChain 代理提供了答案,但这些是估计值。该代理缺乏回答这个问题的工具。你也可能会遇到提示过长的错误。另一方面,深度代理可以:
  1. 使用内置的 write_todos 工具来规划其方法,分解研究任务。
  2. 通过调用 fetch_text_from_url 工具来加载文件,收集信息。
  3. 使用文件系统工具(grep 和 read_file)来管理上下文。
  4. 根据需要生成子代理,将复杂的子任务委托给专门的子代理。
对于 LangChain 代理,你必须实现更多功能才能获得类似水平的服务,并且可以根据需要随时进行自定义。

跟踪代理调用

你使用 LangChain 构建的大多数有趣的应用程序都会多次调用 LLM。随着这些应用程序变得更加复杂,能够检查代理内部究竟发生了什么变得非常重要。最好的方法是使用 LangSmith。 注册一个 LangSmith 账户并设置以下内容以开始记录跟踪信息:
设置完成后,再次运行你的脚本,然后在 LangSmith 上检查你的代理调用期间发生了什么。
要了解有关使用 LangSmith 跟踪你的代理的更多信息,请参阅 LangSmith 文档。我们建议你还设置 LangSmith Engine,它可以监控你的跟踪信息、检测问题并提出修复建议。

后续步骤

你现在拥有了可以:
  • 理解上下文并记住对话
  • 智能地使用工具
  • 以一致的格式提供结构化响应
  • 通过上下文处理用户特定信息
  • 在交互过程中维护对话状态
  • 规划、研究和综合(仅深度代理)
请继续: