先日、AnthropicからClaude3の新しいモデルが発表されました。
噂ではGPT4よりも性能がいいのだとか。気になったのでLangChainでClaude3を使ってみたいと思います。
今回は、以前作ったStreamlitを使ってやってみたいと思います。
Streamlitの環境構築はこちらの記事をご覧ください。
することリスト
- AnthropicでClaudeのAPI Keyを取得する
- 環境変数をセットする
- 必要なライブラリをインストールする
- プログラムを書いてみる
- 実行
1. AnthropicでClaudeのAPI Keyを取得する
まずはAnthropicでClaudeのAPI Keyを取得します。
https://www.anthropic.com/ にアクセスし、APIの Get started now
ボタンをクリックします。
Get API Key
sをクリック
Create Key
をクリック
名前を入力してキーを作成する
これでAPI Keyが作成できました。
2. 環境変数をセットする
.env
ファイルを作成し、環境変数をセットします。
ANTHROPIC_API_KEY=ここにAPIKeyを貼ります
docker-compose up
で環境変数が適用されるようにします。docker-compose.yamlファイルに env_file
を設定します。
version: "3"
services:
streamlit:
restart: always
build: .
tty: true
volumes:
- ./:/app
command: /bin/sh -c "cd /app; pip install -r requirements.txt; streamlit run main.py;"
ports:
- 8501:8501
env_file:
- .env
これでOKです。docker-compose upで .env
ファイルに設定してある環境変数が適用されます。
3. 必要なライブラリをインストールする
最低限必要の以下のライブラリをrequirements.txtに追加します。
langchain
langchain-anthropic
以下コマンドでインストールを実行
$ pip install -r requirements.txt
4. プログラムを書いてみる
簡易的ですが、AnthropicのClaude3を使うプログラムを書いてみます。
今回は執筆時点での最新モデルである claude-3-opus-20240229
を使用します。
Claudeのモデルはこちらを参照ください。
https://docs.anthropic.com/claude/docs/models-overview#model-recommendations
from langchain.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate
from langchain_anthropic import ChatAnthropic
class Llm():
@classmethod
def ask(cls):
system_prompt = "あなたは日本料理の板前です"
human_prompt = "だし巻き卵の作り方を教えてください"
chat_prompt = ChatPromptTemplate.from_messages([
SystemMessagePromptTemplate.from_template(system_prompt),
HumanMessagePromptTemplate.from_template(human_prompt)
])
llm = ChatAnthropic(model_name='claude-3-opus-20240229', temperature=0)
response = llm.invoke(chat_prompt.format_prompt().to_messages())
print(response.content)
これでOKです。最後に print
で結果を出力します。
5. 実行
早速実行してみましょう!
結果、こんな感じでした。
だし巻き卵の作り方を以下のステップでご説明します。
材料(2人分):
- 卵 3個
- だし汁 100ml
- 砂糖 小さじ1
- 薄口醤油 小さじ1
- 塩 少々
- サラダ油 適量
手順:
1. ボウルに卵を割り入れ、よく溶きほぐします。
2. だし汁、砂糖、薄口醤油、塩を加え、さらに混ぜ合わせます。
3. 卵液をこし器で濾し、なめらかにします。
4. 卵焼き器にサラダ油を薄く塗り、中火で熱します。
5. 卵液を1/4量ほど流し入れ、菜箸で大きく混ぜながら半熟状になるまで火を通します。
6. 半熟状になったら、手前から奥に向かって巻いていきます。
7. 巻き終わったら卵焼き器の手前に寄せ、再びサラダ油を薄く塗ります。
8. 卵液を同量流し入れ、菜箸で持ち上げるようにして、先ほど巻いた卵の下に流し入れます。
9. 半熟状になったら、先ほどと同様に手前から奥に向かって巻いていきます。
10. 残りの卵液でも同様の作業を繰り返し、最後まで巻き上げます。
11. 完成したら、一口大の厚さに切り分けて器に盛り付けます。
コツ:
- だし汁は、昆布だしや鰹だしなどを使用すると風味が良くなります。
- 卵液を流し入れる際は、一度に多く入れすぎないようにしましょう。
- 巻くときは、焦げ付かないようにゆっくりと巻いていきましょう。
- 仕上がりにツヤを出したい場合は、最後に刷毛で卵液を塗ってから巻き上げると良いでしょう。
ものすごい丁寧に教えてくれてますね。。すごい!
もっと複雑な質問もしてみましたが、体感ですがGPTやGeminiより速くて精度も高いという印象です。
以上、簡単ですが、LangChainでClaude3を使う方法まとめでした。
最後までお読みいただきありがとうございました!