$30 off During Our Annual Pro Sale. View Details »

OpenAI APIを用いた技術ブログ記事作成アプリを開発した話

OpenAI APIを用いた技術ブログ記事作成アプリを開発した話

Yuki Horikoshi

April 19, 2023
Tweet

More Decks by Yuki Horikoshi

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. 7
    何を作ったのか

    View Slide

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

    View Slide

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

    View Slide

  10. 10
    どう作ったのか

    View Slide

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

    View Slide

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

    View Slide

  13. ぶつかった壁...🙄
    13

    View Slide

  14. 音声を文字起こしするところまでは
    簡単にできましたが、その大量のテ
    キストデータをどのように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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. 20
    デモ動作

    View Slide

  21. 21
    デモ動作

    View Slide

  22. 22
    今後の改善

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide