はじめに
「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」の第9章で私がつまずいたことのメモです。
(このメモのほかの章へ:1章 / 2章 / 3章 / 4章 / 5章 / 6章 / 7章 / 8章 / 9章 / 10章)
この記事は個人で作成したものであり、内容や意見は所属企業・部門見解を代表するものではありません。
第9章 AIエージェントとは
ここからは日本のAIエージェント界を牽引されている西見さん1が担当された章です。
9.1 LangGraphの概要
グラフと聞くと棒グラフとか折れ線グラフとかを想像してしまいますが、そのグラフではなく、ノードとエッジによって情報を表現するものです。エッジはリンクと呼ぶ方が自然な方もいるかもしれません。
9.2 LangGraphの主要コンポーネント
いつものように脱線しますが、私はPythonで仕事のまともなコードを書いたことがありません。Pythonどころか仕事でまともなコードを書いたのは2017年末にリリースしたWindows用アプリ(C#とWPFで開発)2が最後で、その後は開発から離れていたので浦島太郎状態です。
Pythonも2017年に言語処理100本ノックの2015年版を勉強したのが最後なので、Python 3.5辺りの知識で止まっており、Pydanticも使ったことがありません。そのため、少しかじらないと本を読み進められないなと思っていたところ、すごいタイミングで@Tadataka_Takahashiさんのつぶやきが流れてきました。これはありがたい!
さっそくこちらの2本の記事でPydanticの概要を把握して前に進みます。
LangGraphはノードの実装にLCELのRunnableが使えて、さらに作ったグラフがRunnableとしてLCELに組み込めるのがいいですね。ネストもできそうですし、これは自由度が高くておもしろそうです。
9.3 ハンズオン:Q&Aアプリケーション
selectionノードの実装で、max_tokens
を1に絞るところが興味深いです。余計なことを答えさせないためのテクニックですね。with_structured_output
を使うとトークン数がかさんでしまうことを回避する意味もあるかもしれません。
あと、コラムで紹介されているLangSmithでのトレースがかなり便利そうです。試しに生成された回答文をPlaygroundで少し改ざんして、checkノードの判定がNGになるかどうかを試してみます。なお、LangSmithはOpenAIのAPI keyを知らないので、試す時は入力が必要です。
実際に生成された回答文の末尾に「ただし、私はエキスパートではないのでこの回答は間違いかもしれません。」という矛盾する1文を入れてみたのですが、ちゃんと品質チェックに引っかかってくれました。Playgroundはちょっとした確認や試行錯誤によさそうです。
9.4 チェックポイント機能:ステートの永続化と再開
チェックポイント機能も充実していて、いたせり尽せりですね。デバッグに大活躍しそうです。
1つ気になったのは、今回初めて出てきたRunnableConfig
。本では解説がありませんが、Runnableオブジェクトの実行時の設定情報を指定するものみたいです。
今回はこのRunnableConfig
のconfigurable
にthread_id
をセットしていますが、これはLangGraph側でチェックポイント機能を使う時のルールのようです。設定しないで実行すると次のようなエラーになって教えてくれました。
ValueError: Checkpointer requires one or more of the following 'configurable' keys: ['thread_id', 'checkpoint_ns', 'checkpoint_id']
9.5 まとめ
この章に限った話ではないのですが、本のコードがGoogle Colabで簡単に動かせるのがホントありがたいです。おかげさまで、短時間でLangGraphの概要が理解できました。
次回は「要件定義書生成AIエージェントの開発」という入門書とは思えない本格的なテーマです。落ちこぼれないようにがんばります。
(このメモのほかの章へ:1章 / 2章 / 3章 / 4章 / 5章 / 6章 / 7章 / 8章 / 9章 / 10章)
-
2025年はAIエージェント元年などと言われていますが、その1年以上も前に「その仕事、AIエージェントがやっておきました。」という本を書かれているすごい方です。2024年7月のAzure OpenAI Service Dev Dayで初めてお話させていただきました。 ↩
-
デスクトップ検索SAVVY。Vectorでの配布は2022年1月に終了しています。現在は個別での配布になっているようなので、詳細はメーカーであるジップインフォブリッジ(私が以前所属していた会社)のホームページからお問い合わせください。 ↩