この記事を読むのに必要な時間は 約9分 です。
こんにちは、しんじです。
前回(Pythonで生成AIにチャレンジ!第1回)ではOpenAI API を使って、Pythonで自作の進捗確認ボットを動かしてみました。
今回はAWSの Amazon Bedrock を利用して、同じようなボットを作ってみます!
- 仕事ではAWSを使っています!
- Amazonって通販サイト!?
- 私は Bedrocker です!!!
という方は、是非ご覧ください!
⚡️ Amazon Bedrock を使う準備
1. AWS認証情報を設定する
AWS CLIを使い,シングルサインオン (SSO) でログインします。
ログインに必要なコマンド&情報は、IAM Identity Center を使用している場合はアクセスポータルから確認できます。


アクセスポータルの案内(推奨)を参考に、SSO認証に必要な情報を入力します。
(URL, Region, Profile名等)Profile name
は後で設定するときに使用するので、分かりやすい名称で設定しておくと良さそうです。
$ aws configure sso
SSO session name (Recommended): llm
SSO start URL [None]: https://d-123456aa90.awsapps.com/start/#
SSO region [None]: ap-northeast-1
SSO registration scopes [sso:account:access]:
〜ブラウザを起動して AWS SSO でログイン認証します〜
〜認証完了後に利用するアカウント等を選択します〜
Default client Region [None]: ap-northeast-1
CLI default output format (json if not specified) [None]: json
Profile name [AdministratorAccess-123456789012]: llm
途中でブラウザが開いて認証が完了した後、プロファイルをデフォルト設定します。
export AWS_DEFAULT_PROFILE=llm
この設定をしておくと、 aws cli
コマンドを使用するときに --profile profile-name
を入力せずに操作することができるようになります。
2. Amazon Bedrock でモデルアクセスを有効化
Amazon Bedrock は様々な生成AIモデルをAWSから利用することができるサービスです。
例えば、ほとんどコードを変更することなく、複数のモデルを切り替えて利用することもできます。
今回は Anthropic
社が提供する Claude
を利用するので、以下の手順で、モデルアクセスを有効化します。
Claude は OpenAI のモデルと同等以上の性能でテキスト生成でき、特にコーディングにおいては高い性能を発揮しています。詳しくは Claude公式ドキュメントへ 。
- Amazon Bedrock コンソール の “Bedrock configurations” から「モデルアクセス」を選択
Claude 3.5 Haiku
を有効化
※ 2025年4月時点での最新モデルClaude 3.7 Sonnet
を有効化して試すのもオススメです- 有効化するとき、ユースケースの申請(会社名や用途等)が必要になります
日本語でも良さそうですが、英語で記入するのが良さそうです
3. 環境準備
AWSを利用する準備ができましたので、サンプルコードを試すための仮想環境を作ります。
モジュールをインストールするための requirements.txt
は以下のように記載して保存しておきます。
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
requirements.txt
はこちら↓
boto3>=1.34.0
gradio>=4.0.0
🔖 実装コード
ターミナル版
ターミナル上で動く「進捗確認ボット」を作成します!
ファイル名を progress_bot.py
として、以下のコードをコピペします。
import json
import boto3
def main():
"""進捗確認ボットのメイン関数"""
print(
"""
╔══════════════════════════════════════╗
║ 🤖 生成AIサンプル 🤖 ║
╠══════════════════════════════════════╣
║ 進捗確認ボットを開始します。 ║
║ ║
║ このボットは、タスクの件名を ║
║ 入力するとAIが進捗確認の ║
║ コメントを生成してくれます。 ║
║ ║
╚══════════════════════════════════════╝
"""
)
# Bedrockクライアントの初期化
bedrock = boto3.client("bedrock-runtime", region_name="us-west-2")
while True:
task = input("タスクの件名(空白で終了):")
if task.strip() == "":
break
prompt = f"件名「{task}」の進捗確認コメントを答えるAIアシスタントとして話してください。"
# Bedrock APIリクエストの作成
request_body = {
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 1000,
"messages": [{"role": "user", "content": prompt}],
}
# Bedrock APIを呼び出し
response = bedrock.invoke_model(
modelId="anthropic.claude-3-5-haiku-20241022-v1:0",
body=json.dumps(request_body),
)
# レスポンスの解析
response_body = json.loads(response.get("body").read())
reply = response_body["content"][0]["text"]
print(f"AI: {reply}\n")
if __name__ == "__main__":
main()
準備ができたら、以下のコマンドで実行します。
python progress_bot.py
ターミナル上でプロンプトを入力することで、以下の動作を試せます。
- タスクの件名を入力すると
- Amazon Bedrockの Claude 3.5 Haiku を使って、進捗確認コメントを生成
- すぐに実用できそうなコメントを返してくれます!
Webアプリ版
次は、Gradioを使った簡易Webアプリ版です。
フィアル名を progress_bot_web.py
として、以下のコードをコピペします。
import json
import boto3
import gradio as gr
def ask_progress(task: str) -> str:
"""タスクの進捗確認コメントを生成する関数
Args:
task (str): 進捗確認を行うタスクの件名
Returns:
str: 生成された進捗確認コメント
"""
prompt = (
f"件名「{task}」の進捗確認コメントを答えるAIアシスタントとして話してください。"
)
# Bedrockクライアントの初期化
bedrock = boto3.client(
"bedrock-runtime",
region_name="us-west-2",
)
# Bedrock APIリクエストの作成
request_body = {
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 1000,
"messages": [{"role": "user", "content": prompt}],
}
# Bedrock APIを呼び出し
response = bedrock.invoke_model(
modelId="anthropic.claude-3-5-haiku-20241022-v1:0",
body=json.dumps(request_body),
)
# レスポンスの解析
response_body = json.loads(response.get("body").read())
return response_body["content"][0]["text"]
def main() -> None:
"""Gradioを使用して進捗確認ボットのWebインターフェースを起動する"""
# Gradioでインターフェース作成
demo = gr.Interface(
fn=ask_progress,
inputs="text",
outputs="text",
title="進捗確認ボット",
)
demo.launch()
if __name__ == "__main__":
main()
準備ができたら、以下のコマンドで実行します。
python progress_bot_web.py
実行すると、ブラウザでアプリが起動します。もし自動でブラウザが起動しない場合は、 localhost:7860
にアクセスしてみましょう。
このアプリでは、テキスト入力だけで進捗コメントを作成してくれます。
左側の task
に進捗確認でやるべきタスクを入力すると、 右側の output
に進捗確認のコメントを作成してくれます。

✨ まとめ
今回は AWS が提供する Amazon Bedrock を使ったシンプルなテキスト生成ユースケースを試してみました。
Amazon Bedrock を使うことで、
- AWS様々なモデルを、ほとんどコードを変更せずに利用可能
- 必要なモデルを必要な分だけ従量課金制で利用可能
という感じで、生成AIをサクッと活用可能です。
AWS には Bedrock 以外にも様々なサービスがありますので、例えば議事録作成システムやコールセンターのサポートシステム等に生成AIを組み込むことが比較的簡単にできます。
また、AWS 自体がセキュリティ承認が済んでいる場合、多くの承認手続きが不要になるような会社もあるかもしれません。
ということで、生成AIを身近に感じてもらえたら幸いです。
では次回こそは:「日報サポートツール」に挑戦します…!!(ほんとうか??w
お楽しみに!
コメント