用PydanticAI打造自己的写作管道

本文介绍一个用于生成结构化、基于 Markdown 文章的开源 Python 项目,结合了 AI 和 Pydantic AI。

用PydanticAI打造自己的写作管道

AI 可以比以往更快地写作,但你能信任它写的内容吗?大多数工具只给你段落,而没有计划,内容也没有清晰的推理。这个项目采取了不同的方法。它将 AI 转变为一个有结构的写作伙伴,解释其逻辑,遵循定义的大纲,并提供干净的、可直接发布的文章。

1、引言:从挫折到框架

当我开始使用 AI 来生成文章时,我对其流畅的写作印象深刻。然而,我很快意识到流畅性本身是不够的。许多文章缺乏适当的结构,有些想法重复或不一致,而且很难理解为什么 AI 做出了某些决定。这感觉像是在与一个黑箱合作,它给出了结果,却没有解释。

作为一位重视清晰和有序内容的人,我需要的不仅仅是精致的句子。我希望有一个工具,能够分步骤思考,在写作之前规划,并为每一个重大选择提供理由。这就是我发现的重要一点:如果在写作之前让 AI 解释其推理过程,最终的内容会变得更加可靠和一致。

通过在生成过程中加入推理,AI 就会被鼓励遵循自己的逻辑。这有助于内容保持专注并从头到尾保持自我一致性。每个部分都支持整体计划,每一段文字都反映了早期做出的决定。换句话说,推理起到了一个指南的作用,确保 AI 按照既定路线进行。

这个想法成为了我构建工具的基础。这是一个 AI 驱动的文章生成器,它首先创建详细的提纲,然后逐段撰写内容并提供完整的解释,最后生成干净的 Markdown 内容。它还保存了结构和推理在一个单独的 JSON 文件中,这使得审查、审计或重用更加容易。

在这篇文章中,我将向你展示我是如何使用 Python、GPT-4 和 Pydantic AI 构建这个系统的。你将看到推理如何提高内容质量,以及如何使用此工具生成既易读又可信的文章。

如果你想要的不仅是快速写作的 AI,而是需要组织良好、透明且一致的内容,那么这个工具可能是你正在寻找的解决方案。

2、真正的问题是什么?

许多人对大型语言模型的强大功能感到兴奋。这些模型可以撰写论文、博客、电子邮件,甚至代码。然而,大多数这些输出都有一个主要弱点:它们是在没有任何明确结构或可追溯推理的情况下创建的。内容可能看起来流畅,但往往缺乏方向、深度或内部一致性。

在大多数情况下,AI 生成的文章是单个提示的结果。没有大纲,没有计划,也没有关于如何选择或组织思想的方式的解释。如果 AI 提供了一个例子或做出了一个强有力的声明,通常没有方法来理解原因。这使得难以信任结果,特别是在技术或教育写作中。

另一个挑战是质量控制。由于无法访问 AI 的思维过程,检测薄弱部分、重复的想法或逻辑缺口变得困难。这通常会导致更多的手动工作。编辑或开发者不得不花时间重写甚至从头开始。

简而言之,当前的 AI 写作工具可能会快速产生结果,但它们不是为了可靠性、透明度或可重用性而设计的。它们对于头脑风暴或草稿很有用,但对于准备发布或构建的内容来说并不理想。

这就是我的项目旨在解决的问题。通过在写作前规划并要求 AI 解释每个决策,系统提高了质量和一致性。它将写作过程从单一输出转变为一个深思熟虑的流程。

3、这个工具能做什么?

这个工具是一个 AI 驱动的文章生成器,旨在创建清晰、结构化和教育性的内容。它使用一个多步骤的过程,其中 AI 首先计划文章,然后逐段撰写。最重要的是,AI 在每个阶段都解释其推理过程,这提高了整体质量和一致性。

第一步是计划。系统首先使用一个名为 PlannerAgent 的特殊 AI 代理。该代理接收主题和目标字数。然后它创建一个详细的提纲,将文章分为引言、几个主体部分和结论。每个部分都有一个清晰的标题、具体的子主题和估计的字数。策划者还包含对所选结构的书面解释。

在计划完成后,ContentWriterAgent 开始撰写每部分内容。它严格按照提纲进行,并生成干净的 Markdown 内容。每个部分都以教育语气书写,并在适当的时候包括图像或代码片段的建议。像策划者一样,作者也包括其推理过程。这确保了写作始终与早期定义的结构和目的保持一致。

第三个组件称为 ArticleGenerator,它协调整个过程。它处理输入,连接策划者和作者,并保存最终结果。输出包括三个文件:

  • 一个 Markdown 文件(article.md),包含文章,
  • 一个 JSON 文件,显示完整的结构和推理过程,
  • 以及一个包含基本项目信息的元数据文件。

总之,这些功能构成了一个完整的写作管道。该系统对开发人员、教育工作者以及任何希望生成高质量、透明且易于审查的文章的人来说都非常有用。

4、为什么我选择了 Pydantic AI

