Skip to main content

概述

本指南演示如何使用 Deep Agents 从零开始构建一个内容写作智能体。 您将构建的智能体能够:
  1. AGENTS.md 和技能文件夹加载品牌语调和流程规则
  2. 将网络研究任务委托给具备 web_search 功能的专用子智能体
  3. 根据加载的技能起草博客或社交媒体内容
  4. 使用 Gemini 生成封面或社交媒体图片,并将文件保存在项目目录下
本教程中的代码集成了图像生成工具和文件系统后端,使智能体能够在项目目录下读取和写入文章、研究笔记和图像。有关完整的可运行项目,请参阅 content-builder-agent 示例。

核心概念

本教程涵盖:

先决条件

API 密钥:
  • Anthropic (Claude)
  • Google (Gemini),用于通过 gemini-2.5-flash-image 生成图像
  • Tavily 用于网络搜索(免费套餐)
  • LangSmith 用于追踪(可选)
Python 3.11 或更高版本。

设置

1

创建项目目录

2

安装依赖

在您自己的项目中,请将 deepagents 固定在一个支持的版本范围内(例如 >=0.3.5,<0.4.0),以匹配上游示例。
3

设置 API 密钥

添加配置文件

示例将行为保存在三种文件中:记忆、技能和子智能体定义。
1

添加 AGENTS.md

在项目根目录创建 AGENTS.md。 当您稍后创建智能体并将此文件指定为 记忆 参数的一部分时,它会被加载到系统提示中,从而使品牌语调和研究要求适用于每次运行。
要使此智能体符合您自己的语调、支柱和格式规则,请更新 AGENTS.md 中的文本。
2

添加 subagents.yaml

创建一个名为 subagents.yaml 的文件。 然后添加以下文本,其中描述了一个 researcher 子智能体,它具备 Tavily 支持的 web_search 工具、一个 Haiku 模型 ID,以及将发现保存到您在主智能体委托时指定的路径的说明:
该文件稍后在创建深度智能体时作为参数传递。
3

添加技能

创建一个 skills/ 目录。每个技能都是一个包含 SKILL.md 文件的文件夹,该文件包含 YAML 前言(namedescription)和技能说明。创建 skills/blog-post/SKILL.md 并将以下文本复制到其中,其中包含关于创建长篇博文、优化 SEO 内容和生成封面图像的信息。
接下来,创建 skills/social-media/SKILL.md 并将以下文本复制到其中,其中包含关于起草社交媒体帖子和生成配套图像的信息:
它们指示智能体首先调用 researcher 子智能体,在 blogs/linkedin/tweets/ 下写入 Markdown,并调用 generate_covergenerate_social_image 来生成图像。当您稍后创建智能体并指定技能文件夹时,这些技能文件夹中的 SKILLS.md 文件的前言会被加载到系统提示中,以便当任务描述匹配技能描述时,智能体可以使用该技能。

构建脚本

在项目根目录创建 content_writer.py。以下部分按顺序属于同一个文件。
1

添加工具

研究员子智能体使用 Tavily 搜索。 博客和社交媒体工作流使用 Gemini 图像生成。 稍后创建智能体时,load_subagents 函数会读取 subagents.yaml 并将工具名称解析为这些装饰函数。
2

创建智能体

使用 create_deep_agent 创建深度智能体时,传递记忆路径、技能目录、图像工具、来自 YAML 的子智能体,以及一个根目录为示例目录的 FilesystemBackend,以便像 ./AGENTS.md./skills/ 这样的路径能够正确解析。
3

添加入口点

使用用户消息调用智能体以验证其是否正常工作:

运行智能体

文件系统后端可以读取、写入和删除 root_dir 下的文件。仅在专用目录中运行,并在发布前检查生成的内容。
从项目目录,您可以在不传递参数的情况下调用智能体,或者通过将提示作为参数传递:
设置 LANGSMITH_API_KEY 后,您可以在 LangSmith 中检查运行情况。

输出

成功时,生成的工件会写入系统临时目录(在 macOS 和 Linux 上,通常在 /tmp/ 下),而不是您的项目文件旁边。
路径遵循 SKILL.md 中的技能说明。

完整代码

在 GitHub 上浏览完整的 content-builder-agent 示例,包括基于 Rich 的流式 UI。

后续步骤

  • 编辑 AGENTS.md 以更改品牌语调和研究要求
  • skills/<name>/SKILL.md 下添加新内容类型的技能
  • subagents.yaml 中添加子智能体,并在 load_subagents 中注册工具
  • 阅读 子智能体技能自定义 以进行更深入的配置