Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

Yuki Horikoshi

April 19, 2023
Tweet

More Decks by Yuki Horikoshi

Other Decks in Technology

Transcript

  1. SUZURI事業部 エンジニア 2022年 7月入社 2 自己紹介 堀越 優希 Horikoshi Yuki • 元高等学校の国語科教員

    27歳 • 2020年7月にエンジニアになりました • 現在はRails/Reactの開発が中心 • マジックが趣味です • 好きな言葉は「なかよし」です
  2. どう作ったのか 〜構想編〜 特徴の洗い出し テックブログを書きやすくする ために、登壇した後に残るもの (音声や資料)を用いて、記事の 概要を作ることにしました。 まずは「ペパボのテックブログ」 の特徴を洗い出すことから始め ました。 広報の方が担当しました。

    登壇の音声を活用 発表の音声を文字に変換して、 それを要約することができれば テックブログの記事に近づくの ではないかと考えました。 そこで、音声から文字の変換が できるOpenAIのSpeech to TextのAPIを使用することに しました。 登壇の資料を活用 記事の精度を高めるため、登壇 に用いた資料を一緒に利用す ることを検討しました。 様々な形式の登壇資料があり ましたが、PDFとしてエクス ポートできそうなものがほとん どだったため、PDFをテキスト にする方法も検討しました。 11
  3. 音声を文字起こしするところまでは 簡単にできましたが、その大量のテ キストデータをどのように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 ※
  4. 18 どう作ったのか 〜実装編〜 1. 最初に、発表元の音声データをSpeech to text APIで 解析し、文字起こしデータに変換します。 2.

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