LangChain公式エキスパートによる『LangChainとLangGraphによるRAG・AIエージェント[実践]入門』発売のお知らせ

ジェネラティブエージェンツ吉田真吾@yoshidashingo)です。

今年3月に創業して以来、共同創業者3名が毎日会話しながら、ときに開発の手を止めてまで書いていたAIエージェント本(LangChain/LangGraph本)が11/9(土)に技術評論社から発売されます。

gihyo.jp

みなさん、もう予約いただけましたか?

Amazonでも予約段階からつねにいずれかのカテゴリーのランキングに入っており、注目度の高さがうかがえます。

予定では260ページ→最終的に496ページ

具体的な構成について検討する中で、当初は昨年のLangChain本と同程度である260〜270ページと想定して企画していたのですが、最終的にいろいろ欲張って詰めていった結果、想定を大幅に超過して496ページになってしまいました。ハードコアですみません。

目次は以下のとおりで、現在最新のRAG、およびエージェンティックなLLMアプリケーションを開発するためにLangChain/LangGraphでできることを詰め込みきった内容になっています。

第1章 LLMアプリケーション開発の基礎
第2章 OpenAIのチャットAPIの基礎
第3章 プロンプトエンジニアリング
第4章 LangChainの基礎
第5章 LangChain Expression Language(LCEL)徹底解説
第6章 Advanced RAG
第7章 LangSmithを使ったRAGアプリケーションの評価
第8章 AIエージェントとは
第9章 LangGraphで作るAIエージェント実践入門
第10章 要件定義書生成AIエージェントの開発
第11章 エージェントデザインパターン
第12章 LangChain/LangGraphで実装するエージェントデザインパターン
付録 各種サービスのサインアップと第12章の各パターンの実装コード

前回のLangChain本に続いて解説とハンズオンを交互に進めながら理解を進めていく内容です。前半RAG、後半AIエージェントのような流れですが、AIエージェントの発展においては、RAGも外部知識を活用するためのひとつの強力なパーツとして活用されていくことになるため、前半で重要な技術として扱ってる流れになっています。

今回も前回のとおり前半でLangChainの基礎や、v0.3時代において完全にスキルを移行すべきLCELの解説や、RAGの評価などをあつかったうえで、エージェンティックなLLMアプリの構築に必要な解説や、エージェントデザインパターンの解説から実践ハンズオンまで網羅している内容になっており、1章から順番に読み進めていくことで、できるかぎり理解しやすいように工夫しています。

豪華レビュー陣による事前レビュー

内容が上記のように専門的かつ広範囲にわたるため、表現の正確性やわかりやすさを十分担保するために、太田真人さん、大御堂裕さん、舘野祐一さん、ニケさん、林祐太さん、宮脇峻平さんという日本のAIエージェント業界を牽引する人たちにたくさんのご指摘・ご指導をいただきました。謝辞にも記載しましたがあらためてお礼申し上げます。

執筆の経緯はGenerative Agents社の創業ストーリーでもある

昨年、わたしがCTOをしていたHR TechサービスにおいてFAQチャットや人材検索、ジョブディスクリプション生成機能でLangChainを活用していました。そこで得たノウハウを大嶋さんと一緒に本にしたのが以下の本で、おかげさまでたくさんの方に読んでいただきました。

gihyo.jp

こちらはRAGの実装が中心だったのですが、当時から2人で「次はもっと自律的にタスクを遂行するAIエージェント」のノウハウを書きたいねと話していました。編集の細谷さんにも出版当時から次はAIエージェント企画やりましょうと会話していた記憶があります。

そんな会話をしていた矢先に出版されたのがこちらの本でした。

gihyo.jp

そこから、前述のHR Techの会社を退任してAIエージェントにフルコミットしようと活動を始めたタイミングであらためて3人で会ってAIエージェントの話をしようと集まったのが2月某日だったのですが、気づいたら翌月には3名でGA社を登記しておりました。

毎週の論文輪読会

