31
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

教科書・本を自動生成するツールをChatGPTで作ってみた

Last updated at Posted at 2024-10-12

教科書をLaTeXおよびPDFファイルで自動生成するツールを作りました!

プログラムはGithubで公開しており,Google Colabで実行できます.
ツールの名前は,AutoGenBookとしました.
以下はAutoGenBookを使って「機械学習のための線形代数」についての教科書を出力した結果です.PDFはこちらに置いています.

思ったよりもいい感じにできました!
「機械学習のための線形代数」は既に存在しそうな教科書ですが,
あなたのバックグラウンドを考慮した上で,あなたの知りたい分野の教科書を数円くらいで作ることができます!

使い方

OpenAI APIの取得と登録

本ツールはOpenAIのAPIキーが必要です.
OpenAIのAPIキーを取得した後,Google Colabの左側メニューの鍵アイコンをクリックし,OpenAIのAPIキーをopenai_apiと名付けて登録してください.
詳細なやり方を知りたい方は,OpenAIのAPIキーについてはこちら,Google Colabへの登録についてはこちらなどを参照ください.

Google Colabでの実行

↓ を押してもらえると,Google Colabに飛べます.
Open In Colab

AutoGenSageの中身

詳細はプログラムの内容を見てもらえばわかると思いますが,簡単にアイデアと処理の流れを説明します.

概要

ChatGPTには出力量に制限があるため,「教科書を作ってほしい」と頼んでも、1〜2ページ程度の内容しか出力されません.
そこで、ある本の主題・タイトルを起点として、大見出し(章)→中見出し(節)→小見出し(項)→...のように,ChatGPTを用いて意味的に独立した区分に再帰的に分割します.
これにより,本の全体構成をChatGPTの出力量に縛られることなく自動生成することができます.
そして,最終的に分割された各小区分に関する本文の内容をChatGPTによって生成し,PDFとして出力します.

処理の流れ

以下に,おおまかな処理の流れを示します.同じ処理を行うところは一部省略しています.
また,項の生成までで止めていますが,それ以降の分割処理は続きます.

今後改良したい内容

  1. 全体でコンパイルする前に各区分をコンパイルして,エラーがないか確認する.エラーがでるのであれば,再度ChatGPTに出力させる.
  2. ある区分の内容を出力させる際、前後の区分の概要または内容も考慮させることで、出力内容の重複をなくし、文章の流れを滑らかにする.
  3. LLMにJSON形式で出力させているが,この辺りの処理が簡易なもので,JSON形式でないものを出力されるとエラーが出る.ちゃんとしたlangchainのパーサーを使って実装する.
31
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?