OpenAI Chat Completions API를 사용하여 모델 호출 - Amazon Bedrock

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

OpenAI Chat Completions API를 사용하여 모델 호출

Amazon Bedrock 모델로 OpenAI 채팅 완료 생성 API를 사용하여 모델 추론을 실행할 수 있습니다.

채팅 완료 생성 API를 다음과 같은 방법으로 호출할 수 있습니다.

  • Amazon Bedrock 런타임 엔드포인트를 사용하여 HTTP 요청을 수행합니다.

  • Amazon Bedrock 런타임 엔드포인트와 함께 OpenAI SDK 요청을 사용합니다.

주제를 선택하여 자세히 알아보세요.

OpenAI 채팅 완료 API에 지원되는 모델 및 리전

채팅 완료 생성 API는 Amazon Bedrock 및 이러한 OpenAI 모델을 지원하는 AWS 리전에서 지원되는 모든 모델에 사용할 수 있습니다. 지원되는 모델 및 리전에 대한 자세한 내용은 섹션을 참조하세요Amazon Bedrock에서 지원되는 파운데이션 모델.

채팅 완료 API를 사용하기 위한 사전 조건

채팅 완료 API를 사용하기 위한 사전 조건을 보려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

OpenAI SDK
HTTP request

채팅 완료 생성

채팅 완료 생성 API에 대한 자세한 내용은 OpenAI 설명서의 다음 리소스를 참조하세요.

참고

Amazon Bedrock은 현재 다른 OpenAI 채팅 완료 API 작업을 지원하지 않습니다.

채팅 완료 OpenAI 생성 API를 사용하는 방법을 알아보려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

OpenAI SDK (Python)

OpenAI SDK로 채팅 완료를 생성하려면 다음을 수행합니다.

  1. OpenAI SDK를 가져오고 다음 필드를 사용하여 클라이언트를 설정합니다.

    • base_url - 다음 형식과 /openai/v1같이 Amazon Bedrock 런타임 엔드포인트를에 접두사로 추가합니다.

      https://${bedrock-runtime-endpoint}/openai/v1
    • api_key - Amazon Bedrock API 키를 지정합니다.

    • default_headers - 헤더를 포함해야 하는 경우이 객체에 헤더를 키-값 페어로 포함할 수 있습니다. 또는 특정 API 호출을 수행할 extra_headers 때에서 헤더를 지정할 수 있습니다.

  2. chat.completions.create() 메서드를 클라이언트와 함께 사용하고 요청 본문messagesmodel 및를 최소한으로 지정합니다.

다음 예제에서는에서 채팅 완료 생성 API를 호출합니다us-west-2. $AWS_BEARER_TOKEN_BEDROCK을 실제 API 키로 바꿉니다.

from openai import OpenAI client = OpenAI( base_url="https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1", api_key="$AWS_BEARER_TOKEN_BEDROCK" # Replace with actual API key ) completion = client.chat.completions.create( model="openai.gpt-oss-20b-1:0", messages=[ { "role": "developer", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello!" } ] ) print(completion.choices[0].message)
HTTP request

직접 HTTTP 요청으로 채팅 완료를 생성하려면 다음을 수행합니다.

  1. 다음 형식과 /openai/v1/chat/completions같이 Amazon Bedrock 런타임 엔드포인트를에 접두사로 지정하여 URL을 지정합니다.

    https://${bedrock-runtime-endpoint}/openai/v1/chat/completions
  2. Authorization 헤더에서 AWS 자격 증명 또는 Amazon Bedrock API 키를 지정합니다.

  3. 요청 본문에서 요청 본문에 최소한 modelmessages를 지정합니다.

다음 예제에서는 curl을 사용하여에서 채팅 완료 생성 API를 호출합니다us-west-2. $AWS_BEARER_TOKEN_BEDROCK을 실제 API 키로 바꿉니다.

curl -X POST https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK" \ -d '{ "model": "openai.gpt-oss-20b-1:0", "messages": [ { "role": "developer", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello!" } ] }'

채팅 완료에 가드레일 포함

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

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

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

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

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

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

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

OpenAI 채팅이 완료된 가드레일을 사용하는 예를 보려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

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);