とくに個人的に8章における「AIエージェントの解説」を執筆していくなかで大変役に立ったのが、当社がAIDBさんと毎週実施している『AIエージェント論文輪読会』でした。毎週20本程度の新着、あるいはテーマに沿ってピックアップした論文の内容を理解することで、LLMの能力をいかにリアルな世界で役にたつ方法に着地させるかの創意工夫を学ぶことができ、今できることの先にある、よりよい実装、あるいはチャレンジしたが失敗した・想定ほどじゃなかったという知見をたくさん仕入れることができています。

LangChainコミュニティ

また、少し前から日本国内のLangChainコミュニティを再始動したのですが、毎回たくさんの人がLangChain/LangGraph/LangSmithなどを使った創意工夫の話をしてくれており、執筆のモチベーションやネタの参考としておおいに役に立っています。

前回のMeetupの最後に本書の宣伝をさせてもらいましたが、今後の機会においては、ぜひ本書を活用してみた結果や感想などをもらえるとありがたいと考えています。

langchain.connpass.com

まだ参加したことない人は、ぜひグループをフォローし、掲載されているDiscordサーバーにも参加し、LangChain/LangGraphを実践してみて、体験を共有してくれるとありがたいです。

輪読会やもくもく会を支援します【読者応援企画】

最後に、本書が500ページ弱あることで、なかなか1人で完走しきれないかもしれないと不安の方がいるかもしれません。そういう方たちに向け、パブリックな方式(オンライン/オフライン問わず)で本書の輪読会やもくもく会(ハンズオン主体)を実施する方がいれば、GA社3名で輪読会やもくもく会をメンタリング参加させてもらうことで全面バックアップさせてもらおうという企画を考えています。あなたが主催する輪読会やもくもく会に、著者陣がメンター参加し、質疑応答などにリアルタイム参加させていただくことでつまづきそうなポイントなどを補完し、スムーズに輪読会やもくもく会が進むことを支援します。進行や会場準備などは主催者側で実施お願いいたします。

レギュレーションとして「冒頭軽く会社の宣伝などをさせてもらう」「参加者は基本的に全員すでに本書を購入済みで持参」というのはありますが、オフラインで集まっておこなう会であればわれわれから軽くお茶菓子代くらいは支援させていただくことも可能ですので、カジュアルにご相談いただければと思います。どしどしご応募待っています!

企画されている方は こちらのフォーム から詳細をご登録ください。

docs.google.com

日本語のトークン計算、そんなに不利じゃなかった(けど英語のほうがまだまだ有利)

多くのLLMを利用できるAPIサービスで課金算出の対象となる「トークン」という単位。 以前GPT-3で計算した結果をもって「日本語はトークン消費が多くてかなり不利」という感覚を持ってましたが一部勘違いしてたみたい。

日本語の文章とその英語版(DeepLで直訳したもの)を用意して、GPT-3と、最近よく使うClaude(Anthropic社)とGPT-4(OpenAI)での計算をしてみる↓

from anthropic import Anthropic
import tiktoken

words_ja = '以下の条件を満たすJob Descriptionを日本語で作成してください。Job Descriptionには職務概要、ミッション・責任、求められるスキル・要件を必ず含めてください。'
words_en = 'Please prepare a Job Description in Japanese that meets the following requirements: Job Description must include a job description, mission/responsibilities, and required skills/requirements.'

# Count word length
print("length(ja): ", len(words_ja))
print("length(en): ", len(words_en))

# Count token using GPT-3
encoding = tiktoken.get_encoding("cl100k_base")
encoding = tiktoken.encoding_for_model("gpt2")
print("GPT-3 token(ja): ", len(encoding.encode(words_ja)))
print("GPT-3 token(en): ", len(encoding.encode(words_en)))

# Count token using GPT-4
encoding = tiktoken.encoding_for_model("gpt-4")
print("GPT-4 token(ja): ", len(encoding.encode(words_ja)))
print("GPT-4 token(en): ", len(encoding.encode(words_en)))

# Count token using Anthropic 
client = Anthropic()
print("Anthropic token(ja): ", client.count_tokens(words_ja))
print("Anthropic token(en): ", client.count_tokens(words_en))

