기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
OpenAI Chat Completions API를 사용하여 모델 간접 호출
Amazon Bedrock 모델로 OpenAI Create chat completion API를 사용하여 모델 추론을 실행할 수 있습니다.
다음과 같은 방식으로 Chat Completions API를 호출할 수 있습니다.
주제 영역을 선택하여 자세히 알아보세요.
OpenAI Chat Completions API에 지원되는 모델 및 리전
Create chat completion API는 Amazon Bedrock 및 이러한 OpenAI 모델을 지원하는 AWS 리전√에서 지원되는 모든 모델에 사용할 수 있습니다. 지원되는 모델 및 리전에 대한 자세한 내용은 Amazon Bedrock에서 지원되는 파운데이션 모델 섹션을 참조하세요.
Chat Completions API를 사용하기 위한 사전 조건
Chat Completions API를 사용하기 위한 사전 조건을 보려면 원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.
- OpenAI SDK
-
- HTTP request
-
-
인증 - AWS 자격 증명 또는 Amazon Bedrock API 키로 인증할 수 있습니다.
AWS 자격 증명을 설정하거나 Amazon Bedrock API 키를 생성하여 요청을 인증합니다.
-
엔드포인트 - Amazon Bedrock 런타임 엔드포인트 및 할당량에 사용할 AWS 리전에 해당하는 엔드포인트를 찾습니다. AWS SDK를 사용하는 경우 클라이언트를 설정할 때 전체 엔드포인트가 아닌 리전 코드만 지정하면 될 수 있습니다.
Chat Completions 생성
Create chat completion API에 대한 자세한 내용은 OpenAI 설명서의 다음 리소스를 참조하세요.
Amazon Bedrock은 현재 다른 OpenAI Chat completion API 작업을 지원하지 않습니다.
OpenAI Create chat completion API를 사용하는 방법을 알아보려면 원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.
- OpenAI SDK (Python)
-
OpenAI SDK로 채팅 완성을 생성하려면 다음을 수행합니다.
-
OpenAI SDK를 가져오고 다음 필드를 사용하여 클라이언트를 설정합니다.
-
base_url - 다음 형식과 같이 Amazon Bedrock 런타임 엔드포인트를 /openai/v1에 접두사로 추가합니다.
https://${bedrock-runtime-endpoint}/openai/v1
-
api_key - Amazon Bedrock API 키를 지정합니다.
-
default_headers - 헤더를 포함해야 하는 경우 이 객체에 헤더를 키-값 페어로 포함할 수 있습니다. 또는 특정 API 직접 호출을 수행할 때 extra_headers에서 헤더를 지정할 수 있습니다.
-
chat.completions.create() 메서드를 클라이언트와 함께 사용하고 요청 본문에 model 및 messages를 최소한으로 지정합니다.
다음 예제에서는 us-west-2에서 채팅 완성 생성 API를 직접적으로 호출합니다. $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 요청으로 채팅 완성을 생성하려면 다음을 수행합니다.
-
다음 형식과 같이 Amazon Bedrock 런타임 엔드포인트를 /openai/v1/chat/completions에 접두사로 지정하여 URL을 지정합니다.
https://${bedrock-runtime-endpoint}/openai/v1/chat/completions
-
Authorization 헤더에서 AWS 자격 증명 또는 Amazon Bedrock API 키를 지정합니다.
-
요청 본문에서 요청 본문에 최소한 model 및 messages를 지정합니다.
다음 예제에서는 curl을 사용하여 us-west-2에서 Create chat completion API를 호출합니다. $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!"
}
]
}'
채팅 완성에 가드레일 포함
모델 입력 및 응답에 보호 장치를 포함하려면 다음 추가 파라미터를 요청 본문의 필드로 포함하여 모델 간접 호출을 실행할 때 가드레일을 적용합니다.
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);