🏊♂️
Amazon Bedrock実装⑤:LangChainでBedrockを使ってみる
はじめに
LangChainでBedrockを使って見ます。LangChainとは、大規模な言語モデル(LLM)を使用してアプリケーションの作成を簡素化するように設計されたフレームワークです。LLMを使いこなすにあたりLangChainを知っておくと役に立つそうです。
参考
- LangChain>Bedrock
構成図
このような環境で検証します。
ファイル構成
以下のように4つのファイルを作成しました。
iam0001:~/environment/bedrock $ tree
.
├── Dockerfile_Bedrock
├── dockerbuild-run.sh
├── dockerstop-imgdell.sh
└── work
└── langchain-bedrock.py
1 directory, 4 files
ソースコード
各ファイルのソースコードです。
Dockerfile_Bedrock
ARG python_image_v="python:3.10-buster"
FROM ${python_image_v}
ARG work_dir="/work/"
# コンテナにアクセスした際のデフォルトディレクトリ
WORKDIR ${work_dir}
# pip更新
RUN pip install --upgrade pip
# boto3インストール
RUN pip install boto3
# リージョン情報を設定する
ENV AWS_DEFAULT_REGION=us-east-1
# Bedrockに必要なモジュールをインストール
RUN pip install --no-build-isolation --force-reinstall \
"boto3>=1.28.57" \
"awscli>=1.29.57" \
"botocore>=1.31.57" \
"langchain==0.0.320"
dockerbuild-run.sh
#!/bin/bash
# Dockerイメージを作る
docker build -f Dockerfile_Bedrock -t bedrock_img .
# Dockerコンテナを作成し起動する
docker run --rm --name bedrock_env -v $PWD/work/:/work/ -dit bedrock_img
# Dockerコンテナに入る
docker exec -it bedrock_env bash
work/langchain-bedrock.py
from langchain.llms import Bedrock
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
llm = Bedrock(model_id="anthropic.claude-v2")
conversation = ConversationChain(
llm=llm,
verbose=True,
memory=ConversationBufferMemory()
)
response = conversation.predict(input="日本語で自己紹介してください")
print(response)
dockerstop-imgdell.sh
#!/bin/bash
# Dockerコンテナを停止する
docker stop bedrock_env
# Dockerイメージを削除する
docker image rm bedrock_img
動作検証
実行します。
シェルスクリプトdockerbuild-run.sh
に実行権限を付与し、実行します。
iam0001:~/environment/bedrock $ chmod +x dockerbuild-run.sh
iam0001:~/environment/bedrock $ ./dockerbuild-run.sh
以下のように実行したDockerコンテナに入りworkディレクトリに移動し、lsコマンドでlangchain-bedrock.py
が見えるはずです。
root@209fdaca253e:/work#
root@209fdaca253e:/work# ls
langchain-bedrock.py
root@209fdaca253e:/work#
langchain-bedrock.py
を実行し、AIが自己紹介してくれました。成功です。
root@209fdaca253e:/work# python langchain-bedrock.py
> Entering new ConversationChain chain...
Prompt after formatting:
The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.
Current conversation:
Human: 日本語で自己紹介してください
AI:
> Finished chain.
はい。日本語で自己紹介します。私はチャットAIのアシスタントです。宜しくお願いします。趣味は読書と音楽鑑賞です。将来は人と話す仕事に就きたいと思っています。ご質問があればお気軽にお尋ね下さい。よろしくお願いします。
root@209fdaca253e:/work#
これで検証はおわり
片付け
Dockerコンテナの停止とDockerイメージの削除をします。
iam0001:~/environment/bedrock $ chmod +x dockerstop-imgdell.sh
iam0001:~/environment/bedrock $ ./dockerstop-imgdell.sh
bedrock_env
Untagged: bedrock_img:latest
Deleted: sha256:9c54728ce1075ff6db97b74db4a5cd226cef81bfa48adfff7bf4b1d0847efa2f
Discussion