length(ja):  91
length(en):  191
GPT-3 token(ja):  94
GPT-3 token(en):  33
GPT-4 token(ja):  64
GPT-4 token(en):  32
Anthropic token(ja):  65
Anthropic token(en):  32

GPT-3だと日本語かなり不利(91文字で構成されているものが94トークン消費=3倍乖離)だなと思うが、ClaudeやGPT-4だと同じ意味の文章に対して64〜65文字=2倍乖離ということで、英語のほうがあいかわらず有利だけど、これくらいなら悪い印象までは持たないかも。

しかも今後は1トークンあたり費用もどんどん安くなっていくと思うので、とくに社内利用であればあまりコスト懸念なくじゃんじゃん活用していけば良いではないだろうか。

ChatGPTとともに書かれた『東京都同情塔』

吉田真吾@yoshidashingo)です。

九段理江さんの『東京都同情塔』が第170回芥川賞を受賞されました。ChatGPT Community(JP)を主催してるわたしのモチベーションも刺激されたのでネタバレなしの書評です。

『東京都同情塔』あらすじ

舞台はわれわれが生きる世界線と少しだけ違う世界線。新国立競技場は当初予算の関係で揉めに揉めたザハ・ハディドのものが建っており、東京オリンピックは1年の延期をせずに予定通り2020年に開催された世界線だ。主人公の建築家「牧名沙羅」と年下の恋人(というには少し微妙な関係かも?)「拓人」を中心したストーリーです。

前半は沙羅目線を中心に、新国立競技場の隣、新宿御苑内に立てる囚人収容施設「シンパシータワートーキョー」のコンペを通じて沙羅のモノローグで進んでいきます。シンパシータワートーキョーが刑務所と呼ばれない理由は、社会学者(幸福学者)のマセキ・セトが提唱した考えかたによります。「従来、犯罪者と呼ばれ差別されてきた人は、それが境遇によってもたらされたものであるため、同情されるべき人々、社会で包摂されるべき人々」であると説き、犯罪者ではなく、『ホモ・ミゼラビリス』と呼び、タワーマンションのような塔に透過的(十分に配慮された形で)に隔離され、文化的生活を送ってもらうべきとして塔の建築計画が進み、沙羅自体は左翼的包摂の象徴であるこのディストピアの大義に対しての態度は不確定のまま、ただし実装については否定的な思いを感じながらストーリーが進んでいきます。

前半にも後半にも沙羅によって語られる「ドローイングと建築の違い」で象徴的なとおり、九段さんが沙羅を代弁者として語られている「言葉のディストピア」がテーマの1つである。マセキ・セトの『ホモ・ミゼラビリス 同情されるべき人々』は、ここでいうドローイングにあたり、コンセプト自体は否定しづらいものです。沙羅の言葉を借りれば『ポルノ』。ただし「建築」にあたる、その言葉の現実での選びかた・実装への落とし込み方がさしあたって沙羅のもっとも気に障ることとして描かれています。

言葉には「感性」がついてきます。母国語で、より正確にラベリングされたあらゆる言葉は、それが実際に使われていく習俗の中で、手垢がつくようにさまざまな意味を感性として伴い始めてしまい、やがて分かち難いものになってしまいます。その対策がカタカナ語を輸入し、利便性高いラベルとしての言葉に、大した大義もなく置き換えていくことなのです。

そのアンチテーゼがタワーの通称を『東京都同情塔』という絶好の響き(韻が固い)を浸透させた原動力だったということです。

中盤は拓人のモノローグを中心に進みますが、彼は一見するとわれわれ現代人のように無自覚に他人にどう見られるかを気にし、言葉の置き換えをすんなり受け入れる側の代弁者のように見えます。少し物語が進むと彼がそれだけではない点もあり、そちらにも注目してもらいたいです。

テーマ『アンビルト』とは

この物語の中ではザハ・ハディドの新国立競技場が建った世界線になっています。今やわれわれも忘れがちですが、あの案をベースに候補都市として採択されたにもかかわらず、建築予算の高騰があらわになった途端に実際に建てるのか、誰が責任を取るのかで議論が紛糾したことを覚えています。現実世界では実際には建たなかった(アンビルド)のだが、ザハ・ハディドのキャリアにおいて多くの建たなかったアンビルドがあるそうで、九段さんにしてみると、実際に建った世界でそのひとうひとつのディテールの意味を噛み締めることにこそ意味が、興味があるということなのでしょう。

