Slide 1

Slide 1 text

Lambda + Hono で OpenAI の LINE Chatbotを作ってみた 2023-11-12 Koda JAWS-UG 長野支部

Slide 2

Slide 2 text

Hello!! ❏ 「Web」とか「Cloud」が専門のエンジニア ❏ アジャイル大好きなスクラムマスター ❏ プログラミングも大好き ❏ 好きなサービスは AWS Lambda I’m Koda @koda3t(X)

Slide 3

Slide 3 text

AIとChat してますか? ● 無料だと3時間ごとに25メッセージ まで ● Googleアカウントでサインアップし て、支払いしてしまったのでアカウ ント共有もできない ● 息子くんに、対話型AIなどに触れて 上手く使えるようにしたい(でも、もう一 個契約するのもな〜)

Slide 4

Slide 4 text

? OpenAIのAPIを呼び出す インタフェースを作って 提供しよう!

Slide 5

Slide 5 text

作ってみた ● Cloudflare Workers + HonoでOpenAIのAPIに 繋ぐLINE Chatbotを作成 ● 10/14 Cloudflare Meetup Nagano でLT LINE ChatbotでAIに質問できる https://speakerdeck.com/koda/cloudflare-workers-de-openai-no-line-chatbotwozuo-tutemita

Slide 6

Slide 6 text

10/14のLTから ● デプロイが一瞬で終わって直ぐに反映されるのは、開発者体験としてはか なり良い! ● 環境の用意なども簡単なので、ちょっとしたものをサクッと作るにはとて も良さげ ● Honoがすごく良かった ○ Expressを知っていれば苦労しない ○ APIGateway+Lambdaな環境など、いろんな所で使えるので、 今後はHonoメインで使っていきたい LTのために昨日 実際に Lambda+Hono やってみた

Slide 7

Slide 7 text

What's Hono https://hono.dev/ ● API Gateway + Lambda な構成でAPIを 作成する事が多くなった ● ExpressでAPIを作る事が簡単と感じて いて App Runnerを使ったり ● Honoだと、LambdaでもExpress Likeに コードが書ける!

Slide 8

Slide 8 text

技術スタック ● AWS Lambda + Function URLs ○ みんな大好きFaaSの元祖サービス ○ Function URLsができたおかげで単体で簡単にWebに公開できるようになった ● Hono ○ バックエンドを開発しやすくしてくれるExpressに似たフレームワーク ● TypeScript ○ npm create hono@latest {projectname} で雛形を作成すると、初めからTypeScript が使える環境になっている ● OpenAI API ● Line Messaging API

Slide 9

Slide 9 text

システム構成

Slide 10

Slide 10 text

Lambda+Hono HonoはLambdaに対応しているから、CLIから雛形を作成可能

Slide 11

Slide 11 text

Lambda+Hono ● Cloudflare Workers + Honoで作ったコードをコ ピーしてくれば基本的には動く ○ 起動の書き方とかは少し変わる ● LambdaのFunction URLを使えば超簡単に公開でき るAPIを作成できる ● 今回は簡単にHonoがセットアップしてくれたコマ ンドでデプロイした(SAMやCDKは使わない)

Slide 12

Slide 12 text

作ってみての感想 ● 普段はSAMとかCDKとかでデプロイするのだけど、Honoが初めから提供する仕組みで デプロイすると超早くデプロイできたので、簡単なものだとこれで良いかも ○ もちろんSAMやCDKの組み合わせもできる ○ esbuildでbuildしてZipにしてAWS CLIでupdate-function-codeを実行 ● 環境の用意なども簡単なので、ちょっとしたものをサクッと作るにはとても良き ● Honoがやっぱりすごく良かった(コード書きやすい) ○ Cloudflare Workers用のコードを簡単に移植できた(他のものにも移植しやすい) ○ 秘匿な値の扱いなどはプラットフォーム依存があるのでラッパーを作っておくと良き ● Cloudflare Workersは1リクエストが30秒までという厳しい制限があったが、Lambdaであれ ば問題なし ○ OpenAIからのレスポンスが30秒で返ってこないことが多い

Slide 13

Slide 13 text

今後試してみたいこと(今回まにあわなかったこと) ● OpenAIのGPT3.5より高性能と言われている Claude 2がBedrockで使えるようになったので、 ChatBotに質問したら両方から回答がくるように する(評価してみたい) ● Claude 2を利用する場合、use case details を入力 する必要があるけど、個人利用の場合何を入れた ら良いのだろう??

Slide 14

Slide 14 text

Any Questions? Thanks!