Slide 1

Slide 1 text

1 OpenAI APIを用いた 技術ブログ記事作成アプリを 開発した話 ほりゆう / GMO PEPABO inc. 2023.04.18 ChatGPTについてLT! TechDLT Vol.10

Slide 2

Slide 2 text

SUZURI事業部 エンジニア 2022年 7月入社 2 自己紹介 堀越 優希 Horikoshi Yuki ● 元高等学校の国語科教員 27歳 ● 2020年7月にエンジニアになりました ● 現在はRails/Reactの開発が中心 ● マジックが趣味です ● 好きな言葉は「なかよし」です

Slide 3

Slide 3 text

3 アジェンダ 1. OpenAIのAPIとは(ざっくり) 2. 何を作ったのか 1. なぜ作ったのか 3. どう作ったのか 1. 構想 2. ぶつかった壁 3. 実装 4. デモ動作 5. 今後の改善

Slide 4

Slide 4 text

4 OpenAIのAPIとは(ざっくり)

Slide 5

Slide 5 text

5 https://openai.com/blog/openai-api OpenAIが提供する AI技術を利用するためのAPIです。 Chatが注目を浴びていますが、他にも画像処理や 音声認識などさまざまなAPIが提供されています。 大規模なデータセットを学習した 強力なAIモデルを利用できます。 アプリ開発に用いたOpenAIのAPIの説明 OpenAIのAPIとは(ざっくり)

Slide 6

Slide 6 text

6 Chat × Speech to text APIの一覧 チャット以外にも、文章の補完、音声をテキストに するAPIなどが提供されています。 今回はChatのAPIとSpeech to textのAPI を使用しました。 OpenAIのAPIとは(ざっくり)

Slide 7

Slide 7 text

7 何を作ったのか

Slide 8

Slide 8 text

何を作ったのか https://tech.pepabo.com/ 8 テックブログ(技術のことを中心に書いたブログ)の 記事作成のハードルを下げるアプリ。 具体的には、発表の音声と発表の資料を元に、テック ブログの記事の概要を作成してくれます。 ペパボのテックブログの記事を増やしていきたい気 持ちで開発しました。 作成したアプリの概要

Slide 9

Slide 9 text

何を作ったのか 9 お産合宿という職種も部署も超えたさまざまなメン バーがチームを組んで参加する開発合宿で生み出さ れました。 エンジニア2名+広報1名のチームで参戦。 もしよろしければこちらの記事もご覧ください。 テーマは”AIで「人類のアウトプットを増やす」” 過去 最多!?の84名が参加!「お産合宿 2023」 因みに...

Slide 10

Slide 10 text

10 どう作ったのか

Slide 11

Slide 11 text

どう作ったのか 〜構想編〜 特徴の洗い出し テックブログを書きやすくする ために、登壇した後に残るもの (音声や資料)を用いて、記事の 概要を作ることにしました。 まずは「ペパボのテックブログ」 の特徴を洗い出すことから始め ました。 広報の方が担当しました。 登壇の音声を活用 発表の音声を文字に変換して、 それを要約することができれば テックブログの記事に近づくの ではないかと考えました。 そこで、音声から文字の変換が できるOpenAIのSpeech to TextのAPIを使用することに しました。 登壇の資料を活用 記事の精度を高めるため、登壇 に用いた資料を一緒に利用す ることを検討しました。 様々な形式の登壇資料があり ましたが、PDFとしてエクス ポートできそうなものがほとん どだったため、PDFをテキスト にする方法も検討しました。 11

Slide 12

Slide 12 text

12 “ つまり、こうしたい ”

Slide 13

Slide 13 text

ぶつかった壁...🙄 13

Slide 14

Slide 14 text

音声を文字起こしするところまでは 簡単にできましたが、その大量のテ キストデータをどのようにAPIに 送 るかが課題でした。 Whether your API call works at all, as total tokens must be below the model’s maximum limit (4096 tokens for gpt-3.5-turbo-0301) https://platform.openai.com/docs/guides/ chat/ 4,096tokenしか送れない... 長いテキストの対応 プロンプトの作成 ペパボのテックブログの特徴を洗 い出した結果、いくつかの傾向が見 られました。そのフォーマット通りに 要約を作成させるためのプロンプト 作りがかなり大変でした。 具体的には「イントロ、基礎知識、詳 細、結果、まとめ」という見出しと内 容でまとめて貰うために様々なプ ロンプトを考えました。 どう作ったのか 〜ぶつかった壁編〜 ※ tokenとは https://platform.openai.com/docs/guides/chat/managing-tokens 14 ※

Slide 15

Slide 15 text

15 うまくいかなかったもの→「要約を待たせる」「前の文章と合わせて要約をさせる」など。 そこで... 1度テキストを分割させてそれぞれ要約してもらい、 最後にそれらの集合体を(登壇資料の要約と一緒に)要約させました。 長いテキストへの対応 どう作ったのか 〜実装編〜

Slide 16

Slide 16 text

16 具体的なプロンプト 長いテキストへの対応 どう作ったのか 〜実装編〜

Slide 17

Slide 17 text

17 どう作ったのか 〜実装編〜

Slide 18

Slide 18 text

18 どう作ったのか 〜実装編〜 1. 最初に、発表元の音声データをSpeech to text APIで 解析し、文字起こしデータに変換します。 2. 次に、ChatAPIを使用して、文字起こしデータから発表の 要約を作成します。ただし、文字起こしデータは文字数が多 いため、分割して送信します。各データは、内容が欠如しな いようにプロンプトで指定し、箇条書きにまとめてもらいま す。 3. PDFの発表資料もChatAPIを使用して要約します。PDF はpdf-readerというrubyのライブラリを用いて、一度テ キストデータに変換してからAPIにリクエストをしていま す。ここでも、2と同様に箇条書きにまとめます。 4. 音声とスライドから抽出された2,3の要約データを使用し て、テックブログのフォーマットになるようにプロンプトで 指定し、再度ChatAPIにリクエストを行います。

Slide 19

Slide 19 text

19 補足:統合要約を記事の概要にする際のプロンプト どう作ったのか 〜実装編〜

Slide 20

Slide 20 text

20 デモ動作

Slide 21

Slide 21 text

21 デモ動作

Slide 22

Slide 22 text

22 今後の改善

Slide 23

Slide 23 text

サービス名や独自の言葉に関して、誤字が多いため改善を行いたいです。 23 23 今後の改善 それぞれCOLOR MEとBaytの誤字。両方会社独自のサービス名や用語。 2回目に出てくるBaytはおそらく 登壇資料のおかげで正しく出力されていますが、 1回目が誤字です。

Slide 24

Slide 24 text

24 今後の改善 LangChainを活用して、ペパボの事前知識に基づい た回答をさせたいです。 LangChain:ChatGPTなどの言語モデルの機能拡 張を効率的に行うことのできるライブラリ →これを用いて開発することで、事前にペパボの知 識やテックブログを踏まえた上でより正確な回答がで きる。 https://github.com/hwchase17/langchain 🦜 🔗

Slide 25

Slide 25 text

ご静聴ありがとうございました! 25