This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
proposed devops ai-powered -

AI Gateway ADR 002: AI 공급업체에 프록시 엔드포인트 노출

요약

AI Gateway는 기존의 GitLab-Rails 내 클라이언트 라이브러리가 액세스할 수 있도록 AI 공급업체에 프록시 엔드포인트를 노출합니다. 기존 클라이언트 라이브러리의 사용을 허용하는 이 드롭인 대체품은 단일 용도의 엔드포인트로 이동할 때까지 사용해야 합니다. (단일 용도 엔드포인트로 이동하도록 함) 자체 호스팅형 GitLab 인스턴스의 경우 이러한 기능을 더 빨리 마켓에 선보일 수 있도록 최종적인 아키텍처에서 벗어나고 있습니다.

맥락

초안에서는 각 AI 기능에 대해 단일 목적 엔드포인트를 갖는 것이 제안되었습니다. 이에는 여러 이유가 있었습니다:

  • 고객이 최신 기능을 채택하는 데 필요한 시간을 최소화하기 위해 GitLab 모놀리식 코드베이스에 AI 관련 로직을 강제로 하드코딩하는 것을 피합니다.
  • 제품에서 변경사항을 가하는 유연성을 유지하면서 오래된 인스턴스의 장기 지원을 파기하지 않도록 합니다.

issue 454543에서는 자체 호스팅형 GitLab에서 기존 AI 기능을 활성화하기 위한 다양한 옵션을 논의했습니다.

결정

해당 이슈에서는 Ruby 클라이언트 라이브러리 Anthropic::ClientVertexAi::Client가 기존 상태 그대로 작동하도록 AI 공급업체에 프록시 엔드포인트를 도입하기로 결정했습니다 . 그 이유는 다음과 같습니다:

  • 기존의 비즈니스 로직을 Python AI Gateway에서 다시 작성하는 것이 어렵습니다.
    • 일부 비즈니스 로직은 GitLab-모놀리식에서만 사용 가능한 의존성을 사용합니다 (예: 피처 플래그, Redis 캐싱). 이로 인해 이러한 구현을 피해야 하며, 이는 오류를 유발할 수 있습니다.
    • Gitlab::LLm 네임스페이스 내의 강력한 상속 때문에 실제로 작용하는 비즈니스 로직을 추출하는 것이 어렵습니다.
    • 변경 전후에 기능의 품질과 기능이 일관되게 유지되는지를 평가할 수 있는 도구가 부족합니다.
  • 기존의 POST /v1/chat/agent 엔드포인트는 기존에 버리지 못하는 듀오 채팅이 GA가되었습니다. 기술적으로는 아직 단일 용도의 엔드포인트가 아닙니다.

기술적 세부 정보

다음은 요청 흐름에 대한 개요입니다:

flowchart LR subgraph AIGateway Proxy["프록시"] end subgraph Provider1["Anthropic"] direction LR Model1(["Claude 2.1"]) end subgraph Provider2["VertexAI"] direction LR Model2(["text-bison"]) end subgraph SM or SaaS GitLab DuoFeatureA["듀오 기능 A"] DuoFeatureB["듀오 기능 B"] end DuoFeatureA -- POST /v1/proxy/anthropic/v1/complete --- Proxy DuoFeatureB -- POST /v1/proxy/vertex-ai/v1/text-bison:predict --- Proxy Proxy -- POST /v1/complete --- Provider1 Proxy -- POST /v1/text-bison:predict --- Provider2

Anthropic

AI Gateway에서 다음 HTTP/1.1 엔드포인트를 노출합니다:

POST /v1/proxy/anthropic/(*path)

path는 다음 엔드포인트로 전달될 수 있습니다:

Vertex AI

AI Gateway에서 다음 HTTP/1.1 엔드포인트를 노출합니다:

POST /v1/proxy/vertex-ai/(*path)

path는 다음 엔드포인트로 전달될 수 있습니다:

  • /v1/{endpoint}:predict
    • endpointchat-bison, code-bison, codechat-bison, text-bison, textembedding-gecko@003 중 하나여야 합니다.

