Skip to content

feat: フロンティアLLMモデルを使ってタイプミスを自動修正したい #679

Description

@kiyoka

Is your feature request related to a problem? Please describe. (提案は利用上の問題に関連していますか?記述してください。)
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

iOS版azooKeyが正式に自動修正をサポートするまでの間の暫定機能となる可能性がありますが、
iOS標準のキーボードアプリの自動修正に慣れていたので、azooKeyでも自動修正をしてほしいです。
azooKey 3.0.2の挙動は以下のようになっています。

  • ユーザー入力(sとdをミスタイプした様子)
    iPhoneの画面は狭いので、隣のキーを押しがち
ryoukaishimadhita
  • azooKey 3.0.2の変換結果
了解しまでぃた 了解しまでぃ立ち 了解しまでぃ他の 了解しまでぃ短い

Describe the solution you'd like (あなたの考える解決策を記述してください)
A clear and concise description of what you want to happen.

GPT-5などのフロンティアモデルを使えば、かなりの精度でタイプミスを修正できることが実験で分かってきています。
ここぞという時に、GPT-5などのモデルを使って、自動修正した候補を変換候補の一覧に追加するアイデアです。

1秒程度キーボード入力がなかったら、タイプミスを含む文字列「ryoukaishimadhita」をOpenAI APIに渡してローマ字かな漢字変換を行い、変換候補の先頭に追加します。
以下は、「[了解しました]」を追加した直後の変換候補の状態をイメージしています。

[了解しました] 了解しまでぃた 了解しまでぃ立ち 了解しまでぃ他の 了解しまでぃ短い

OpenAI APIの呼び出しは従量課金のため、ライブ変換中に頻繁にAPI呼び出しされないよう、しばらくキー入力がなかった時だけ呼び出しを行うようなことをすれば良いのではと思います。
タイプミスした時は、何もせずしばらく待っていれば、助け舟が出るイメージです。

また、OpenAI APIの呼び出しを行うモジュールとして、以下の2つのうちどちらが適切かは検討が必要です。

  • AzooKeyKanaKanjiConverterの中でOpenAI APIを呼び出す
  • AzooKeyKanaKanjiConverterから変換候補が返ってきた後で、azooKey側でOpenAI APIを呼び出す

Describe alternatives you've considered (他の解決方法があれば記述してください)
A clear and concise description of any alternative solutions or features you've considered.

ほかの案は思いついていません。
将来的にはAzooKeyKanaKanjiConverterのアルゴリズムを改善し、許容できる時間で自動修復が出現するようにするのが良いと思います。

If we were to implement this feature, will you help implement it? (もし提案する機能を実装する場合、実装を手伝う余裕はありますか?)

Yes

forkして手元でお試し実装してみようと考えています。
API Keyを使うことから、本流に入れるかどうかはメリットとデメリットで判断して頂ければと思います。
(一旦入れた機能は削除し難いため)

Additional context (その他共有したい事項があれば記述してください)
Add any other context or screenshots about the feature request here.

OpenAI APIのAPI Keyの保存場所(keychain)や設定画面については都度相談したいとおもいます。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions