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

コード提案API

このAPIを使用して、コード提案機能にアクセスします。

コード補完を生成

  • ステータス: 実験的機能
POST /code_suggestions/completions

このエンドポイントは、各ユーザーに対して1分あたり60リクエストにレート制限されています。

人工知能の抽象化レイヤーを使用して、コード補完を生成します。

このエンドポイントへのリクエストは、AIゲートウェイにプロキシされます。

パラメータは以下のとおりです:

属性必須説明
current_fileハッシュはいコード提案が生成されているファイルの属性。この属性が受け入れる文字列のリストについては、ファイルの属性を参照してください。
intent文字列いいえコード補完リクエストの目的。これは、completionまたはgenerationのいずれかです。
streamブール値いいえ応答を、準備ができ次第、より小さいチャンクとしてストリーミングするかどうか(該当する場合)。デフォルトはfalseです。
project_path文字列いいえプロジェクトのパス。
generation_type文字列いいえ生成リクエストのイベントのタイプ。これは、commentempty_function、またはsmall_fileにすることができます。
context配列いいえコード提案に使用される追加のコンテキスト。この属性が受け入れるパラメータのリストについては、コンテキストの属性を参照してください。
user_instruction文字列いいえコード提案に関するユーザーの指示。

ファイルの属性

current_file属性は、次の文字列を受け入れます:

  • file_name - ファイル名。必須。
  • content_above_cursor - 現在のカーソル位置より上のファイルの内容。必須。
  • content_below_cursor - 現在のカーソル位置より下のファイルの内容。オプション。

コンテキストの属性

context属性は、次の属性を持つ要素のリストを受け入れます:

  • type - コンテキスト要素のタイプ。これは、fileまたはsnippetのいずれかです。
  • name - コンテキスト要素の名前。ファイルまたはスニペットの名前。
  • content - コンテキスト要素の内容。ファイルまたは関数の本文。

リクエスト例:

curl --request POST \
  --header "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
  --data '{
      "current_file": {
        "file_name": "car.py",
        "content_above_cursor": "class Car:\n    def __init__(self):\n        self.is_running = False\n        self.speed = 0\n    def increase_speed(self, increment):",
        "content_below_cursor": ""
      },
      "intent": "completion"
    }' \
  --url "https://gitlab.example.com/api/v4/code_suggestions/completions"

レスポンス例:

{
  "id": "id",
  "model": {
    "engine": "vertex-ai",
    "name": "code-gecko"
  },
  "object": "text_completion",
  "created": 1688557841,
  "choices": [
    {
      "text": "\n        if self.is_running:\n            self.speed += increment\n            print(\"The car's speed is now",
      "index": 0,
      "finish_reason": "length"
    }
  ]
}

コード提案が有効になっていることを検証する

このエンドポイントを使用して、以下を検証します:

  • プロジェクトでcode_suggestionsが有効になっている。
  • プロジェクトのグループのネームスペース設定でcode_suggestionsが有効になっている。
POST code_suggestions/enabled

サポートされている属性は以下のとおりです:

属性必須説明
project_path文字列はい検証するプロジェクトのパス。

成功した場合、以下を返します:

  • 機能が有効な場合は、200
  • 機能が無効になっている場合は403

さらに、パスが空であるか、プロジェクトが存在しない場合は404を返します。

リクエスト例:

curl --request POST \
  --url "https://gitlab.example.com/api/v4/code_suggestions/enabled" \
  --header "Private-Token: <YOUR_ACCESS_TOKEN>" \
  --header "Content-Type: application/json" \
  --data '{
      "project_path": "group/project_name"
    }' \

AIゲートウェイの直接接続の詳細をフェッチする

POST /code_suggestions/direct_access

このエンドポイントは、各ユーザーに対して5分あたり10リクエストにレート制限されています。

IDE/クライアントがcompletionリクエストをAIゲートウェイに直接送信するために使用できるユーザー固有の接続詳細を返します。これには、AIゲートウェイにプロキシする必要があるヘッダーと、必要な認証トークンが含まれます。

リクエスト例:

curl --request POST \
  --header "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
  --url "https://gitlab.example.com/api/v4/code_suggestions/direct_access"

レスポンス例:

{
  "base_url": "http://0.0.0.0:5052",
  "token": "a valid token",
  "expires_at": 1713343569,
  "headers": {
    "X-Gitlab-Instance-Id": "292c3c7c-c5d5-48ec-b4bf-f00b724ce560",
    "X-Gitlab-Realm": "saas",
    "X-Gitlab-Global-User-Id": "Df0Jhs9xlbetQR8YoZCKDZJflhxO0ZBI8uoRzmpnd1w=",
    "X-Gitlab-Host-Name": "gitlab.example.com"
  }
}

接続の詳細をフェッチする

POST /code_suggestions/connection_details

このエンドポイントは、各ユーザーに対して1分あたり10リクエストにレート制限されています。

ユーザーが接続されているGitLabインスタンスに関するメタデータなど、テレメトリ用にIDE/クライアントで使用できるユーザー固有の接続の詳細を返します。

リクエスト例:

curl --request POST \
  --header "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
  --url "https://gitlab.example.com/api/v4/code_suggestions/connection_details"

レスポンス例:

{
  "instance_id": "292c3c7c-c5d5-48ec-b4bf-f00b724ce560",
  "instance_version": "18.2",
  "realm": "saas",
  "global_user_id": "Df0Jhs9xlbetQR8YoZCKDZJflhxO0ZBI8uoRzmpnd1w=",
  "host_name": "gitlab.example.com",
  "feature_enablement_type": "duo_pro",
  "saas_duo_pro_namespace_ids": "1000000"
}