本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 OpenAI 聊天补全 API 调用模型
您可以将 OpenAI 创建聊天补全 API 与 Amazon Bedrock 模型配合使用,以便运行模型推理。
您可通过以下方式调用创建聊天补全 API:
选择一个主题以了解更多信息:
OpenAI 聊天补全 API 支持的模型和区域
您可以将创建聊天补全 API 用于 Amazon Bedrock 和 AWS 区域支持的所有 OpenAI 模型。有关支持的模型和区域的更多信息,请参阅Amazon Bedrock 中支持的根基模型。
使用聊天补全 API 的先决条件
要查看使用聊天补全 API 的先决条件,请选择与您的首选方法对应的选项卡,然后按照以下步骤操作:
- OpenAI SDK
-
- HTTP request
-
-
身份验证 – 您可以使用 AWS 凭证或 Amazon Bedrock API 密钥进行身份验证。
设置 AWS 凭证或生成 Amazon Bedrock API 密钥以对您的请求进行身份验证。
-
端点 – 查找与 Amazon Bedrock 运行时端点和配额中要使用的 AWS 区域对应的端点。如果使用 AWS SDK,在设置客户端时,您只需指定区域代码,无需指定整个端点。
创建聊天补全
有关创建聊天补全 API 的详细信息,请参阅 OpenAI 文档中的以下资源:
Amazon Bedrock 目前不支持其他 OpenAI 聊天补全 API 操作。
要了解如何使用 OpenAI 创建聊天补全 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
-
要使用直接 HTTP 请求创建聊天补全,请执行以下操作:
-
通过将 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 中调用创建聊天补全 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 护栏中这些参数的更多信息,请参阅测试护栏。
要查看在 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);