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

GitLab Duo ChatのAPI

このAPIは、GitLab Duo Chatの応答を生成するために使用されます:

  • GitLab.comでは、このAPIは内部使用のみを目的としています。
  • GitLabセルフマネージドでは、access_rest_chatという名前の機能フラグでこのAPIを有効にできます。

前提要件:

チャット応答を生成

この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。

POST /chat/completions

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

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

属性必須説明
content文字列はいチャットに送信された質問。
resource_type文字列いいえチャットの質問とともに送信されるリソースのタイプ。
resource_id文字列、整数いいえリソースのID。リソースID(整数)またはコミットハッシュ(文字列)を指定できます。
referer_url文字列いいえリファラーURL。
client_subscription_id文字列いいえクライアントサブスクリプションID。
with_clean_historyブール値いいえリクエストの前後で履歴をリセットするかどうかを示します。
project_id整数いいえプロジェクトID: resource_typeがコミットの場合に必要です。
additional_context配列いいえこのチャットリクエストの追加コンテキストアイテムの配列。この属性が受け入れるパラメータのリストについては、コンテキスト属性を参照してください。

コンテキスト属性

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

  • category - コンテキスト要素のカテゴリー。有効な値は、filemerge_requestissue、またはsnippetです。
  • id - コンテキスト要素のID。
  • content - コンテキスト要素のコンテンツ。値は、コンテキスト要素のカテゴリーによって異なります。
  • metadata - このコンテキスト要素のオプションの追加メタデータ。値は、コンテキスト要素のカテゴリーによって異なります。

リクエスト例:

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"

レスポンス例:

"To define class in ruby..."