前言

这本书适合谁

你是一位对AI炒作持怀疑态度的软件工程师。

你看过演示。你试过各种框架。你亲眼目睹过你的LangChain应用因为产生幻觉而删除了生产数据库。于是你想:“一定有更好的方法。”

确实有。这本书是为那些想要真正理解AI代理运行时发生什么的开发者而写的。不是营销图表。不是“推理引擎“抽象概念。而是实际的HTTP请求。实际的while循环。

如果你会读Python,而且之前构建过网络应用或CLI工具,你就具备了所需的一切条件。

你将构建什么

Nanocode是一个在终端中运行的编码代理。在本书结束时,它将能够:

  • 读写你代码库中的文件
  • 执行shell命令
  • 使用纯Python搜索代码
  • 在会话之间保持上下文
  • 在执行危险操作前请求许可
  • 在网上搜索文档和答案

你将从零开始构建它,仅使用requestssubprocesspytest。不用LangChain。不用向量数据库。不用“编排框架“。只用可以用print()调试的Python代码。

唯一的例外是:第11章添加了用于网络搜索的ddgs——这是唯一一个轻量级依赖。

测试方法

本书采用“同步测试“方法。对于每个功能:

  1. 我们介绍概念——为什么需要这个功能
  2. 我们首先展示测试,这样你就知道成功的标准是什么
  3. 我们实现代码以通过测试
  4. 我们用pytest验证

这种方法教授了测试驱动开发的思维方式,而无需在书中完整展示红-绿-重构的仪式。它还解决了一个关键问题:你不能通过实际调用LLM来测试基于LLM的应用。API调用很慢、很贵,而且结果不确定。

从第3章开始,我们将介绍FakeBrain模式——一个能返回可预测响应的测试替身。这让你可以运行整个测试套件,而无需进行一次API调用或花费一分钱。

代码示例

本书遵循“代码优先“方法。每章都建立在前一章的基础上,每个代码示例都是从可运行文件中提取的。

获取代码:

  • **GitHub:**从GitHub克隆或下载。1
  • **Leanpub:**完整的源代码也包含在你购买后可下载的资源中。

代码按章节组织(ch01/ch02/等)。每个文件夹包含:

  • nanocode.py — 该章节完整的、可运行的代理代码
  • test_nanocode.py — 无需API调用即可验证代码的测试

你可以复制任何章节文件夹并从那里开始。运行pytest来验证你的代码是否符合预期行为。

本书使用的约定

在本书中,你会看到三种标注:

An icon of a warning1

**警告:**安全风险。请注意这些内容——忽视它们可能导致文件被删除或API密钥泄露。

An icon of a info-circle1

**旁注:**深入探讨和延伸内容。有用的背景知识,但首次阅读时可以跳过而不会影响主线理解。

代码讲解遵循一致的模式:首先是上下文(为什么需要这段代码),然后是代码本身,最后是重要部分的逐行解释。

现在开始编写代码吧。


  1. https://github.com/owenthereal/build-your-own-coding-agent↩︎