コード提案API
このAPIを使用して、コード提案機能にアクセスします。
コード補完を生成
- ステータス: 実験的機能
POST /code_suggestions/completionsこのエンドポイントは、各ユーザーに対して1分あたり60リクエストにレート制限されています。
人工知能の抽象化レイヤーを使用して、コード補完を生成します。
このエンドポイントへのリクエストは、AIゲートウェイにプロキシされます。
パラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
current_file | ハッシュ | はい | コード提案が生成されているファイルの属性。この属性が受け入れる文字列のリストについては、ファイルの属性を参照してください。 |
intent | 文字列 | いいえ | コード補完リクエストの目的。これは、completionまたはgenerationのいずれかです。 |
stream | ブール値 | いいえ | 応答を、準備ができ次第、より小さいチャンクとしてストリーミングするかどうか(該当する場合)。デフォルトはfalseです。 |
project_path | 文字列 | いいえ | プロジェクトのパス。 |
generation_type | 文字列 | いいえ | 生成リクエストのイベントのタイプ。これは、comment、empty_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 | 文字列 | はい | 検証するプロジェクトのパス。 |
成功した場合、以下を返します:
さらに、パスが空であるか、プロジェクトが存在しない場合は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"
}