LangChainのお勉強&LLM=チューリングマシンなのかも、というお話

書籍「ChatGPT/LangChainによるチャットシステム構築[実践]入門」

LangChainは、ChatGPTを始めとしたLLMを使って様々なアプリケーションを作るためのライブラリです。LangChainについては、以前読んだ本でも一応解説されていたのですが、若干消化不良気味でした。

たまたま見かけた下記の本が良さそうだったので、一日かけて前半のサンプルを動かしてみました。この本、大変解りやすくてお勧めできます。ちなみに技術評論社のサイトでPDF版を買えば3000円で、Kindle版より安いです。

ChatGPT/LangChainによるチャットシステム構築[実践]入門
本書は,ChatGPTのAPIとLangChainを使って,大規模言語モデル(LLM)を本番レベルのシステムに組み込むための知識をステップバイステップで学習し,手を動かしながら実践できる書籍です。 生成AIが登場し,APIやフレームワークの...

コードはGitHubで公開されていて、これをコピーしてGoogle Colabで読み込めば簡単に内容が確認できます。

GitHub - yoshidashingo/langchain-book
Contribute to yoshidashingo/langchain-book development by creating an account on GitHub.

個人的には、デバッグメッセージ付きで動かすLangChainは、各種の機能がどのようなプロンプトに分解されているのかが見て取れるので、解りやすかったです。

LLM=チューリングマシンなのかも

ここ最近、私の中ではLLMのイメージは、「人工知能のような何か」から「自然言語でプログラムできるコンピュータのような何か」というふうに少し変わってきていているのですが、本書を読んでますますその傾向が強まりました。

LLMは本来は「与えられた言葉の列に基づいて、それに続く言葉を次々に生成していく巨大な確率的モデル」です。

しかし、その言葉のつながりの一部を置き換え可能とする、つまり値を変更できる変数のようにすると、その後ろに続く言葉を変化させることができます。これは条件分岐のように動作します。

また、代名詞が何を指すかといった「一時変数」のようなものもあり、つまりこれって条件分岐があって変数があって演算もできる、一種のコンピュータ、あるいはチューリングマシンなんだなあと思っているわけです。

LLM=ある種の柔らかコンピュータ、として捉えると、LangChainは従来型コンピュータとLLMというコンピュータを接続するデバイスドライバあるいはライブラリという感じです。

OpenAIのAPIには関数呼び出しをLLM側からリクエストするfunction callingというAPIもありますが、平たく言えばこれはコールバック関数と同じ仕組みなわけです。

ちなみに本書には、自分で作ったPythonの関数をLLMから呼び出させる例題もあります。

LLMを組み込んだアプリケーション開発

本書の後半は、LangChainを使ったチャットボットやSlackアプリケーションの開発について解説されています。こちらは実際にそういうものを作りそうな状況になったときにあらためてきちんと読むことにして、今はとりあえず目を通すだけにしました。

6章で作るチャットアプリはPythonで60行あまり、7章で作るSlackアプリは140行あまり、8章で作る社内文書用QAボットは全部で200行あまりの短いプログラムです。

使用しているAWS Lambdaなどのインフラや、AWS以外のWebサービスなどの使い方も含めて、最近のWebアプリはこんな風に作れるのか・・・と勉強になりました。

本書の例題にも出てきますが、LLMは「柔らかコンピュータ」なので既存のプログラミング言語から呼び出すときに、APIに従ってくれなかったりします。これでは異常系や準正常系の設計が大変すぎて、大規模なアプリケーションを作るのはなかなか大変なのではないかという感じもします。

ですが、OpenAIはJSONを使ってLLMとやり取りができるようなAPIを提供していますし、LLMと既存コンピュータのAPIはこれからも進化していくのでしょう。LangChainは現状その先端にいるソフトウェアで、ここ数年しっかりフォローしていく必要があると思いました。

コメント