View a markdown version of this page

Chat Completions API를 사용한 추론 - Amazon Bedrock

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Chat Completions API를 사용한 추론

OpenAI Chat Completions API는 Amazon Bedrock 모델을 사용하여 대화형 응답을 생성합니다. bedrock-mantlebedrock-runtime 엔드포인트 모두에서 채팅 완료 API를 사용할 수 있습니다. 가능하면 bedrock-mantle 엔드포인트를 사용하는 것이 좋습니다. 전체 API 세부 정보는 OpenAI 채팅 완료 설명서를 참조하세요.

Endpoint 기본 URL Authentication
bedrock-mantle(권장) https://bedrock-mantle.{region}.api.aws/v1/chat/completions Amazon Bedrock API 키 또는 AWS 자격 증명
bedrock-runtime https://bedrock-runtime.{region}.amazonaws.com/v1/chat/completions AWS 자격 증명(SigV4) 또는 Amazon Bedrock API 키

각 엔드포인트에는 고유한 모델별 토큰 할당량이 있습니다. 각 엔드포인트의 트래픽에 적용되는 할당량에 대한 자세한 내용은 bedrock-mantle 엔드포인트 할당량 및 섹션을 참조하세요bedrock-runtime 엔드포인트 할당량.

bedrock-mantle 엔드포인트와의 채팅 완료

bedrock-mantle 엔드포인트는 Amazon Bedrock API 키 인증 및 OpenAI SDK를 지원합니다.

사용 가능한 모델 나열

bedrock-mantle 엔드포인트에서 사용 가능한 모델을 나열하려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

OpenAI SDK (Python)
# List all available models using the OpenAI SDK # Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() models = client.models.list() for model in models.data: print(model.id)
HTTP request
# List all available models # Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables curl -X GET $OPENAI_BASE_URL/models \ -H "Authorization: Bearer $OPENAI_API_KEY"

Chat Completions 생성

원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

OpenAI SDK (Python)

환경 변수를 사용하여 OpenAI 클라이언트를 구성합니다.

# Create a chat completion using the OpenAI SDK # Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() completion = client.chat.completions.create( model="openai.gpt-oss-120b", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Hello!"} ] ) print(completion.choices[0].message)
HTTP request

에 POST 요청/v1/chat/completions:

# Create a chat completion # Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables curl -X POST $OPENAI_BASE_URL/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -d '{ "model": "openai.gpt-oss-120b", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Hello!"} ] }'
스트리밍

응답을 점진적으로 수신하려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

OpenAI SDK (Python)
# Stream chat completion responses incrementally using the OpenAI SDK # Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() stream = client.chat.completions.create( model="openai.gpt-oss-120b", messages=[{"role": "user", "content": "Tell me a story"}], stream=True ) for chunk in stream: if chunk.choices[0].delta.content is not None: print(chunk.choices[0].delta.content, end="")
HTTP request

가 로 stream 설정된 /v1/chat/completions에 POST 요청을 수행합니다. true

# Stream chat completion responses incrementally # Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables curl -X POST $OPENAI_BASE_URL/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -d '{ "model": "openai.gpt-oss-120b", "messages": [ {"role": "user", "content": "Tell me a story"} ], "stream": true }'

bedrock-runtime 엔드포인트와의 채팅 완료

bedrock-runtime 엔드포인트는 AWS SigV4 인증 및 Amazon Bedrock API 키 인증을 지원합니다.

사용 가능한 모델 나열

bedrock-runtime 엔드포인트에서 사용 가능한 모델을 나열하려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

OpenAI SDK (Python)
from openai import OpenAI import os client = OpenAI( base_url="https://bedrock-runtime.us-east-1.amazonaws.com/v1", api_key=os.environ.get("AWS_BEARER_TOKEN_BEDROCK") ) models = client.models.list() for model in models.data: print(model.id)
HTTP request
curl -X GET "https://bedrock-runtime.us-east-1.amazonaws.com/v1/models" \ -H "Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK"

Chat Completions 생성

원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

OpenAI SDK (Python)

bedrock-runtime 엔드포인트를 가리키도록 OpenAI 클라이언트를 구성합니다.

from openai import OpenAI import os client = OpenAI( base_url="https://bedrock-runtime.us-east-1.amazonaws.com/v1", api_key=os.environ.get("AWS_BEARER_TOKEN_BEDROCK") ) response = client.chat.completions.create( model="us.anthropic.claude-sonnet-4-6", messages=[{"role": "user", "content": "Hello"}] ) print(response.choices[0].message.content)
HTTP request (API key)
curl -X POST "https://bedrock-runtime.us-east-1.amazonaws.com/v1/chat/completions" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK" \ -d '{ "model": "us.anthropic.claude-sonnet-4-6", "messages": [{"role": "user", "content": "Hello"}] }'
HTTP request (SigV4)
curl -X POST "https://bedrock-runtime.us-east-1.amazonaws.com/v1/chat/completions" \ -H "Content-Type: application/json" \ --aws-sigv4 "aws:amz:us-east-1:bedrock" \ --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \ -d '{ "model": "us.anthropic.claude-sonnet-4-6", "messages": [{"role": "user", "content": "Hello"}] }'