如今有许多工具可用于构建带有大型语言模型的应用程序。然而,大多数工具更注重快速结果而不是结构或长期可维护性。我需要的是不同的东西。我需要一种系统,它可以完全控制 AI 工作流,支持类型安全,并帮助在整个生成过程中强制执行一致性。这就是为什么我选择了 Pydantic AI

Pydantic AI 是由 Pydantic 和 FastAPI 团队创建的 Python 框架。它将相同的理念——清晰、可靠性和强类型——带入了 AI 应用的世界。使用 Pydantic AI,您可以定义使用特定模型、结构化模式和详细提示的代理。每个代理还可以包含内置的推理和验证功能,这使得系统更加值得信赖。

我选择 Pydantic AI 的主要原因之一是它对结构化输出的支持。当 AI 编写计划或段落时,输出会立即根据定义的模式进行检查。这确保了每个结果都是完整、格式良好的,并遵循预期的格式。如果出现问题,代理会自动重试,直到返回有效的响应。

另一个主要优势是灵活性。Pydantic AI 支持广泛的模型,包括 OpenAI、Anthropic、Gemini、Mistral 等等。它还允许依赖注入和对提示、工具和输出验证器的高级控制。这使得构建强大且易于维护的工作流变得简单。

Pydantic AI 给了我所需的一切:一种使用 Python 构建模块化、可解释且健壮的 AI 代理的方法。它帮助我从简单的提示转向一个完全管理的、基于模式的用于文章生成的管道。

5、它是如何工作的

这个项目基于一个简单但强大的理念:将写作过程分解成更小、更易理解的步骤,并使每个步骤透明。为了实现这一点,该工具使用了三个主要组件,它们像流水线一样协同工作。

5.1 PlannerAgent:创建大纲

第一步由 PlannerAgent 处理。该代理接收主题和目标字数。然后它生成文章的完整大纲。大纲包括引言、几个主体部分和结论。每个部分都有一个标题、一组子主题和估计的字数。

更重要的是,代理还提供了选择这种结构的理由。这一推理过程帮助 AI 在整个写作过程中保持一致性。

5.2 ContentWriterAgent:撰写每一节

一旦大纲准备就绪,ContentWriterAgent 就接管了。它以 Markdown 格式撰写文章的每一部分。写作严格遵循计划,并在需要时包括标题、代码块和图像占位符等格式元素。

就像策划者一样,作者也提供了其推理过程。这使得更容易理解 AI 如何解释大纲的每一部分,以及为什么以特定方式撰写内容。

5.3 ArticleGenerator:管理整个流程

