Vertex AI Model Garden の Claude 3 モデルを LangChain で利用する方法
こんにちは、SRE ディビジョンの遠矢です。
今回は、Google Cloud の Vertex AI で提供されている Claude 3 モデルを、LangChain を使って簡単に利用する方法をご紹介します。
Vertex AI Model Garden と Claude 3 モデル
Vertex AI は、Google Cloud が提供する機械学習プラットフォームです。Vertex AI の Model Garden には、事前学習済みの高品質なモデルが用意されており、開発者はこれらのモデルを簡単に利用できます。
最近、Model Garden に Anthropic の Claude 3 モデルが追加されました。Claude 3 は、自然言語処理のタスクで優れた性能を発揮する大規模言語モデルです。この追加により、開発者はより簡単に以下の Claude 3 モデルを利用できるようになりました。
-
Claude 3 Opus: Anthropic 最高水準の性能とインテリジェンスを備えたモデル。(4/16 日時点では、Public preview)
-
Claude 3 Sonnet: スキルとスピードの組み合わせが最適なモデル。
-
Claude 3 Haiku: Anthropic の最も高速でコンパクトなモデル。
LangChain で Claude 3 モデルを利用する
LangChain は、言語モデルを使ったアプリケーション開発を支援するためのライブラリです。LangChain を使うことで、Claude 3 モデルをより簡単に利用できるようになります。
以下に、LangChain を使って Vertex AI Model Garden の Claude 3 モデルを利用する手順を説明します。
ステップ 1: Model Garden から API を有効にする
Vertex AI で Claude 3 を用いるには、Model Garden にて Claude 3 API を有効化する必要があります。Claude 3 の各種モデルは Model Garden の基盤モデルに存在しています。
使用したい Claude 3 モデルをクリックし、「有効にする」を押すことで設定画面に進むことが出来ます。利用にあたってはいくつかの情報を入力する必要があります。ただ、入力後に審査を待つなどはなく、すぐに利用することが出来ます。
ステップ 2:必要なライブラリのインストール
-
今回は Colab Enterprise 上でコードを実行します。
-
Colab Enterprise の詳しい解説は以下の記事をご覧ください。
%pip install --upgrade --quiet anthropic langchain-core langchain-google-vertexai
ステップ 3:ChatAnthropicVertex クラスの導入
LangChain の ChatAnthropicVertex クラスを使うことで、Vertex AI の Claude 3 モデルを簡単に利用できます。以下のようにインポートします。
from langchain_google_vertexai.model_garden import ChatAnthropicVertex
次に、ChatAnthropicVertex
のインスタンスを作成します。その際、project
、location
、model_name
を指定します。
ロケーションやモデル名は各モデルの DOCUMENTATION をご覧ください。
llm = ChatAnthropicVertex(
project="project-id", # プロジェクトのID
location="asia-southeast1", # 適切なロケーション
model_name="claude-3-sonnet@20240229", # 使用するモデル名
# 以下は他のロケーションとモデルの例です(現在は使用していません):
# location="us-east5",
# model_name="claude-3-opus@20240229",
# location="us-central1",
# model_name="claude-3-haiku@20240307",
)
ステップ 4:Chain の構築と実行
LangChain の PromptTemplate
を使うことで、Claude 3 モデルを使った簡単なチェインを作成できます。まず、以下のようにインポートします。
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
PromptTemplate
は、ユーザーの入力をモデルに渡す前に、適切なフォーマットに変換するために使用されます。テンプレートを定義し、そこにユーザーの入力を埋め込むことで、モデルに渡すプロンプトを生成します。
template = """
あなたは親切なアシスタントです。以下の質問に答えてください。
質問: {question}
回答:"""
prompt = PromptTemplate(
input_variables=["question"],
template=template,
)
次に、PromptTemplate
と StrOutputParser
と ChatAnthropicVertex
のインスタンスを使って、Chain
を作成します。
StrOutputParser
は、モデルの出力を文字列として解釈するために使用されます。これにより、モデルの出力を後処理せずにそのまま利用できます。
Chain
は、複数のコンポーネントを連結して、入力から出力までの一連の処理を定義するために使用されます。ここでは、PromptTemplate
でユーザーの入力を変換し、ChatAnthropicVertex
でモデルから回答を生成し、StrOutputParser
で出力を文字列として解釈するという一連の処理を定義しています。
chain = prompt | llm | StrOutputParser()
最後に、チェインを実行します。
question = "人工知能の最新トレンドは何ですか?"
result = chain.invoke(question)
print(result)
このコードを実行すると、以下のような結果が得られます。
このコード例では、ユーザーの質問をプロンプトテンプレートに挿入し、Claude 3 モデルを使って回答を生成しています。このように、LangChain で Vertex AI Model Garden の Claude 3 モデルを簡単に利用できます。
まとめ
Vertex AI Model Garden に Claude 3 モデルが追加されたことで、開発者はより簡単に Claude 3 モデルを利用できるようになりました。さらに、LangChain を使うことで、Claude 3 モデルをより簡単に利用できるようになりました。
本記事では、LangChain の ChatAnthropicVertex
クラスを使って Claude 3 モデルを利用する方法を解説しました。また、LangChain を使って、簡単なチェインを作成する方法も紹介しました。これにより、開発者は簡単に Claude 3 モデルを使った対話システムを構築できるようになります。
今後は、LangChain と Vertex AI の組み合わせを活用することで、より高度な自然言語処理アプリケーションの開発が期待されます。ぜひ、皆さんも LangChain と Vertex AI を使って、革新的なアプリケーションを開発してみてください。
Discussion