はじめに

対象読者

あなたはAIの誇大宣伝に懐疑的なソフトウェアエンジニアです。

デモを見てきました。フレームワークも試してきました。LangChainアプリが的外れな応答を繰り返し、本番環境のデータベースを削除してしまうのも目にしてきました。そして考えます:*「もっと良い方法があるはずだ」*と。

実際にあります。この本は、AIエージェントが実行されるときに実際に何が起きているのかを理解したい開発者のために書かれています。マーケティング用の図解ではありません。「推論エンジン」という抽象的な概念でもありません。実際のHTTPリクエストです。実際のwhileループです。

Pythonが読めて、ウェブアプリやCLIツールを作ったことがあれば、必要な知識は十分です。

作成するもの

Nanocodeは、ターミナルで動作するコーディングエージェントです。この本を読み終える頃には、以下のことができるようになります:

  • コードベース内のファイルの読み書き
  • シェルコマンドの実行
  • ピュアPythonを使用したコード検索
  • セッション間でのコンテキストの保持
  • 危険な操作の前に許可を求める
  • ドキュメントや回答をウェブで検索する

これをrequestssubprocesspytestだけを使って一から構築します。LangChainは使いません。ベクトルデータベースも使いません。「オーケストレーションフレームワーク」も使いません。print()でデバッグできるPythonだけです。

唯一の例外:第11章でウェブ検索用にddgsを追加します—軽量な依存関係を1つだけ使用します。

テストアプローチ

本書では「テストと並行」アプローチを採用しています。各機能について:

  1. コンセプトを紹介します—なぜこれが必要なのか
  2. まずテストを示し、成功の形を理解します
  3. テストをパスするコードを実装します
  4. pytestで検証します

これにより、印刷物での完全なred-green-refactorのセレモニーなしにテスト駆動開発の考え方を学べます。また、重要な問題も解決します:LLMを実際に呼び出してLLM駆動のアプリケーションをテストすることはできません。API呼び出しは遅く、高価で、非決定的だからです。

第3章では、FakeBrainパターンを導入します—予測可能なレスポンスを返すテストダブルです。これにより、1回のAPI呼び出しも行わず、1セントも使わずに、テストスイート全体を実行できます。

コード例

本書は「コードファースト」アプローチに従います。各章は前の章の内容を基に構築され、すべてのコード例は動作するファイルから抽出されています。

コードの入手方法:

  • GitHub: GitHubからクローンまたはダウンロード1
  • Leanpub: 購入時のダウンロード可能なリソースに完全なソースコードが含まれています

コードは章ごとに整理されています(ch01/ch02/など)。各フォルダには以下が含まれます:

  • nanocode.py — その章の完全な実行可能なエージェント
  • test_nanocode.py — API呼び出しなしでコードが動作することを検証するテスト

任意の章のフォルダをコピーしてそこから始めることができます。pytestを実行して、コードが期待される動作と一致することを確認できます。

本書で使用される表記規則

本書全体を通して、3種類の注釈が登場します:

An icon of a warning1

警告: セキュリティまたは安全性のリスクです。これらに注意を払ってください—無視するとファイルが削除されたりAPIキーが漏洩したりする可能性があります。

An icon of a info-circle1

補足: 深掘りと余談です。有用な背景情報ですが、初回の読書では本筋を失わずにスキップできます。

コードの解説は一貫したパターンに従います:まずコンテキスト(なぜこのコードが必要か)、次にコード自体、そして重要な部分の行ごとの説明です。

それでは、コードを書き始めましょう。


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