Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

OpenAI Chat Completions 프록시

OpenAI Chat Completions 형식의 대화 메시지 목록을 전송합니다. 각 메시지에는 역할과 콘텐츠가 있으며 예시는 user 역할의 텍스트 하나를 사용합니다. model에는 공급자의 모델 이름 대신 Model Catalog의 Foundry 모델 RID를 지정합니다.

POST /api/v2/llm/proxy/openai/v1/chat/completions

인증과 헤더

OAuth2 애플리케이션은 api:use-language-models-execute 권한 범위를 요청해야 합니다.

헤더자료형조건과 동작
AuthorizationstringFoundry Bearer 토큰으로 인증
Content-Typestringapplication/json
attribution선택적 string프로젝트에 사용량을 귀속할 RID를 쉼표로 구분. 생략하면 호출 사용자에게 직접 귀속
traceParent선택적 stringW3C traceparent 값. 생략하면 플랫폼 내 관측 기능이 작동하지 않음
traceState선택적 stringW3C tracestate 값. 생략하면 플랫폼 내 관측 기능이 작동하지 않음
X-Palantir-session-id선택적 string한 대화처럼 같은 논리적 세션에 속한 요청을 묶는 불투명한 식별자. 256자 미만

같은 세션 ID의 요청은 가능한 경우 같은 모델 공급자 백엔드로 라우팅되어 프롬프트 캐시 적중률을 높일 수 있습니다. 이 라우팅 선호는 최선 노력 방식입니다. 요청 처리를 유지하기 위해 다른 백엔드를 사용할 수 있고, 일정 기간 활동이 없으면 선호가 만료됩니다.

Python의 Foundry HTTP 클라이언트와 TypeScript의 PlatformClient fetch는 실행 맥락의 사용량 귀속 정보와 분산 추적 정보를 전파합니다. Python 클라이언트는 사용량 귀속에 attribution을 사용하고, 추적에는 B3 형식의 X-B3-TraceId, X-B3-SpanId, X-B3-Sampled를 사용합니다.

요청과 거버넌스

요청은 OpenAI의 해당 API 형식을 따릅니다. 다음은 예제에서 사용하는 입력입니다.

필드형식의미
modelstring사용할 Foundry 언어 모델 RID
messages메시지 배열예시 항목은 role: "user", content: "Hello, world"

무보존(ZDR) 및 지역 제한 같은 AIP 데이터 거버넌스를 적용하며, 호환되는 공급자 기능을 선택적으로 활성화합니다. 사용량은 Resource Management에서 확인하고 요청에는 사용량 제한이 적용됩니다. 모델의 접근 가능 여부와 RID는 Model Catalog에서 확인합니다.

응답 처리

응답 객체의 choices에서 생성 결과를 읽습니다. 각 항목의 message와 finish_reason, 응답의 usage를 함께 확인할 수 있습니다. 메시지의 content가 null일 수 있으므로 이를 임의의 빈 문자열로 바꾸어 성공한 텍스트 응답처럼 처리하지 않습니다. 예제 함수는 choices를 포함한 응답 객체 전체를 반환합니다.

cURL

FOUNDRY_HOST에 프로토콜을 제외한 Foundry 호스트를, FOUNDRY_TOKEN에 유효한 토큰을 지정합니다. 아래 모델 RID와 입력은 예시입니다.

curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ${FOUNDRY_TOKEN}" \
    "https://${FOUNDRY_HOST}/api/v2/llm/proxy/openai/v1/chat/completions" \
    -d '{
      "model": "ri.language-model-service..language-model.gpt-5-2",
      "messages": [
        {"role": "user", "content": "Hello, world"}
      ]
    }'

Python

Foundry SDK와 openai==2.11.0을 사용하는 예제입니다. Foundry 호스트와 토큰이 제공되는 실행 맥락 및 HTTP 클라이언트 조건을 충족해야 합니다. 프록시 헬퍼에는 preview=True를 전달하고, 호출이 끝나면 클라이언트를 닫습니다.

from openai import OpenAI
from foundry_sdk.v2.language_models.utils import (
    get_foundry_token,
    get_openai_base_url,
    get_http_client,
)


def openai_chat_completions(prompt: str):
    with OpenAI(
        api_key=get_foundry_token(preview=True),
        base_url=get_openai_base_url(preview=True),
        http_client=get_http_client(preview=True),
    ) as client:
        return client.chat.completions.create(
            model="ri.language-model-service..language-model.gpt-5-2",
            messages=[{"role": "user", "content": prompt}],
        )

TypeScript

서버 측 환경에서 openai와 @osdk/client를 사용합니다. 함수의 platformClient에는 애플리케이션이 사용하는 인증된 클라이언트를 전달합니다.

import OpenAI from "openai";
import { PlatformClient } from "@osdk/client";

export default async function openAiChatCompletions(
  platformClient: PlatformClient,
  prompt: string
) {
  const client = new OpenAI({
    apiKey: await platformClient.tokenProvider(),
    baseURL: new URL("/api/v2/llm/proxy/openai/v1", platformClient.baseUrl).href,
    fetch: platformClient.fetch,
  });
  return client.chat.completions.create({
    model: "ri.language-model-service..language-model.gpt-5-2",
    messages: [{ role: "user", content: prompt }],
  });
}