オートコンプリートの仕組み
タイミングの最適化、コードベースからのコンテキスト取得、AIによるコード提案を改善するためのフィルタリングなど、Prometheusのオートコンプリートがどのように動作するかを理解しましょう。
オートコンプリートのタイミング最適化
リクエストを送りすぎることなく、迅速に提案を表示するために、以下の処理を行っています:- デバウンス(Debouncing): 素早く入力している間は、一打ごとにリクエストを送ることはしません。代わりに入力が一段落するまで待ちます。
- キャッシュ(Caching): すでに補完を生成したことのある位置にカーソルがある場合、その結果を再利用します。例えば、一文字消した(Backスぺース)際、直前に表示されていた提案を即座に再表示できます。
コードベースからのコンテキスト取得
Prometheusは、プロンプトに含めるため、コードベースから関連するスニペットを見つけるための複数の取得メソッドを使用しています。AI提案のフィルタリングと後処理
言語モデルは完璧ではありませんが、出力を調整することで精度を大幅に高めることができます。提案を表示する前に、以下のような広範な後処理を行っています:- 特殊トークンの削除
- 長大で無関係な出力を避けるため、コードの再生成を早めに打ち切る
- 適切な書式にするためのインデントの修正
- 過度な繰り返しがあるものなど、低品質な回答の破棄
次の変更や追加を予測するAIをお探しですか? ネクストエディット (Next Edit) をチェックしてみてください。これは、入力し始める前にコードの変更を先回りして提案する実験的な機能で、従来のオートコンプリートを超えて、コード修正全体を予測します。