正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

コード提案

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

コード提案は以下で利用可能です:

  • GitLab Duo Agent Platform。課金は利用量に基づいています
  • GitLab Duo Core、Pro、またはEnterprise、GitLab Duo with Amazon Q。課金はアドオンに基づきます。

GitLab Duoコード提案を使用すると、開発中に生成AIを使用してコードを提案することにより、より効率的にコードを作成できます。

前提条件

コード提案を使用するには、以下の手順に従います:

GitLab DuoにはGitLab 17.2以降が必要です。GitLab Duo Coreにアクセスして、最高のユーザーエクスペリエンスと結果を得るには、GitLab 18.0以降にアップグレードしてください。以前のバージョンでも引き続き動作する可能性はありますが、エクスペリエンスが低下するおそれがあります。

コード提案を使用する

コード提案を使用するには、以下の手順に従います:

  1. サポートされているIDEでGitプロジェクトを開きます。

  2. git remote addを使用して、ローカルリポジトリのリモートとしてプロジェクトを追加します。

  3. 隠し.git/フォルダーを含むプロジェクトディレクトリを、IDEワークスペースまたはプロジェクトに追加します。

  4. コードを作成します。入力すると、提案が表示されます。コード提案は、カーソルの位置に応じてコードスニペットを提示するか、現在の行を補完します。

  5. 要件を自然言語で記述します。コード提案は、提供されたコンテキストに基づいて関数やコードスニペットを生成します。

  6. 提案を受け取ったら、次のいずれかを実行できます:

    • 提案を受け入れるには、Tabを押します。
    • 部分的な提案を受け入れるには、Control+右矢印またはCommand+右矢印を押します。
    • 提案を拒否するには、Escを押します。Neovimでメニューを終了するには、Control+Eを押します。
    • 提案を無視するには、通常どおり入力を続けます。

複数のコード提案を表示する

VS Codeのコード補完候補では、複数の候補オプションを利用できる場合があります。利用可能なすべての候補を表示するには、以下の手順に従います:

  1. コード補完候補にカーソルを合わせます。
  2. 代替案をスクロールします。次のいずれかの操作を行います:
    • キーボードショートカットを使用します:
      • Macでは、Option+[を押して前の候補を表示し、Option+]を押して次の候補を表示します。
      • LinuxとWindowsでは、Alt+[を押して前の候補を表示し、Alt+]を押して次の候補を表示します。
    • 表示されるダイアログで、右矢印または左矢印を選択して、次または前のオプションを表示します。
  3. Tabを押して、希望する候補を適用します。

コード補完と生成

コード提案は、次のようなコード補完とコード生成を使用します:

コード補完コード生成
目的現在のコード行を補完するための候補を提供します。自然言語のコメントに基づいて新しいコードを生成します。
トリガー入力中にトリガーされます。通常、短い遅延が発生します。特定のキーワードを含むコメントを記述した後、Enterを押すとトリガーされます。
スコープ現在の行または小さなコードブロックに制限されます。コンテキストに基づいて、メソッド、関数、またはクラス全体を生成できます。
精度小規模なタスクや短いコードブロックの場合に、より正確です。より大きな大規模言語モデル(LLM)が使用され、追加のコンテキスト(たとえば、プロジェクトで使用されるライブラリ)がリクエストで送信され、指示がLLMに渡されるため、複雑なタスクや大きなコードブロックの場合により正確です。
使い方コード補完が、入力中の行の補完を自動的に提案します。コメントを記述してEnterを押すか、空の関数またはメソッドを入力します。
使用すべき時1行または数行のコードをすばやく完成させたい場合に、コード補完を使用します。より複雑なタスク、より大きなコードベース、自然言語の説明に基づいてゼロから新しいコードを書きたい場合、または編集するファイルが5行未満のコードしかない場合に、コード生成を使用します。

コード提案は常にこれらの両方の機能を使用します。コード生成のみ、またはコード補完のみを使用することはできません。

コード補完とコード生成の比較デモを見る

コード生成のベストプラクティス

コード生成で最良の結果を得るには、次を参考にしてください:

  • シンプルさを保った上で、できるだけ具体的にしてください。
  • 生成する結果(関数など)を記述し、何を達成したいかについて詳しく説明してください。
  • 使用するフレームワークやライブラリなど、詳細な情報を追加してください。
  • 各コメントの後にスペースまたは改行を追加してください。こうしたスペースにより、指示が完了したことをコードジェネレーターに伝えられます。
  • レビューを行い、コード提案に利用できるコンテキストを調整します。

たとえば、特定の要件を持つPython Webサービスを作成するには、次のように記述します:

# Create a web service using Tornado that allows a user to sign in, run a security scan, and review the scan results.
# Each action (sign in, run a scan, and review results) should be its own resource in the web service
...

AIは決定的ではないため、同じ入力を使用しても毎回同じ候補が得られるとは限りません。高品質なコードを生成するには、明確かつ記述的で具体的なタスクを記述してください。

ユースケースとベストプラクティスについては、GitLab Duoの例のドキュメントに従ってください。

利用可能な言語モデル

異なる言語モデルをコード提案のソースにすることができます。

パフォーマンス

コード提案のデフォルトの応答時間、およびストリーミング、プロンプトキャッシュ、接続設定のオプションについて学習します。

応答時間

コード提案は、生成AIモデルによって強化されています。

  • コード補完の場合、通常、提案は低レイテンシーです。1秒未満で完了します。
  • コード生成の場合、アルゴリズムまたは大きなコードブロックの生成に5秒以上かかる場合があります。

