Chunk Translator: 長い文章も細かく分割してLLMに翻訳させる
(translate.winterjung.dev)長めに書いたブログ記事を、文の抜け漏れなく翻訳したいと思い、文章を段落ごとに分けて翻訳したあと再結合できる小さなHTMLツールを作ってみました。
- ChatGPTのようなLLMに丸ごと翻訳を依頼すると、文を1つずつ落としてしまったり、勝手に要約してしまったりするなど、一度にうまくいかないことが多いんですよね。
- プロンプトをさらに調整する方法もあると思いますが、それよりもコピー&ペーストして翻訳ボタンを押すだけでも十分な結果を得たくて、長文をチャンクごとに分割し、小さなモデルに並列で翻訳させられるようにしました。
- オプションとして、小さなモデルにリクエストを送る際、よりコンテキストを踏まえた翻訳ができるように、賢いモデルで一度要約した内容を添えて送ることもできます。
- チャンクごとの翻訳で改善したい点があれば、指示を追加して各チャンクだけを再翻訳できます。
- 別途サーバーを用意せず、static single HTML pageとして動作するため、各ユーザーごとのproviderとAPI keyの設定が必要です。ネットワークインスペクタやソースコードを見れば分かる通り、OpenAI、OpenRouterなどのLLM API provider以外に機密情報を送信することはありません。analyticsツールも入れていません。
- API keyがなくてもデモとして使っていただけるようにしたかったのですが、この点をどう実現するかはまだ検討中です。
コードはgithub repoにあるので、ダウンロードして使っていただいても構いません(index.htmlファイルをブラウザで開くだけで同じように使えます)。貢献、Issue報告、質問、フィードバックはすべて歓迎です。
3件のコメント
まさに必要だったものなので、ありがとうございます。字幕はその問題のせいで
gui-subtransのように1行ずつ依頼するものがあったのですが、平文はそういうサービスでこれといって思い当たるものがなくて(OpenAIが提供していた翻訳ページはほとんど壊れていましたし =_=...)、困っていました。いいですね..個人的な用途で、SwiftUI で Apple Translator API(ローカルで動作します)を使い、内部的に行を分割して翻訳をリクエストするアプリを作ったのですが。ブラウザからでもその API を呼び出せるなら、その方法でデモを提供してもいいのではないか?と考えていました。デバイス API なので、おそらく無理そうではありますが……
ウェブページ向けでもありますが、文書翻訳やほかの用途にも良さそうですね。 :)