bedrock-runtime 엔드포인트를 사용하여 지원되는 모델, 리전 및 고급 기능에 대한 자세한 내용은 섹션을 참조하세요Chat Completions API(레거시 참조).

채팅 완성에 가드레일 포함

모델 입력 및 응답에 보호 장치를 포함하려면 다음 추가 파라미터를 요청 본문의 필드로 포함하여 모델 간접 호출을 실행할 때 가드레일을 적용합니다.

  • extra_headers - 요청에 추가 헤더를 지정하는 다음 필드가 포함된 객체에 매핑됩니다.

    • X-Amzn-Bedrock-GuardrailIdentifier(필수) - 가드레일의 ID입니다.

    • X-Amzn-Bedrock-GuardrailVersion(필수) - 가드레일의 버전입니다.

    • X-Amzn-Bedrock-Trace(선택 사항) - 가드레일 추적을 활성화할지 여부입니다.

  • extra_body - 객체에 매핑됩니다. 해당 객체에 다음 amazon-bedrock-guardrailConfig 필드가 포함된 객체에 매핑되는 필드를 포함할 수 있습니다.

Amazon Bedrock Guardrails의 이러한 파라미터에 대한 자세한 내용은 가드레일 테스트 섹션을 참조하세요.

OpenAI Chat completion을 통한 가드레일을 사용하는 예를 보려면 원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

OpenAI SDK (Python)
import openai from openai import OpenAIError # Endpoint for Amazon Bedrock Runtime bedrock_endpoint = "https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1" # Model ID model_id = "openai.gpt-oss-20b-1:0" # Replace with actual values bedrock_api_key = "$AWS_BEARER_TOKEN_BEDROCK" guardrail_id = "GR12345" guardrail_version = "DRAFT" client = openai.OpenAI( api_key=bedrock_api_key, base_url=bedrock_endpoint, ) try: response = client.chat.completions.create( model=model_id, # Specify guardrail information in the header extra_headers={ "X-Amzn-Bedrock-GuardrailIdentifier": guardrail_id, "X-Amzn-Bedrock-GuardrailVersion": guardrail_version, "X-Amzn-Bedrock-Trace": "ENABLED", }, # Additional guardrail information can be specified in the body extra_body={ "amazon-bedrock-guardrailConfig": { "tagSuffix": "xyz" # Used for input tagging } }, messages=[ { "role": "system", "content": "You are a helpful assistant." }, { "role": "assistant", "content": "Hello! How can I help you today?" }, { "role": "user", "content": "What is the weather like today?" } ] ) request_id = response._request_id print(f"Request ID: {request_id}") print(response) except OpenAIError as e: print(f"An error occurred: {e}") if hasattr(e, 'response') and e.response is not None: request_id = e.response.headers.get("x-request-id") print(f"Request ID: {request_id}")
OpenAI SDK (Java)
import com.openai.client.OpenAIClient; import com.openai.client.okhttp.OpenAIOkHttpClient; import com.openai.core.http.HttpResponseFor; import com.openai.models.chat.completions.ChatCompletion; import com.openai.models.chat.completions.ChatCompletionCreateParams; // Endpoint for Amazon Bedrock Runtime String bedrockEndpoint = "http://bedrock-runtime.us-west-2.amazonaws.com/openai/v1" // Model ID String modelId = "openai.gpt-oss-20b-1:0" // Replace with actual values String bedrockApiKey = "$AWS_BEARER_TOKEN_BEDROCK" String guardrailId = "GR12345" String guardrailVersion = "DRAFT" OpenAIClient client = OpenAIOkHttpClient.builder() .apiKey(bedrockApiKey) .baseUrl(bedrockEndpoint) .build() ChatCompletionCreateParams request = ChatCompletionCreateParams.builder() .addUserMessage("What is the temperature in Seattle?") .model(modelId) // Specify additional headers for the guardrail .putAdditionalHeader("X-Amzn-Bedrock-GuardrailIdentifier", guardrailId) .putAdditionalHeader("X-Amzn-Bedrock-GuardrailVersion", guardrailVersion) // Specify additional body parameters for the guardrail .putAdditionalBodyProperty( "amazon-bedrock-guardrailConfig", JsonValue.from(Map.of("tagSuffix", JsonValue.of("xyz"))) // Allows input tagging ) .build(); HttpResponseFor<ChatCompletion> rawChatCompletionResponse = client.chat().completions().withRawResponse().create(request); final ChatCompletion chatCompletion = rawChatCompletionResponse.parse(); System.out.println(chatCompletion);