この小説で問題提起されていることは、九段さんが会見で『言葉を無限に拡大解釈することが許容される社会、言葉のポジティブな面やネガティブな面をしっかり考えていきたい』と言われているとおり、D&Iやコンプライアンスのような大義の否定ではなく、借りてきたカタカナ語に簡単に置き換えてしまうような実装部分を気にされているということです。

上の世代の作家であれば単純に言葉狩りの時代を否定してSNS上で炎上しそうなところを、"時代の当事者"である九段さんの感性や舞台設定(Slackや生成AIが普通に出てくる)を通じて、この小説自体がアンビルトにならず、行間に問題意識を練り込み、作品に着地させることができたエンタメ性とのバランス感覚もとても上手だと感じられました。

『ChatGPTを活用して紡がれた文学』の意味

上記の受賞の記者会見で九段さんは、普段から自身がChatGPTに悩みを相談したりしており、『ChatGPTを駆使して全体の5%くらいの文章をそのまま利用した』と話しています。また、今後の活用方針としても『自分の創造性を発揮して上手に利用しながらつきあっていきたい』と、かなり肯定的だ。

こうなってくると、実際に作家が創造性を十分に発揮しながら、ChatGPTを具体的にどう使っているのかが気になるところです。

  • どんなプロンプトでアイデア出しをするのだろうか?
  • どんなチャンクサイズごとに文章を作成するのだろうか?
  • どのようにインタラクティブに介入しながら修正をさせているのだろうか?

将来はもしかしたら膨大なテーマ出しも枝打ちも、書き出しの掴みも、大どんでん返しも、中核となる問題意識やなにか心象風景をプロンプトとして入力することで、あとはDJのようにレコードバッグから次のバイナルを取り出し、フレーズを確認、組み合わせ、ピッチを合わせながらオーディエンスに届ける、そんな編集能力を主軸にした作家性が重要になってくるのかもしれません。

ChatGPT Community(JP)について

2022年11月30日、OpenAI社は大規模言語モデル(LLM)をチャット形式にインストラクションチューニングし、汎用的なチャットUIをフロントにかぶせることで、ChatGPTというD2C(BtoC)サービスを提供し、世界最速でユーザーを獲得しました。OEM先のBing Chatも、GoogleのBardもいまだ同じ程度のインパクトでユーザーのアクティビティは獲得できていないように思います。

こうしてダイレクトに消費者が使い始めたChatGPTは、われわれIT業界の人たちを置き去りにしながら、直接的に世界中あちこちのビジネスの現場で『新しいサービス価値』『新しい業務フロー』への変化を促し、事業利益や業務生産性を生み出しています。

それらの現場レベルの変化をつぶさに共有しあっていこう、さらに言えば、汎用性から用途別へのUXの絞り込みや、LLMやシステム性能・セキュリティの問題、それらにも幅広く協業を促すために、ChatGPTユーザーからアプリ開発者まで幅広くターゲットとしたユーザーコミュニティを作ったわけです。

そういう意味では今はたまたまBtoCについてはChatGPTが一人勝ちであるし、用途別のシステム構築にはAOAIのようなプラットフォームやLangChainやLlamaIndexのようなフレームワークが活況ですが、そのときどきどんなトピックが出てくるかのトレンドは今後変化・拡大していくだろうし、そうであってもよいと思っています。※とはいえ当初から"ChatGPT" Meetupという名前で開催しているので、その旗の元でやっていきたいのは変わりませんが。

バックオフィス業務やコンサルテーションなどがトピックの主軸でしたが、作家がChatGPTを使って純文学を書く時代です。音楽プロデューサー、映画の演出家、ゲームクリエイターやエッセンシャルワーカーにおいての活用事例について聞ける日も、そう遠くないかもしれないですね。

作品は以下から読めます。