パーソナルアクセストークンを使用すると、GitLab.comまたはGitLabインスタンスへの安全なAPI接続が可能になります。このAPI接続により、IDE/エディタからGitLab AIゲートウェイ(GitLabホストサービス)にコンテキストウィンドウを安全に送信できます。ゲートウェイは大規模言語モデルAPIを呼び出し、生成された候補がIDE/エディタに送り返されます。

ストリーミング

コード生成応答のストリーミングはJetBrainsとVisual Studioでサポートされており、認識される応答時間が短縮されます。その他のサポートされているIDEは、生成されたコードを単一のブロックで返します。

コード補完では、ストリーミングは有効になっていません。

プロンプトキャッシュ

プロンプトキャッシュは、コード提案のレイテンシーを改善するために、すべてのFireworksホストモデルでデフォルトで有効になっています。

プロンプトキャッシュが有効になっている場合、コード補完プロンプトデータは、モデルベンダーによって一時的にメモリに保存されます。

プロンプトキャッシュは、キャッシュされたプロンプトと入力データの再処理を回避することで、レイテンシーを大幅に改善します。キャッシュされたデータは、永続ストレージに記録されません。

プロンプトキャッシュをオフにする

GitLab Duo設定で、トップレベルグループのプロンプトキャッシュをオフにすることができます。これにより、GitLab Duo Agentic Chatのプロンプトキャッシュもオフになります。

前提条件:

  • GitLab Self-Managedインスタンスの管理者アクセス権。

GitLab.comの場合:

  1. 上部のバーで、検索または移動先を選択して、グループを見つけます。
  2. 設定 > GitLab Duoを選択します。
  3. 設定の変更を選択します。
  4. プロンプトキャッシュ切替を無効にします。
  5. 変更を保存を選択します。

GitLab Self-Managed:

  1. 右上隅で、管理者を選択します。
  2. 左側のサイドバーで、GitLab Duoを選択します。
  3. 設定の変更を選択します。
  4. プロンプトキャッシュで、プロンプトキャッシュを有効にするチェックボックスをオフにします。
  5. 変更を保存を選択します。

ダイレクト接続とインダイレクト接続

デフォルトでは、レイテンシーを最小限に抑えるため、コード補完リクエストはIDEからAIゲートウェイに直接送信されます。このダイレクト接続を機能させるには、IDEがhttps://cloud.gitlab.com:443に接続可能な状態である必要があります。これが不可能な場合は(たとえば、ネットワーク制限のため)、すべてのユーザーに対してダイレクト接続を無効にできます。この場合、コード補完リクエストはGitLab Self-Managedインスタンスを介して間接的に送信され、次にリクエストがAIゲートウェイに送信されます。これにより、リクエストのレイテンシーが高くなる可能性があります。

ダイレクト接続またはインダイレクト接続を設定する

前提条件:

  • GitLab Self-Managedインスタンスの管理者である必要があります。
  1. 右上隅で、管理者を選択します。
  2. 左側のサイドバーで、設定 > 一般を選択します。
  3. GitLab Duoの機能を展開します。
  4. 接続方法で、オプションを選択します:
    • コード補完リクエストのレイテンシーを最小限に抑えるには、ダイレクト接続を選択します。
    • すべてのユーザーに対してダイレクト接続を無効にするには、GitLab Self-Managedを介した間接的接続を選択します。
  5. 変更を保存を選択します。
  1. 右上隅で、管理者を選択します。
  2. 左側のサイドバーで、設定 > 一般を選択します。
  3. AIネイティブ機能を展開します。
  4. オプションを選択します:
    • ダイレクト接続を有効にし、コード補完リクエストのレイテンシーを最小限に抑えるには、コード提案のダイレクト接続を無効にするチェックボックスをオフにします。
    • ダイレクト接続を無効にするには、コード提案のダイレクト接続を無効にするチェックボックスをオンにします。

制限

ファイルコンテンツの切り捨て

LLMの制限とパフォーマンス上の理由により、現在開いているファイルのコンテンツは次のトークン以降で切り捨てられます:

  • コード補完の場合: 32,000トークン(約128,000文字)まで。
  • コード生成の場合: 80,000トークン(約320,000文字)まで。

カーソルより上のコンテンツは、カーソルより下のコンテンツよりも優先されます。カーソルより上のコンテンツは左側から切り捨てられ、カーソルより下のコンテンツは右側から切り捨てられます。これらの数値は、コード提案の最大入力コンテキストサイズを表しています。

コード生成の制限を引き上げるサポートは、イシュー585841で提案されています。

出力の長さ

LLMの制限とパフォーマンス上の理由から、コード提案の出力は次のように制限されています:

  • コード補完の場合: 64トークン(約256文字)まで。
  • コード生成の場合: 2048トークン(約7168文字)まで。

結果の精度

当社では、生成されたコンテンツ全体の精度を向上させるため、継続的に改善を行っています。ただし、コード提案では、次のような提案が生成される可能性があります:

  • 無関係なもの。
  • 不完全なもの。
  • パイプラインで失敗する可能性が高いもの。
  • 潜在的に脆弱なもの。
  • 不快または配慮のないもの。

コード提案を使用する場合でも、コードレビューのベストプラクティスが引き続き適用されます。

フィードバック

イシュー435783で、コード提案のエクスペリエンスに関するフィードバックをお寄せください。