API 형식

API 형식

OpenAI Chat Completions, Anthropic Messages, 또는 OpenAI Responses 요청을 사용해 LLM Gateway를 통해 프로바이더 전반의 모델을 호출하는 방법을 알려드릴게요.

참고: LLM Gateway는 베타 상태입니다.

표준 LLM Gateway API는 세 가지 요청·응답 형식을 지원합니다. 애플리케이션이 이미 사용하는 형식을 선택한 뒤 동일한 엔드포인트로 자체 키(bring-your-own-key) 또는 Gateway Credits 모델을 호출하세요.

출처: 문서

본문

API 형식 비교

API format Base URL Prompt endpoint Compatible client
OpenAI Chat Completions https://gateway.smith.langchain.com/v1 POST /chat/completions OpenAI-compatible Chat Completions clients
Anthropic Messages https://gateway.smith.langchain.com POST /v1/messages Anthropic Messages clients
OpenAI Responses https://gateway.smith.langchain.com/v1 POST /responses OpenAI-compatible Responses clients

모든 형식은 워크스페이스 범위 LangSmith API 키로 인증합니다. 프로바이더 API 키로 또는 Authorization: Bearer 토큰으로 전달하세요.

이 기본 URL은 LangSmith Cloud의 US 게이트웨이용입니다. 다른 리전과 BYOC 데이터 플레인은 가용성 확인을 참고하세요.

자체 키 모델의 경우 model<provider>/<model>로 설정합니다. 예: openai/gpt-5.4-mini, anthropic/claude-opus-5, azure/<deployment-name>. Gateway Credits 모델의 경우 moonshotai/kimi-k3 같은 지원 모델 이름을 전달합니다.

Chat Completions 사용

OpenAI 호환 클라이언트를 https://gateway.smith.langchain.com/v1로 지정합니다. 전체 요청·응답 스키마는 OpenAI Chat Completions API를 참고하세요.

curl https://gateway.smith.langchain.com/v1/chat/completions \
    -H "Authorization: Bearer $LANGS..._KEY" \
    -H "Content-Type: application/json" \
    -d '{"model":"anthropic/claude-opus-5","messages":[{"role":"user","content":"Hello!"}]}'
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://gateway.smith.langchain.com/v1",
    api_key=os.environ["LANGSMITH_API_KEY"],
)
response = client.chat.completions.create(
    model="anthropic/claude-opus-5",
    messages=[{"role": "user", "content": "Hello!"}],
)
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://gateway.smith.langchain.com/v1",
  apiKey: proces...KEY,
});
const response = await client.chat.completions.create({
  model: "anthropic/claude-opus-5",
  messages: [{ role: "user", content: "Hello!" }],
});

Messages 사용

Anthropic 클라이언트를 https://gateway.smith.langchain.com으로 지정합니다. 전체 요청·응답 스키마는 Anthropic Messages API를 참고하세요.

curl https://gateway.smith.langchain.com/v1/messages \
    -H "Authorization: Bearer $LANGS..._KEY" \
    -H "Content-Type: application/json" \
    -d '{"model":"openai/gpt-5.4-mini","max_tokens":1024,"messages":[{"role":"user","content":"Hello!"}]}'
import os

import anthropic

client = anthropic.Anthropic(
    base_url="https://gateway.smith.langchain.com",
    api_key=os.environ["LANGSMITH_API_KEY"],
)
message = client.messages.create(
    model="openai/gpt-5.4-mini",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}],
)
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  baseURL: "https://gateway.smith.langchain.com",
  apiKey: proces...KEY,
});
const message = await client.messages.create({
  model: "openai/gpt-5.4-mini",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello!" }],
});

Responses 사용

OpenAI 호환 클라이언트를 https://gateway.smith.langchain.com/v1로 지정합니다. 전체 요청·응답 스키마는 OpenAI Responses API를 참고하세요.

curl https://gateway.smith.langchain.com/v1/responses \
    -H "Authorization: Bearer $LANGS..._KEY" \
    -H "Content-Type: application/json" \
    -d '{"model":"anthropic/claude-opus-5","input":"Hello!"}'
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://gateway.smith.langchain.com/v1",
    api_key=os.environ["LANGSMITH_API_KEY"],
)
response = client.responses.create(
    model="anthropic/claude-opus-5",
    input="Hello!",
)
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://gateway.smith.langchain.com/v1",
  apiKey: proces...KEY,
});
const response = await client.responses.create({
  model: "anthropic/claude-opus-5",
  input: "Hello!",
});

프롬프트 캐싱 활성화

OpenAI 모델(Chat Completions 및 Responses)은 암시적 프롬프트 캐싱을 자동으로 지원하므로 추가 파라미터가 필요 없습니다.

Anthropic 모델과 일부 구형 OpenAI 모델은 프롬프트 캐싱에 명시적 옵트인이 필요합니다. 표준 게이트웨이 엔드포인트를 통해 이 모델을 호출할 때 요청 본문에 프로바이더별 필드를 전달하세요.

