Anthropic Messages 프록시
Anthropic Messages 형식으로 대화 메시지를 전송합니다. messages는 역할과 콘텐츠를 담은 입력 목록이며, 예시는 user 역할의 텍스트와 최대 출력 토큰 수 1,024를 지정합니다. model에는 Model Catalog의 모델 RID를 사용합니다.
POST /api/v2/llm/proxy/anthropic/v1/messages
인증과 헤더
OAuth2 애플리케이션은 api:use-language-models-execute 권한 범위를 요청해야 합니다.
| 헤더 | 자료형 | 조건과 동작 |
|---|---|---|
Authorization | string | Foundry Bearer 토큰으로 인증 |
Content-Type | string | application/json |
attribution | 선택적 string | 프로젝트에 사용량을 귀속할 RID를 쉼표로 구분. 생략하면 호출 사용자에게 직접 귀속 |
traceParent | 선택적 string | W3C traceparent 값. 생략하면 플랫폼 내 관측 기능이 작동하지 않음 |
traceState | 선택적 string | W3C 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를 사용합니다.
요청과 거버넌스
요청은 Anthropic의 해당 API 형식을 따릅니다. 다음은 예제에서 사용하는 입력입니다.
| 필드 | 형식 | 의미 |
|---|---|---|
model | string | 사용할 Foundry 언어 모델 RID |
max_tokens | integer | 생성할 최대 토큰 수. 예시는 1024 |
messages | 메시지 배열 | 예시 항목은 role: "user", content: "Hello, world" |
무보존(ZDR) 및 지역 제한 같은 AIP 데이터 거버넌스를 적용하며, 호환되는 공급자 기능을 선택적으로 활성화합니다. 사용량은 Resource Management에서 확인하고 요청에는 사용량 제한이 적용됩니다. 모델의 접근 가능 여부와 RID는 Model Catalog에서 확인합니다.
응답 처리
응답은 메시지 객체이며 content는 콘텐츠 블록 배열입니다. 블록마다 type을 확인하여 텍스트나 다른 블록을 구분합니다. 텍스트 블록의 text, 메시지의 stop_reason 및 usage를 용도에 맞게 읽습니다. 첫 블록이 항상 텍스트라고 가정하여 접근하지 않습니다.
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/anthropic/v1/messages" \
-d '{
"model": "ri.language-model-service..language-model.anthropic-claude-4-6-opus",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
]
}'
Python
Foundry SDK와 anthropic==0.103.0을 사용하는 예제입니다. Foundry 호스트와 토큰이 제공되는 실행 맥락 및 HTTP 클라이언트 조건을 충족해야 합니다. 프록시 헬퍼에는 preview=True를 전달하고, 호출이 끝나면 클라이언트를 닫습니다.
from anthropic import Anthropic
from foundry_sdk.v2.language_models.utils import (
get_anthropic_base_url,
get_foundry_token,
get_http_client,
)
def anthropic_messages(prompt: str):
with Anthropic(
auth_token=get_foundry_token(preview=True),
base_url=get_anthropic_base_url(preview=True),
http_client=get_http_client(preview=True),
) as client:
return client.messages.create(
max_tokens=1024,
model="ri.language-model-service..language-model.anthropic-claude-4-6-opus",
messages=[{"role": "user", "content": prompt}],
)
TypeScript
서버 측 환경에서 @anthropic-ai/sdk와 @osdk/client를 사용합니다. 함수의 platformClient에는 애플리케이션이 사용하는 인증된 클라이언트를 전달합니다.
import Anthropic from "@anthropic-ai/sdk";
import { PlatformClient } from "@osdk/client";
export default async function anthropicMessages(
platformClient: PlatformClient,
prompt: string
) {
const client = new Anthropic({
authToken: await platformClient.tokenProvider(),
baseURL: new URL("/api/v2/llm/proxy/anthropic", platformClient.baseUrl).href,
fetch: platformClient.fetch,
});
return client.messages.create({
model: "ri.language-model-service..language-model.anthropic-claude-4-6-opus",
max_tokens: 1024,
messages: [{ role: "user", content: prompt }],
});
}