doc/api/chat.md
This API is used to generate responses for GitLab Duo Chat:
access_rest_chat.Prerequisites:
Generates a response for a GitLab Duo Chat question.
{{< history >}}
access_rest_chat. Disabled by default. This feature is internal-only.additional_context parameter added in GitLab 17.4 with a flag named duo_additional_context. Disabled by default. This feature is internal-only.additional_context parameter enabled on GitLab.com and GitLab Self-Managed in GitLab 17.9.additional_context parameter generally available in GitLab 18.0. Feature flag duo_additional_context removed.{{< /history >}}
[!flag] The availability of this feature is controlled by a feature flag. For more information, see the history.
POST /chat/completions
[!note] Requests to this endpoint are proxied to the AI Gateway.
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
content | string | Yes | Question sent to Chat. |
resource_type | string | No | Type of resource that is sent with Chat question. |
resource_id | string, integer | No | ID of the resource. Can be a resource ID (integer) or a commit hash (string). |
referer_url | string | No | Referer URL. |
client_subscription_id | string | No | Client Subscription ID. |
with_clean_history | boolean | No | Indicates if history should be reset before and after the request. |
project_id | integer | No | Project ID. Required if resource_type is a commit. |
additional_context | array | No | An array of additional context items for this chat request. See Context attributes for a list of parameters this attribute accepts. |
The context attribute accepts a list of elements with the following attributes:
category - The category of the context element. Valid values are file, merge_request, issue, or snippet.id - The ID of the context element.content - The content of the context element. The value depends on the category of the context element.metadata - The optional additional metadata for this context element. The value depends on the category of the context element.Example request:
curl --request POST \
--header "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"content": "how to define class in ruby",
"additional_context": [
{
"category": "file",
"id": "main.rb",
"content": "class Foo\nend"
}
]
}' \
--url "https://gitlab.example.com/api/v4/chat/completions"
Example response:
"To define class in ruby..."