概要
Amazon Bedrock と LINE を組み合わせてチャットボットを作成する手順(東京リージョン版)を紹介します!
この構成では、Amazon Bedrockを使用して AI の応答を生成し、LINE Messaging API を通じてユーザーとやり取りを行いたいと思います。
手順の概要
- Amazon Bedrock のセットアップ
- AWS Lambda の設定(Bedrock との連携)
- LINE Messaging API のセットアップ
- AWS API Gateway の設定(LINE と Lambda の接続)
- ボットの実装とデプロイ
1. Amazon Bedrock のセットアップ
① Amazon Bedrock を有効化
- AWS マネジメントコンソール にログイン
- Amazon Bedrock サービスを開く
- リージョンを
ap-northeast-1(東京)
に変更 - Amazon Bedrock Model Access Request (生成AIのモデル利用の手続き)
② 利用可能なモデルを確認
以下の AWS CLI コマンドを実行すると、利用可能なモデル ID を確認できます。
今回はClaude 2.1を使用していきます。
aws bedrock list-foundation-models --region ap-northeast-1
モデル ID(2025年時点)
-
Claude 3 Sonnet(推奨):
anthropic.claude-3-sonnet-20240229-v1:0
-
Claude 3 Haiku(高速軽量):
anthropic.claude-3-haiku-20240307-v1:0
-
Claude 3 Opus(高性能):
anthropic.claude-3-opus-20240229-v1:0
-
Amazon Titan Text:
amazon.titan-text-lite-v1
-
Amazon Titan Embeddings:
amazon.titan-embed-text-v1
2. AWS Lambda の設定(Bedrock との連携)
① Lambda 関数を作成
- AWS Lambda コンソールを開く
- 新しい関数を作成
② Bedrock のアクセスロールを追加
③ Lambda レイヤーの設定(requests モジュール追加)
今回はPythonのrequestsモジュールの利用が必要になります。
- AWS Lambda コンソール → Lambda レイヤー を開く
- 「レイヤーを作成」をクリック
-
レイヤー名:
requests-layer
- ZIP ファイル(
requests_layer.zip
)をアップロード -
ランタイム:
Python 3.10
- 作成をクリック
④ Lambda コード(Bedrock + LINE)
import boto3
import json
import requests
# Amazon Bedrock クライアント(東京リージョン)
bedrock = boto3.client("bedrock-runtime", region_name="ap-northeast-1")
# LINE のアクセストークン(LINE Developers から取得)
LINE_ACCESS_TOKEN = "YOUR_LINE_ACCESS_TOKEN"
def lambda_handler(event, context):
try:
body = json.loads(event['body'])
user_message = body['events'][0]['message']['text']
reply_token = body['events'][0]['replyToken']
response = bedrock.invoke_model(
modelId="anthropic.claude-3-sonnet-20240229-v1:0",
body=json.dumps({"prompt": f"\n\nHuman: {user_message}\n\nAssistant:", "max_tokens": 200})
)
result = json.loads(response["body"].read())
ai_reply = result.get("completion", "エラー: 応答を取得できませんでした")
send_line_message(reply_token, ai_reply)
return {"statusCode": 200, "body": json.dumps({"message": "Success"})}
except Exception as e:
print(f"Error: {e}")
return {"statusCode": 500, "body": json.dumps({"error": str(e)})}
def send_line_message(reply_token, text):
url = "https://api.line.me/v2/bot/message/reply"
headers = {"Content-Type": "application/json", "Authorization": f"Bearer {LINE_ACCESS_TOKEN}"}
data = {"replyToken": reply_token, "messages": [{"type": "text", "text": text}]}
requests.post(url, headers=headers, json=data)
3. LINE Messaging API のセットアップ
- LINE Developers コンソールで新規プロバイダーを作成
- 新しいチャネル(Messaging API) を作成
- Channel ID, Channel Secret, LINE Access Token を取得
- Webhook URL を後で設定(AWS API Gateway の URL)
- Webhook の利用を「オン」にする
4. AWS API Gateway の設定(LINE と Lambda の接続)
- API Gateway で新しい API を作成
- HTTP API を作成し、統合ターゲットに Lambda を指定
- CORS 設定を有効化
- デプロイしてエンドポイント URL を取得
- LINE Developers コンソールに Webhook URL を設定
https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/webhook
5. ボットの実装とデプロイ
以上で Amazon Bedrock と LINE を連携したチャットボットの構築が完了です!