Closed9

LangChain + VertexAI で、Claude 3 Opus を使ってみたメモ

いばらきいばらき

まずは、モデルを有効化

入力時にフォームにいくつかの情報を英語で入力する必要があります。
大した内容ではないですが、それすらも面倒くさい方はAWSのBedrockからならもっと簡単にClaude 3 Opusを有効化&利用できるので、そっちがお勧めです。
たぶんGoogleはGeminiを使って欲しくでわざとClaude 3を使いにくくしていると思う。

いばらきいばらき

とりあえず、前提としてGeminiは実行できる状態にする

コード

run_test_a.py
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_google_vertexai import VertexAI

project = "******" # google cloudeのプロジェクトID
location = "asia-northeast1"

llm = VertexAI(
    model_name="gemini-1.5-pro-preview-0409",
    temperature=0.5,
    max_output_tokens=400,
    location=location,
    project=project,
)

prompt = PromptTemplate(
    template="{q}",
    input_variables=["q"],
)
output_parser = StrOutputParser()

chain = prompt | llm | output_parser

result = chain.invoke({"q": "こんにちは"})
print(result)

結果

# rye run python -m run_test_ai
こんにちは! 😊

今日はどうされましたか? 

OK

いばらきいばらき

モデルを書き換える

llm = VertexAI(
-    model_name="gemini-1.5-pro-preview-0409",
+    model_name="claude-3-opus@20240229",
    temperature=0.5,
    max_output_tokens=400,
    location=location,
    project=project,
)

結果

# rye run python -m run_test_ai
Traceback (most recent call last):
(省略)
google.api_core.exceptions.NotFound: 404 Publisher Model `publishers/google/models/claude-3-opus@20240229` is not found.

エラー。モデルがないと言われる。
publishers/google/models/を見に行っているが、claude 3はgoogleのmodelではないのでここには存在しない。

いばらきいばらき

VertexAIではなくChatAnthropicVertexを使う。

- llm = VertexAI(
-     model_name="claude-3-opus@20240229",
-     temperature=0.5,
-     max_output_tokens=400,
-     project=project,
-     location=location
- )
+ from langchain_google_vertexai.model_garden import ChatAnthropicVertex
+ llm = ChatAnthropicVertex(
+    project=project,
+    location=location,
+    model_name="claude-3-opus@20240229",
+ )

結果

# rye run python -m run_test_ai
Traceback (most recent call last):
(省略)
ValueError: Could not resolve project_id

project_idがわからないと言われる。指定しているのに!

いばらきいばらき

環境変数GOOGLE_CLOUD_PROJECTを設定する。
(注 : GOOGLE_CLOUD_QUOTA_PROJECTは元々設定していました。両方必要。)

+ os.environ["GOOGLE_CLOUD_PROJECT"] = project
llm = ChatAnthropicVertex(
    project=project,
    location=location,
    model_name="claude-3-opus@20240229",
)

結果

# rye run python -m run_test_ai
Traceback (most recent call last):
(省略)
anthropic.NotFoundError: Error code: 404 - {'error': {'code': 404, 'message': 'Publisher Model `projects/******/locations/asia-northeast1/publishers/anthropic/models/claude-3-opus@20240229` not found.', 'status': 'NOT_FOUND'}}

モデルが無いと言われる。
ここで悪いのはLocation。日本にはClaude 3 Opusは存在しない。

いばらきいばらき

Locationをus-east5にする。何処だよこれ。。。?

- location = "asia-northeast1"
+ location = "us-east5"

結果

# rye run python -m run_test_ai
こんにちは!今日は良い天気ですね。私にどんなことでもお聞かせください。喜んでお手伝いさせていただきます。

OK

いばらきいばらき

LangChain + VertexAI で、Claude 3 Opus を呼び出すのにハマったポイントまとめ

  • locationはus-east5
  • from langchain_google_vertexai import VertexAIではなく、from langchain_google_vertexai.model_garden import ChatAnthropicVertexを使う
  • 引数でプロジェクトIDを指定するのに加えて環境変数GOOGLE_CLOUD_PROJECTにも設定する。
import os
from langchain_google_vertexai.model_garden import ChatAnthropicVertex
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_google_vertexai import VertexAI

project = "******"
location = "us-east5"
os.environ["GOOGLE_CLOUD_PROJECT"] = project

llm = ChatAnthropicVertex(
    project=project,
    location=location,
    model_name="claude-3-opus@20240229",
)

prompt = PromptTemplate(
    template="{q}",
    input_variables=["q"],
)
output_parser = StrOutputParser()

chain = prompt | llm | output_parser

result = chain.invoke({"q": "こんにちは"})
print(result)
いばらきいばらき

環境変数を設定するっていうのが本当に分からなくてかなり苦戦したんだけど、Copilotに聞いたら教えてくれた。ありがとうMicrosoft。

いばらきいばらき

あと、特にハマらなかったので書かなかったですがanthropicのパッケージ追加は必要なのでお忘れなく。

rye add 'anthropic[vertex]'
このスクラップは2ヶ月前にクローズされました