ヤマムギ

growing hard days.

*

ChatGPT APIをTeamsボットから使いました(AWS Lambda(Python) + API Gateway)

      2023/03/18

ChatGPT APIが有償で利用可能になったので、会社のTeamsボットに実装してみました。

TeamsからAPI GatewayとLambdaを使ってボットを構築した記録は、Microsoft TeamsのOutgoing Webhooksを使ってAWS Lambda(Python), Amazon API Gatewayとbotに書いています。
今回はこのLambdaからOpenAIのChatGPT APIを使ってみました。

OpenAIでAPIキーの作成

OpenAI API keysでAPIを使用するためのシークレットキーを作成しました。
OpenAIのアカウントが必要なのでない場合は作成します。

このままAPIを呼び出してみると、「You exceeded your current quota, please check your plan and billing details.」というエラーになりました。
支払情報を入力していないからですね。

OpenAIでクレジットカード登録

OpenAIの[Manage Account]の[Billing]-Payment methodsでクレジットカードを登録しました。
クレジットカードを登録して数分したらAPIリクエストが成功しました。

今回は後述のコードをLambda関数に新バージョンとして実装して、Lambdaのテスト機能でAPI呼び出しを試しました。

Lambdaに実装したコード

参考にしたサイト
* https://platform.openai.com/docs/api-reference/chat
* ChatGPT APIを使ったLineBotの作り方を、人格の与え方まで完全解説【プログラミング不要】

日本語で人格を指定できるのって面白いですね。
会社のボットなので、会社のビジョン、ミッション、バリューを行動指針に含めてみました。

この関数をhttps://github.com/yamamanx/teams_bot/blob/master/lambda_function.pyから実行して、応答を受け取ってます。

コスト

https://openai.com/pricingの記載を見ると、1,000トークン $0.002とのことです。

当初の制限で$120になっていました。
ひとまず$10超えたら通知、月$50までしか使えないとしました。

モデルに与えたテキストがprompt、レスポンスがcompletionで合計数がトークンとして計算されるようです。
どれぐらい使用できそうかは様子を見ながら予算化していきたいと思います。

動作確認

ちゃんと返してくれました。

サマリーを作るのも客観的にやってくれるので楽ちんですね。

実装方法に迷ったときもアドバイスを得るにはいいかもですね。
情報が正しいかどうかは公式ドキュメントを見たり検証は必要ですが。

APIキーのローテーションなど全体構成も含めたものは、最終的なデプロイが完了した時点で会社のブログにまとめたいと思います。

5秒タイムアウト

Outgoing Webhooksは5秒以内にレスポンスを返さないとエラーになり、ボットは「Sorry, there was a problem encountered with your request」というメッセージを返します。

暫定的な対応として、TeamsのIncoming Webhookも使って、特定のチャネルにChatGPTからのメッセージを返すようにもしています。

最終的にはBot Channels Registrationとか使って、5秒タイムアウトに依存しないボットにする予定です。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , ,

ad

ad

  関連記事

YouTubeチャンネル「ヤマムギ」をはじめました

YouTubeチャンネル「ヤマムギ」をはじめました。 2021年GWチャレンジと …

EC2 Linux ユーザーデータ実行ユーザーとカレントディレクトリの確認

きっと、rootなんだろうなあと認識してたのですが、自分の目で確認したことはなか …

AWS DeepLensセットアップの儀

AWS DeepLensのセットアップを開始します。 AWS DeepLensを …

IAM Access Analyzerの検出をEventBridgeルールで検知して通知する

やりたかったことは使用可能としているリージョンのIAM Access Analy …

AWS Summit 2016 Tokyoに参加してきました (Day3)

飛天3日目です。 JAWS-UGブースのすぐ前にあったこのお水がめちゃめちゃおい …

AWS Lambda KMSを使って環境変数を暗号化、復号化する(Python)

Lambda内で外部APIを使用する場合などをユースケースとして、環境変数をKM …

S3オブジェクトロックを試しました

S3オブジェクトロックが必要になる要件に今のところ、出会ってないのでまだ設定した …

RDS + VPC + Lambda + API Gateway + CloudFront + WAF + ACMでAPIを構築する

RDSのMySQLの情報を与えられたリクエストをキーにしてjsonで返すAPIを …

AWS Summit 2016 Tokyoに参加してきました (Day2)

馬込は非常に良い天気です。 泊まっている部屋が2Fでしたので窓を明けると歩いてい …

AWS CLIからIAM Identity CenterへサインインしてCodeCommitのリポジトリを使用する

Macで操作しました。 AWS CLIバージョンアップ [crayon-66a4 …