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ヶ月前にクローズされました