Slide 1

Slide 1 text

Cloudflare Workers で OpenAI の LINE Chatbotを作ってみた 2023-10-14 Koda Cloudflare Meetup Nagano

Slide 2

Slide 2 text

Hello!! ❏ 「Web」とか「Cloud」が専門のエンジニア ❏ アジャイル大好きなスクラムマスター ❏ プログラミングも大好き ❏ 各種クラウド系の技術コミュニティに参加 I’m Koda

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

LINE Chatbotで提供 ● 息子くんのスマートフォンは利用時間の制限 をかけている(中学生なので) ● LINEは無制限にしている ● ウェブサイトで提供も考えたがブラウザを無 制限にするのは、、、、 ● チャットボットで提供すると制限とか考えな くて良い 完成イメージ

Slide 6

Slide 6 text

とはいっても、忙しいし 作っている暇はないなぁ、、、 (言い訳)

Slide 7

Slide 7 text

Cloudflare Workersワークショップ ServerlessDays Tokyo 2023に参加 https://tokyo.serverlessdays.io/ Day2のワークショップで Cloudflare Workers + Honoに触った そんなある日

Slide 8

Slide 8 text

こんなに簡単なら、ちょっと 作ってみるか!! →半日くらいでできました!

Slide 9

Slide 9 text

技術スタック ● Cloudflare Workers ○ エッジでバックエンドを動かせるサービス ○ 超速&超お安い(無料でかなり遊べる) ● Hono ○ Cloudflare Workersでバックエンドを開発しやすくしてくれるExpressに似たフレーム ワーク ● TypeScript ○ npm create hono@latest {projectname} で雛形を作成すると、初めからTypeScript が使える環境になっている ● OpenAI API ● Line Messaging API https://github.com/koda-masaru/chat-bot <作成したコード一式>

Slide 10

Slide 10 text

Demo

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

● Node.jsに完全に互換の環境ではないため、@line/bot-sdkが使えなかった ○ LINE APIをコールする部分は自前で実装 ● 処理途中の Canceled の原因特定に時間がかかった(c.executionCtx.waitUntilを使う) ○ waitUntilで実行しても処理がキャンセルされてしまう ○ BundledモデルではCPUの利用時間が50ミリ秒以内 ■ 外部APIを呼び出す時間は含まれないという記載もあったが途中でabortしてしまう ○ Unboundモデル(有料プラン)では30秒実行可能だが外部への通信時間を含む ■ 外部のAPIに依存している場合、30秒で終わることを保証できない ○ WorkersのQueueで処理すれば良いのか? ■ Queueも30秒でタイムアウトしてしまうという記載があるので変更しても意味はなさそう 作ってみての感想

Slide 13

Slide 13 text

癖はあるけど 面白い

Slide 14

Slide 14 text

Any Questions? Thanks!