공통 동작

  • 요청 본문은 그대로 AI 공급업체로 전송됩니다.
  • 요청 헤더는 AI Gateway에 의해 필터링/교체되며, 예를 들어 accept, content-type, anthropic-version만 허용되고 나머지는 필터링됩니다. x-api-key가 추가됩니다.
  • 응답 본문은 클라이언트에게 그대로 반환됩니다.
  • 응답 헤더는 AI Gateway에 의해 필터링/교체되어, 예를 들어 date, content-type, transfer-encoding만 허용되고 나머지는 필터링됩니다.
  • 응답 상태는 클라이언트에게 그대로 반환됩니다.
  • HTTP 스트리밍이 지원됩니다.
  • 지원되지 않는 path가 지정된 경우, AI Gateway는 404 Not Found 오류로 응답합니다.

액세스 제어

  • 클라이언트는 GitLab.com 또는 고객 닷이 발급한 JWT를 보내야 합니다.
    • 이 JWT에는 GitLab-인스턴스에 부여된 권한을 나타내는 scopes가 포함됩니다. 이 scopes는 각 Duo 구독 티어에 따라 다를 것입니다.
    • 이 프록시 엔드포인트에 액세스하려면 scopesexplain_vulnerability, resolve_vulnerability, generate_description, summarize_all_open_notes, summarize_submitted_review, generate_commit_message, summarize_review, fill_in_merge_request_template, analyze_ci_job_failure 중 하나를 포함해야 합니다.
    • 지정된 기준을 충족하지 못하는 요청은 401 Unauthorized Access 오류로 이어집니다.
  • 클라이언트는 HTTP 요청에 X-Gitlab-Feature-Usage 헤더를 보내어야 합니다.
    • X-Gitlab-Feature-Usage 헤더는 API 요청의 목적을 나타냅니다.
    • 이 프록시 엔드포인트에 액세스하려면 X-Gitlab-Feature-Usageexplain_vulnerability, resolve_vulnerability, generate_description, summarize_all_open_notes, summarize_submitted_review, generate_commit_message, summarize_review, fill_in_merge_request_template, analyze_ci_job_failure 중 하나가 되어야 합니다.
    • 지정된 기준을 충족하지 못하는 요청은 401 Unauthorized Access 오류로 이어집니다.
  • 로깅을 위해 AI Gateway에서 액세스 로그에 X-Gitlab-Feature-Usage 헤더의 값을 추가합니다.
  • 메트릭을위해 AI Gateway에서 ModelRequestInstrumentatorTextGenModelInstrumentator를 사용하여 동시 요청 및 입력/출력 토큰을 메트릭합니다. X-Gitlab-Instance-Id, X-Gitlab-Global-User-Id, X-Gitlab-Feature-Usage로 레이블이 지정됩니다.
  • 텔레메트리를 위해 GitLab-Rails의 각 기능에 대한 내부 이벤트 추적을 추가합니다. 또는 통합된 스키마를 소개하는 데 추가 작업이 필요한 기존의 snowplow 추적기를 AI Gateway에 사용할 수 있습니다.

더 많은 액세스 제어 개선 사항은 이 이슈를 참조하십시오.

결과

  • 실험적인 AI 기능이 자체 호스팅 인스턴스에서 활성화됩니다.
  • 스테이지 그룹은 기능의 비즈니스 로직을 개선하는 작업을 시작할 수 있습니다. 이 프록시 작업은 병행해서 진행될 수 있습니다.
  • 스테이지 그룹은 GA 릴리스를 위해 Python AI Gateway의 비즈니스 로직을 급하게 리팩터링할 필요가 없습니다. 그들은 GA 이후에 시간을 가질 수 있습니다.
  • 로그 및 메트릭에서 X-Gitlab-Instance-Id, X-Gitlab-Global-User-Id, X-Gitlab-Feature-Usage의 값을 확인함으로써 남용자를 탐지할 수 있습니다.
  • Cloud 커넥터 LB (Cloud Flare) 또는 AI Gateway 미들웨어에서 액세스를 차단하여 남용자를 차단할 수 있습니다.