4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Bedrock で LINE Chat Bot を構築する

Last updated at Posted at 2025-02-02

概要

Amazon Bedrock と LINE を組み合わせてチャットボットを作成する手順(東京リージョン版)を紹介します!
この構成では、Amazon Bedrockを使用して AI の応答を生成し、LINE Messaging API を通じてユーザーとやり取りを行いたいと思います。
名称未設定ファイル.drawio-3.png

手順の概要

  1. Amazon Bedrock のセットアップ
  2. AWS Lambda の設定(Bedrock との連携)
  3. LINE Messaging API のセットアップ
  4. AWS API Gateway の設定(LINE と Lambda の接続)
  5. ボットの実装とデプロイ

1. Amazon Bedrock のセットアップ

① Amazon Bedrock を有効化

  • AWS マネジメントコンソール にログイン
  • Amazon Bedrock サービスを開く
  • リージョンを ap-northeast-1(東京) に変更
  • Amazon Bedrock Model Access Request (生成AIのモデル利用の手続き)
    • 初めて利用する場合は利用申請をする
      スクリーンショット 2025-02-02 11.20.11.png

② 利用可能なモデルを確認

以下の 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 コンソールを開く
  • 新しい関数を作成
    • 名前: BedrockLineBot
    • ランタイム: Python 3.10
    • 実行ロール: 基本的なLambdaアクセス権限で新しいロールを作成
      スクリーンショット 2025-02-02 12.27.30.png

② Bedrock のアクセスロールを追加

  • AWS IAM コンソールを開く
  • Lambda の実行ロールを編集
  • AmazonBedrockFullAccess ポリシーをアタッチ
    スクリーンショット 2025-02-02 12.33.24.png

③ Lambda レイヤーの設定(requests モジュール追加)

今回はPythonのrequestsモジュールの利用が必要になります。

  1. AWS Lambda コンソールLambda レイヤー を開く
  2. 「レイヤーを作成」をクリック
  3. レイヤー名: requests-layer
  4. ZIP ファイル(requests_layer.zip)をアップロード
  5. ランタイム: Python 3.10
  6. 作成をクリック

④ 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 のセットアップ

  1. LINE Developers コンソールで新規プロバイダーを作成
  2. 新しいチャネル(Messaging API) を作成
  3. Channel ID, Channel Secret, LINE Access Token を取得
  4. Webhook URL を後で設定(AWS API Gateway の URL)
  5. Webhook の利用を「オン」にする
    スクリーンショット 2025-02-02 12.08.02.png
    スクリーンショット 2025-02-02 19.20.47.png

4. AWS API Gateway の設定(LINE と Lambda の接続)

  1. API Gateway で新しい API を作成
  2. HTTP API を作成し、統合ターゲットに Lambda を指定
  3. CORS 設定を有効化
  4. デプロイしてエンドポイント URL を取得
  5. LINE Developers コンソールに Webhook URL を設定
    スクリーンショット 2025-02-02 19.29.32.png
    スクリーンショット 2025-02-02 19.19.31.png
https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/webhook

スクリーンショット 2025-02-02 19.30.29.png

5. ボットの実装とデプロイ

  1. Lambda コードを保存し、デプロイ
  2. API Gateway 経由で LINE からリクエストが来たときに Bedrock に問い合わせる よう設定
  3. LINE で動作確認
    IMG_5846 2.PNG

以上で Amazon Bedrock と LINE を連携したチャットボットの構築が完了です!

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?