ArticleGenerator 是核心,它连接一切。它协调策划者和作者,管理用户输入,并处理保存结果。它生成三个有用的文件:

  • 一个 Markdown 文件(article.md
  • 一个包含所有章节和推理的 JSON 文件 ( article.json)。
  • 一个存储主题、模型和设置的元数据文件 (project.json)。

通过结合使用这些组件,该工具可确保每篇文章结构合理、内部一致且易于审核。

使用这些组件一起工作,该工具确保每篇文章都结构良好、内部一致且易于审查。

6、示例:它可以创建什么?

要理解这个工具的潜力,最好的方法之一是看看它已经生成的内容。到目前为止,我已经使用生成器为从机器学习到哲学的各种主题撰写了完整长度的文章。每篇文章都遵循一个结构化的计划,包含内部推理,并以干净的Markdown格式书写。

以下是一些已完成文章的例子:

  • 机器学习入门(1,200字)[链接]
  • 降维介绍(3,000字)[链接]
  • 人工智能简介:从神经网络到深度学习(4,500字)[链接]
  • PID控制器:全面指南(3,000字)[链接]
  • 认知偏差:全面回顾(5,000字)[链接]
  • 逻辑谬误:批判性思维实用指南(5,000字)[链接]
  • 函数式编程入门(3,000字)[链接]
  • Git解密:版本控制如何推动现代软件开发(2,500字)[链接]
  • 教孩子编程:课程蓝图(4,000字)[链接]
  • 语言如何塑造思想:对语言相对性的探索(4,000字)[链接]

每篇文章都是在一个会话中生成的,并保存为完整的写作包。Markdown文件已准备好发布,而推理日志则使审查或调整任何部分内容变得容易。

这些例子表明,该工具不仅仅适用于基本摘要。它能够生成适合教育和专业用途的深入、结构化且有思想性的文章。

7、入门指南

该项目是开源的,并在GitHub上发布。你可以查看源代码、下载文件、探索结构并为其开发做出贡献。

点击这里访问GitHub仓库。

在存储库中,你将找到详细的安装说明、生成内容示例以及每个组件的完整文档。该项目易于设置,只需几步即可开始生成文章。

有两种主要方式可以使用此工具:

7.1 命令行

克隆存储库并安装依赖项后,你可以使用单个命令生成一篇文章:

python main.py "Your Topic Here" --word_count 1500

这将在output目录内创建一个新的文件夹。该文件夹包括:

  • 以Markdown格式的完整文章。
  • 包含文章部分和推理的结构化JSON文件。
  • 包含主题、模型和配置详细信息的元数据文件。

7.2 Python脚本

如果你更喜欢编写代码,可以将工具作为模块集成到你的Python项目中:

from article_generator import generate_article

markdown = generate_article("Benefits of Learning Python", word_count=2000)
print(markdown)

这种方法提供了更大的灵活性,并允许更深层次地集成到自定义工作流或应用程序中。

无论你是在创建教育内容、技术指南还是长篇文档,这个工具都可以轻松生成结构化、透明的文章。

8、高级用例

一旦尝试了基本示例,你可以开始探索工具的更多高级功能。该系统设计灵活且可定制,这使其适用于简单的文章生成之外的多种用例。

8.1 更改模型

你可以根据自己的偏好或可用API选择不同的语言模型。例如,可以使用来自OpenAI、Anthropic、Gemini、Cohere、Mistral等的模型。如果想使用特定模型,可以在命令行中更改--model参数或在代码中传递它。

python main.py "Intro to GitHub Actions" --word_count 1800 --model mistral:7b

要使用第三方LLM提供商或自托管模型,通常需要正确配置系统。这通常涉及在环境中设置API密钥或令牌。你可以通过直接在终端中导出它们或将它们放在项目的根目录中的.env文件中来完成此操作。这种设置允许Pydantic AI安全连接到您选择的模型。

8.2 自定义提示或风格

规划者和写手代理使用的提示可以在源代码中进行调整。这意味着可以引导AI遵循你偏好的语气、格式或教学风格。你还可以更改AI应在推理部分中包含多少解释。

此功能对于针对不同受众非常有用,例如初学者、专业人士或学生。

8.3 控制输出位置

默认情况下,该工具会将每篇文章保存在output目录内的时间戳文件夹中。您可以通过修改配置或直接从Python调用核心函数并指定自定义输出路径来更改此行为。

8.4 构建在管道之上

由于系统是模块化的,你可以替换或扩展其组件。例如,你可以:

  • 添加一个用于生成视觉内容的新代理。
  • 创建一个插件,将Markdown文件发布到博客。
  • 使用推理日志进行AI性能评估或调试。

这些高级功能使该工具不仅适用于作家和教育工作者,也适用于希望构建AI驱动内容系统的开发者。

9、这种方法为何有效

这个项目是为了解决当前AI写作工具存在的实际问题而构建的。许多这些工具速度快且流畅,但缺乏控制、可靠性和对内容生成方式的洞察力。通过结合结构化规划、透明推理和验证输出,这种方法提供了更有用、一致且值得信赖的内容。

以下是此系统效果良好的主要原因:

  • 透明决策

每个AI代理在生成输出之前都需要解释其推理。这一步骤鼓励AI与其自身计划保持一致,并让用户了解文章的每一部分是如何创建的。

  • 结构化且经过验证的输出

使用Pydantic AI,所有AI响应都会根据定义的模式进行验证。这可以防止不完整或格式错误的输出,并在缺失时自动重试。结果是一个更加稳定和可预测的生成过程。

  • 模块化设计

系统由独立的代理组成,这些代理可以重复使用、替换或扩展。如果您想改变写作风格或使用不同的模型,无需重建整个项目。这使得工具适应多种用例。

  • 可审计的结果

每篇文章都以Markdown和JSON格式保存。Markdown文件干净且准备就绪,而JSON文件包含结构和推理。这使得审查或调试生成过程变得容易,并支持质量控制工作流程。

这些设计选择共同创造了一个强大且可靠的AI写作管道。它们将AI转变为一个能够解释自己工作的创造性伙伴,而不是一个仅仅产生文本的神秘工具。

10、下一步想法和路线图

尽管当前版本的工具已经支持带有结构化推理的全文生成,但它在未来还有许多发展方向。这些改进将使系统更具交互性、可扩展性和与现实世界发布工具的集成度。

以下是我计划接下来探索的一些想法:

  • 交互式Web界面

一个简单的基于Web的用户界面将允许非技术人员无需编写代码即可生成文章。这也可以支持实时编辑、提示调整和一键下载Markdown文件。

  • 审查者或反馈代理

通过添加新的代理来审查每个部分或提出改进建议,管道可以从仅写作演变为写作加反馈。这将模拟人类作者与编辑合作的方式,从而提高整体质量。

  • 发布集成

直接导出到Notion、Ghost或静态站点生成器如Hugo和Jekyll等平台将使发布内容变得更加容易,而无需离开系统。这将帮助用户更快地将草稿变成实时帖子。

  • 图表和视觉内容支持

许多技术文章受益于图表、示意图或视觉摘要。通过与图像生成工具或图表代码库集成,系统可以根据每个部分的内容推荐甚至生成有用的视觉效果。

  • 多语言和语气适应

未来的版本可以包括多语言支持或提供不同风格的写作,如正式、口语化或学术性。这将使该工具能够服务于更多用户,并适用于更多场景。


原文链接:Build Your Own AI Writing Pipeline with Pydantic AI in Python

汇智网翻译整理,转载请标明出处