📝

「長文から長文を生成するLLMツールをオープンソースで作ってみた」という登壇をしました

2024/03/24に公開

株式会社ジェイテックジャパン CTOの高丘 @tomohisaです。2024年3月23日、N.NETラボ 勉強会 2024年3月(AD, AOAI,新型Surfaceなど)で登壇しました!

https://dotnetlab.connpass.com/event/311594/

登壇資料はこちらです。

https://speakerdeck.com/tomohisa/chang-wen-karachang-wen-wosheng-cheng-surullmturuwoopunsosudezuo-tutemita

Youtubeでも公開されていますのでご覧ください。

https://www.youtube.com/live/w8S5LEU1-Rc?si=knQj3N3q_M9ogLAf&t=13594

「長文から長文を作るLLMツール」

抱えていた課題

LLMを使っていて今までこんなことで困ったことはありませんか?

  • 長文を訳そうとして貼り付けたら、全部一気に実行せずに、continueを押しても途中でバグってしまう
  • 長文を同じチャットに貼り付けると、LLMの作業キャパを超えるので別チャンネルで実行して、整理ができない
  • 別のLLMとの動作を比較したいがいろんなところに貼るのが面倒
  • 本当に長い文を全部翻訳したりするときに、貼る量の管理が難しい
  • ブラウザに貼って、待って、ローカルに結果を貼れば全部実行できるが、時間がかかりすぎて面倒

欲しいユースケース
長文から長文の結果が欲しい。GPTはサマリーが得意だから例になっているが必ずしもサマリーが欲しいわけではない。長文があればいつでも要約できる

アプリケーションの設計

  • 長文を分割して実行するツール
  • 綺麗に長文を分割してLLMに渡して全実行する
  • 全ての結果を結合する。前後のコンテキストは渡さない
  • 並列実行で実行を高速に
  • Azure OpenAI, OpenAI, Gemini, Anthropic Claude Opus同時実行して、比較できる
  • ローカルファイルからローカルファイルを作成するコンソールアプリ
  • 複数の指示文を連続で実行してくれる
  • 入力ファイルがなくても、指示文だけの質問にも答えてくれる

処理の流れ

技術的なポイントなど

上記のプログラムを作成して、オープンソースでリリースしました。
Long2Long

処理の流れ

  • C# コンソールアプリケーション
  • 設定が多いので、JSONファイルで設定する
  • ファイルで入力 ファイルで出力
  • オープンソースなので、誰でも今から使えます!

LLMを使用する方法は色々ありますが今回はシンプルでいいのでAPIを直接叩くようにします。

各サービスのAPIキーを取得する

APIのキーは各サービスから取得可能。個人でOpenAIやClaudeを購入するよりは安い(はず)

同時実行耐性は?

APIのキーを使って同時アクセスすると、同時接続エラーが出る場合があるため、同時実行の制限をする必要がある

  • Azure OpenAI かなり強い - 3スレッド同時実行でほぼエラーにならない 結果は遅い
  • OpenAI かなり強い - 3スレッド同時実行でほぼエラーにならない 結果は遅い
  • Anthropic Claude Opus あまり強くない - 3スレッド同時実行で結構エラーが出る。日によるので多分サーバー自体がBusyになっている 実行は遅い
  • Google Gemini 同時実行したらエラーになる、直列実行 でもめちゃくちゃ早い Gemini Pro 1.0

デモ

  • 日本語の字幕ファイルを英語に訳す
  • 日本語の字幕ファイルを英語に訳す + 英語に訳した後にその英語ファイルをマークダウン化する
    • 個人的には英語のテキストを和訳してその後マークダウン化して読んでいる
  • 質問だけをした場合1 c#とjavaのメリットデメリットを書かせる
  • 質問だけをした場合2 各LLMにプログラマーにわかるジョークを書かせる

https://x.com/tomohisa/status/1771452507182571856?s=20

https://x.com/tomohisa/status/1771452834220810692?s=20

https://x.com/tomohisa/status/1771452700581888155?s=20

https://x.com/tomohisa/status/1771452283319931279?s=20

Azure Open AIの1つめを登壇で読んだら、その解釈が会場で始まってしまい、登壇が止まってしまいましたw それなりに面白い話を作ってくれるから興味深いですね。

まとめ

  • L2Lコンソールは個人的にすごく便利
  • 検索とか、Function Calling、Code Interpreterなどの機能は使えずに、純LLMの機能だけなので万能ではない
  • ファイルで保存しているため、テキストだけある英語の本の全翻訳など、ローカルで検索できるのですごく便利、管理ができる
  • Webサービス化して、それぞれが自分のAPIキー入れて動作させるとかできるかもですが、APIの費用はかなりかかる
ジェイテックジャパンブログ

Discussion