🏊‍♂️

Amazon Bedrock実装⑤:LangChainでBedrockを使ってみる

2023/11/26に公開

はじめに

LangChainでBedrockを使って見ます。LangChainとは、大規模な言語モデル(LLM)を使用してアプリケーションの作成を簡素化するように設計されたフレームワークです。LLMを使いこなすにあたりLangChainを知っておくと役に立つそうです。

参考

構成図

このような環境で検証します。

ファイル構成

以下のように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