Langchain、Streamlit、LLM、Google 翻訳で AlloyDB にクエリを実行する多言語 chatbot を作成する方法
Google Cloud Japan Team
※この投稿は米国時間 2024 年 1 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。
生成 AI は、AI の力を活用して創造的かつクリエイティブなコンテンツを生成する最先端のテクノロジーです。SQL クエリも生成可能なコンテンツ タイプであるため、データベースの運用の仕方に革命を起こす可能性を秘めています。生成 AI を利用して自然言語から SQL クエリを生成することで、ユーザーは自身で複雑なクエリを記述することなく、簡単にデータにアクセスし、データ分析を行えます。Google Cloud のデータベース担当ゼネラル マネージャー兼バイス プレジデントである Andi Gutmans による今回のブログでは、AI がどのようにデベロッパーの役割を変えるかについて説明しています。多言語 chatbot がデータベースに保存されたデータのクエリ実行と分析にどのように役立つかを見ていきましょう。このブログ投稿では、サンプルの顧客ショッピング データを保存する多言語 chatbot の作成方法をご紹介します。LangChain、AlloyDB、Streamlit、Vertex AI、Google 翻訳など、よく利用されているオープンソースや Google Cloud のテクノロジーを使用します。
LangChain の詳細とメリット
LangChain は、大規模言語モデル(LLM)を使ったアプリケーションの構築を容易にする、高機能で汎用性の高いオープンソース ライブラリです。LLM をデータベースやドキュメントなどの複数のデータソースに接続するための包括的なツールとリソースが揃っています。これにより、コマンドのシーケンスをつなぎ合わせて、より広範な情報にアクセスと処理を行うことができる高度なアプリケーションを作成できます。
LangChain は、LLM を使用して複雑なアプリケーションを構築するデベロッパーにとって有益なツールです。次のような数多くのメリットがあります。
- 柔軟性: LangChain は柔軟性の高い、拡張可能なフレームワークを提供しており、デベロッパーは特定のニーズに合わせてアプリケーションをカスタマイズできます。
- スピード: LangChain 開発チームは、ユーザーが最新の LLM 機能を利用できるように、常にライブラリのスピード向上に努めています。
- 強力なコミュニティ: LangChain には、常に助け合うことをいとわないユーザーたちによる活発なコミュニティがあります。
- エージェント ベースの推論: LangChain は、LLM によって提供される情報に基づいて意思決定を行い、行動を起こすことができるエージェント ベースのシステムを構築するために使用できます。これにより、実世界の問題にスマートに対応できるアプリケーションの構築を可能にします。
AlloyDB とは
AlloyDB for PostgreSQL は、PostgreSQL 互換のフルマネージドのデータベースで、要求の厳しい、エンタープライズ グレードのトランザクション ワークロードと分析ワークロードに対応します。弾力性のあるストレージとコンピューティング、インテリジェントなキャッシュ保存、AI / ML による管理といったクラウドの優れた特徴を、PostgreSQL に統合できるようになります。さらに、AlloyDB は圧倒的なパフォーマンスを実現します。パフォーマンス テストでは、標準の PostgreSQL と比較してトランザクション ワークロードで 4 倍以上、分析クエリで最大 100 倍高速になるという結果が出ています。しかも AlloyDB は、シンプルで予測可能な料金体系となっています。AlloyDB はミッション クリティカルなアプリケーション向けに設計されており、広範なデータ保護と業界をリードする 99.99% の可用性を提供します。
ここでは、AlloyDB をチャットの履歴を保存するためのシンプルなデータベースとして使用しますが、今後のブログ投稿では、その組み込みのベクトル データベースと AI 機能を活用して、よりデータアウェアで AI 対応のアプリケーションを構築する方法を説明します。
Streamlit とは
Streamlit はオープンソースの Python フレームワークで、ML やデータ サイエンス向けの見栄えの良いカスタム ウェブアプリを簡単に作成、共有できます。Streamlit を使うと、フロントエンド デベロッパーのチームに頼ったり、ウェブデザイン言語を学んだりする必要なく、わずか数分で優れたデータアプリを構築、デプロイできます。
Streamlit は、ML モデルやダッシュボードを開発およびデプロイする際の課題に実際に直面した経験のある Google の元エンジニアによって 2018 年に設立されました。技術的なスキルに関係なく、誰でも簡単にデータアプリを構築、共有できるフレームワークを作りたいと考えたのです。
Streamlit を使用すると次のようなメリットがあります。
- 迅速な開発: Streamlit を使用すると、データアプリのプロトタイピングやイテレーションを素早く行うことができます。これは Python で、フロントエンドのコードを含むアプリ全体を記述できるためです。
- 導入の障壁を下げる: Streamlit は、フロントエンド開発の経験がなくても非常に簡単に学んで使用できるため、デベロッパー チームに頼ることなく独自のデータアプリを構築したいデータ サイエンティストや ML エンジニアにとって、素晴らしい選択肢となります。
- 柔軟なデプロイ: Streamlit アプリはさまざまなプラットフォームにデプロイできるため、お客様のニーズに最適なプラットフォームに柔軟にアプリをデプロイできます。
Vertex AI(LLM)とは
Vertex AI での生成 AI(別名 genai)により、Google の大規模な生成 AI モデルにアクセスできるため、AI を活用したアプリケーションでモデルを使用するためのテスト、チューニング、デプロイが可能になります。LLM には複数の種類があり、自分のニーズに合ったものを選ぶことができます。この例では、PaLM 2 モデル(https://ai.google/discover/palm2/)を使用します。
Google 翻訳とは
Google 翻訳は、100 以上の言語間でテキスト、音声、ウェブサイトを翻訳できる無料のオンライン翻訳サービスです。Google 翻訳のウェブサイトはご存じかもしれませんが、このウェブサイトを支えるモデルは Cloud Translation API を介してデベロッパーの皆様にもご利用いただけます。Google 翻訳が他社のサービスと一線を画すのは、そのプライバシーへの取り組みです。顧客データと翻訳は機密情報として扱われ、モデルを改良するために利用されることはありません。
Google 翻訳はチームの効率を高め、手作業による翻訳や外部からのサポートの必要性を排除します。このデモでは、翻訳されたテキストをシームレスに組み込むことでレスポンスを効率化し、chatbot が多様な言語の顧客事例に対応できるようにします。
ソリューション
データベースにクエリを実行する多言語 chatbot は、さまざまな業界で利用できます。たとえば、旅行会社はフライト、ホテル、レンタカーの予約のほか、ビザの手配などその他の旅行要件のサポートにこの chatbot を利用できます。金融会社では、お客様が口座残高の確認、送金、請求書の支払いを行う際に利用できます。多言語 chatbot にはその他にも、グローバルなオーディエンスにリーチできる、効率が上がる、従業員が母国語でデータのクエリを実行できるなどのメリットもあります。
以下の例では、サンプルの顧客ショッピング データを保存しているデータベースにクエリを実行する chatbot を作成します。


多言語 chatbot の作成方法
では、使用するツールをご紹介したので、次に多言語 chatbot の作成方法を見ていきましょう。この例では、Python を使用しています。Python スクリプトを作成するか、順を追ってコードを確認する場合は Jupyter Notebook のようなツールを使用することもできます。この方法の詳細については、こちら(https://cloud.google.com/vertex-ai/docs/workbench/notebooks)をご覧ください。
AlloyDB データベースに対しクエリを実行するユーザーを作成することから始めます。セキュリティを向上させるには、LLM にデータベースへの読み取り専用アクセス権を付与し、アクセス権を意図した要件を満たすために必要なテーブルのみに制限します。
こちらは、「shopping」スキーマへの読み取り専用アクセス権があるチャットの読み取り専用ユーザーを作成する SQL の例です。このユーザーは、以下の python スクリプトで使用できます。
3. Streamlit ベースの python プログラムで Langchain を使用した LLM 呼び出しを作成する。
4. プロンプト テンプレートを作成する - LLM を最大限に活用するには、望ましい出力を得るためにそれをどのように扱うべきかを理解する必要があります。検索クエリが検索エンジンから特定の結果を返すのと同様に、生成 AI のプロンプトはモデルから返されるレスポンスを導き出します。選んだ言葉やフレーズ、プロンプトの構造、提供するコンテキストは、出力を形成する指示とガイダンスとして機能します。もしプロンプトが不正確で、設計が不適切かあいまいであれば、生成される出力もおそらく同様になります。
5. Langchain を使用してデータベースを操作する。
-
SQL データベース チェーンの設定
-
レスポンスの取得
6. Google Cloud Translation API を活用してレスポンスを選択した言語に翻訳する。
デモ

まとめと次のステップ
多言語 chatbot の作成は、多言語のユーザーにサポートを提供するために最適な方法となりえます。今回のブログ投稿で説明したツールを使用することで、多言語 chatbot の作成に着手できます。
次のステップ
- chatbot を作成するために必要なファイルはすべてこちらで確認できます。
- chatbot を作成するために使用したテクノロジーの詳細は以下で確認できます。
!注:
例として使用されている Palm モデルは生成 AI サービスの一部であるため、ここで使用されているサービスの一部には、Google の見解を代表しない不正確または不適切なコンテンツを提供する可能性があります。Google 利用規約の詳細については、こちらをご覧ください。
ー データベース担当ソリューション リード Kiran Tailor
ー データ分析担当カスタマー エンジニア Ravish Garg