コンテンツに移動
AI & 機械学習

生成 AI アプリ: LangServe を使用して Cloud Run に LangChain をデプロイする

2023年12月7日
https://storage.googleapis.com/gweb-cloudblog-publish/images/langchain.max-2500x2500.jpg
Google Cloud Japan Team

※この投稿は米国時間 2023 年 11 月 30 日に、Google Cloud blog に投稿されたものの抄訳です。

LangChain は、大規模言語モデル(LLM)を使用したアプリを簡単に構築できるようにする人気のフレームワークです。LangChain は最近、LangChain プロジェクトを REST API としてデプロイする方法である LangServe を導入しました。LangServe は、Cloud Run と Replit の両方へのデプロイをサポートしています。

LangChain の創設期からのエンジニアの一人である Nuno Campos 氏に、Cloud Run を選んだ理由を尋ねたところ、彼は次のように語りました。

「私たちは代替手段を調査しましたが、Cloud Run がアプリを本番環境で実行する最も簡単かつ最速の方法です。」

このブログ投稿では、LangServe の利用を開始し、チャットモデル用の VertexAI PaLM 2 を呼び出すテンプレートを Cloud Run にデプロイする方法を説明します。

生成 AI アプリとは

Google Bard などの生成 AI チャットボットは、大規模言語モデル(LLM)を使用しています。一般的には、テキストを入力して LLM にプロンプトを与えると、LLM はそのプロンプトを満たす結果を返します。LLM を高度なオート コンプリートとして説明できるかもしれませんが、それは単純化しすぎた考え方です。LLM は、コードを記述し、テキストを言い換え、推奨事項を生成し、単純な論理問題を解決できます。

コードから LLM にプロンプトを送信することもできます。これは、独自のプライベート データや API との統合を開始する場合に非常に便利です。一般的なユースケースには次のようなものがあります。

  • 自分のデータ(マニュアル、サポートケース、プロダクト データを含む)について質問する
  • 自然言語を使用して API と対話し、LLM に API 呼び出しを行わせる
  • ドキュメントの要約
  • データのラベル付けまたはテキスト抽出

これらの統合の構築には、多くの場合、プロンプトから開始してプロンプトに独自のデータを取り込むパイプライン(通常はチェーンと呼ばれる)の構築が含まれます。そこで役立つのが LangChain です。LangChain は、GitHub で 7 万個近いスターを獲得している、LLM を利用したアプリを構築するための最も人気のあるフレームワークです。

LangChain でチェーンを構築する

LangChain は、LLM アプリの構築を開始するために必要なすべての抽象化を提供し、LLM、ドキュメント ローダ、テキスト エンベディング モデル、ベクター ストア、エージェント、ツールなど、すぐに使用できる多くのコンポーネントを備えています。多くの Google プロダクトと LangChain のインテグレーションが作成されていることを嬉しく思います。一部を紹介するならば、Vertex AI Vector Search(以前の Matching Engine)や、Vertex AI Model Garden を介した数百のオープンソース LLM モデルなどが挙げられます。

LangChain を使用して、チャットモデル用の VertexAI PaLM 2 を呼び出し、Chuck Norris についてのジョークを言うようにリクエストする方法は次のとおりです。

lang-py
読み込んでいます...

LangServe を使用してチェーンを API として提供する

プロトタイプ チェーンの準備ができたら、次の 2 つの手順でそれをパッケージ化し、LangServe を使用して REST API として公開します。

  • langchain CLI を使用して LangServe アプリをスキャフォールディングする
  • add_routes 呼び出しでチェーンを追加する

LangServe には、チェーンを試してデバッグできるプレイグラウンド エンドポイントも備えています。さらに詳しく知りたい場合は、LangServe のリリース時のブログをぜひご覧ください。

LangChain テンプレート

私は日頃から、すべてを組み合わせて実際のものを構築する方法を示す、うまく設計されたレシピのあるプロジェクトが好きです。LangChain にはそのレシピがたくさんあります。こちらに、先ほど示した Chuck Norris の例を含む、LangChain テンプレートの詳細なリストがあります。

デモの時間

Google Cloud 側の設定から始めましょう。この説明は、有効な請求先アカウントを持つ Google Cloud プロジェクトがすでにあることを前提としています。そのプロジェクトのプロジェクト ID を確認して、それをデフォルトとして設定します。

読み込んでいます...

プロジェクトの Vertex AI API も有効にする必要があります。

読み込んでいます...

localhost から Vertex AI PaLM API を呼び出すには、アプリケーションのデフォルト認証情報を構成します。

読み込んでいます...

LangChain の利用を開始する

まず、LangChain CLI をインストールします

読み込んでいます...

ここで、次のコマンドを使用して LangServe REST API をスキャフォールディングし、Chuck Norris テンプレートを追加します。

読み込んでいます...

このコマンドはディレクトリ my-demo を作成し、--package フラグによって Chuck Norris テンプレートがインストールされます。

このスニペットを使用して、app/server.py と、Chuck Norris のリンクを検索します(場所を示すファイル内のコメントを見つけます)。

読み込んでいます...

ローカルホストで API を開始するには、my-demo ディレクトリに移動してアプリを開始します。

読み込んでいます...

これにより、http://localhost:8080 上にウェブサーバーが起動するはずです。http://localhost:8080/vertexai-chuck-norris/playground にアクセスすると、Chuck Norris に関するばかげたジョークをさらに生成できます。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/playground.gif

Cloud Run にデプロイする

今度は、localhost から本番環境に移行します。これを実行して API をデプロイし、Cloud Run サービスを作成します。

読み込んでいます...

このコマンドでは、いくつかの設定を確認するよう求められるため、いくつかの API を有効にしなければならない場合があります。また、認証されていない呼び出しを許可するかどうかも尋ねられます。ブラウザを通じてアプリにアクセスし、リンクを友達と共有したい場合にこれが必要です。

Cloud Run は HTTPS エンドポイントを作成し、すべての受信リクエストを処理できるようにコンテナ インスタンスの数を自動的にスケーリングします。

プロトタイプから実際のアプリケーションまで

この記事を終える前に、注意事項を付け加えておきたいと思います。プロトタイプ チェーンのデプロイは、生成 AI アプリを責任ある方法で実際に使用できるようにするための最初のステップにすぎません。入力と出力の両方に安全フィルタを適用し、敵対的テストを実行することをおすすめします。詳細については、安全に関するガイダンスをご覧ください。さらに、生成 AI モデルとコンテンツの使用による法的影響も考慮する必要があります。Google Cloud は、さまざまな Google Cloud サービスについて、生成 AI の使用に伴う潜在的な法的リスクに対する責任を負っています

LangChain および Vertex AI 拡張機能

このブログ投稿では、LangServe を使用して LangChains を REST API としてデプロイする方法を説明しました。すでに Vertex AI の使用に慣れている方は、LangChain チェーンを統合する別の方法を提供する Vertex AI Extensions の限定公開プレビュー版をぜひご登録ください。

次のステップ

- デベロッパー リレーションズ エンジニア Wietse Venema

- LangChain、創設者エンジニア Nuno Campos 氏

投稿先