참고: 명시적 캐싱 지원은 게이트웨이 수준 캐싱 정책이 개발되는 동안의 임시 조치입니다. 다음 필드는 업스트림 프로바이더로 전달됩니다.

Anthropic 모델

ttl 값과 함께 prompt_cache_options를 포함합니다:

curl https://gateway.smith.langchain.com/v1/responses \
    -H "Authorization: Bearer $LANGS..._KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "anthropic/claude-opus-5",
      "input": "Hello!",
      "prompt_cache_options": {"ttl": "30m"}
    }'
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://gateway.smith.langchain.com/v1",
    api_key=os.environ["LANGSMITH_API_KEY"],
)
response = client.responses.create(
    model="anthropic/claude-opus-5",
    input="Hello!",
    extra_body={"prompt_cache_options": {"ttl": "30m"}},
)
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://gateway.smith.langchain.com/v1",
  apiKey: proces...KEY,
});
const response = await client.responses.create({
  model: "anthropic/claude-opus-5",
  input: "Hello!",
  // @ts-ignore — provider-specific field
  prompt_cache_options: { ttl: "30m" },
});

동일한 필드는 Chat Completions 엔드포인트에서도 동작합니다:

curl https://gateway.smith.langchain.com/v1/chat/completions \
    -H "Authorization: Bearer $LANGS..._KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "anthropic/claude-opus-5",
      "messages": [{"role": "user", "content": "Hello!"}],
      "prompt_cache_options": {"ttl": "30m"}
    }'

구형 OpenAI 모델

일부 구형 OpenAI 모델은 prompt_cache_retention을 통한 명시적 캐시 제어를 지원합니다. 대부분 모델에서는 "in_memory"로 설정하세요. 특히 gpt-5.5"24h"를 사용합니다:

curl https://gateway.smith.langchain.com/v1/responses \
    -H "Authorization: Bearer $LANGS..._KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "openai/gpt-5.4-mini",
      "input": "Hello!",
      "prompt_cache_retention": "in_memory"
    }'
curl https://gateway.smith.langchain.com/v1/responses \
    -H "Authorization: Bearer $LANGS..._KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "openai/gpt-5.5",
      "input": "Hello!",
      "prompt_cache_retention": "24h"
    }'

전체 prompt_cache_retention 문서는 OpenAI prompt caching 가이드를 참고하세요.

변환 동작 이해하기

엔드포인트는 애플리케이션이 보내고 받는 형식을 결정합니다. 모델 ID는 업스트림 프로바이더를 결정합니다.

  • 프로바이더가 선택한 형식을 네이티브로 지원하면 게이트웨이는 해당 형식을 보존합니다.
  • 그렇지 않으면 게이트웨이는 요청을 프로바이더가 지원하는 형식으로 변환하고, 스트리밍 응답을 포함해 응답을 다시 변환합니다.
  • 변환은 대상 프로바이더 형식에서 표현할 수 없는 필드를 거부할 수 있습니다. 프로바이더 네이티브 동작이 필요하면 직접 모델 접근을 사용하세요.

모든 요청은 형식과 무관하게 동일한 Provider Secrets, 정책, 트레이싱 구성을 해석합니다.

모델 목록

GET /v1/models를 호출해 워크스페이스용으로 구성된 프로바이더와 Gateway Credits에서 사용 가능한 모델을 나열합니다. 게이트웨이는 단일 OpenAI 호환 목록을 반환합니다:

curl https://gateway.smith.langchain.com/v1/models \
    -H "Authorization: Bearer $LANGS..._KEY"
{
  "object": "list",
  "data": [
    {"id": "openai/gpt-5.4-mini", "object": "model"},
    {"id": "fireworks/accounts/fireworks/models/glm-5p2", "object": "model"},
    {"id": "anthropic/claude-opus-5", "object": "model"},
    {"id": "moonshotai/kimi-k3", "object": "model"}
  ]
}

자체 키 모델 ID는 <provider>/<model> 형태를 사용합니다. 호스팅 모델은 응답에 표시된 슬러그를 사용합니다. 호출 시 표시된 그대로의 ID를 전달하세요. 구성된 시크릿이 없는 자체 키 프로바이더는 생략됩니다. 호스팅 모델은 프로바이더 시크릿이 필요 없습니다.

오류 처리

Status or symptom Meaning
400 Bad Request The request is malformed, the model ID is unavailable or incorrectly formatted, or the request cannot be translated.
401 Unauthorized The LangSmith API key is missing or invalid.
403 Forbidden The key does not have the required gateway permissions.
429 Too Many Requests A gateway rate limit or an upstream provider rate limit was reached.
No models with a provider prefix appear in GET /v1/models The provider may not be configured or may not have returned a model catalog.

설정별 해결 방법은 퀵스타트를 참고하세요.

함께 보기

더 알아보기