

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 OpenAI APIs產生回應
<a name="bedrock-mantle"></a>

Amazon Bedrock 為模型推論提供OpenAI相容的 API 端點，採用適用於大規模機器學習模型服務的分散式推論引擎 Mantle。這些端點可讓您使用熟悉的 OpenAI SDK 和工具搭配 Amazon Bedrock 模型，讓您以最少的程式碼變更遷移現有的應用程式，只需更新您的基本 URL 和 API 金鑰即可。 SDKs 

主要優點包括：
+ **非同步推論** – 透過 Responses API 支援長時間執行的推論工作負載
+ **具狀態對話管理** - 自動重建內容，無需在每個請求中手動傳遞對話歷史記錄
+ **簡化工具使用** – 簡化客服人員工作流程的整合
+ **彈性回應模式** – 支援串流和非串流回應
+ **輕鬆遷移** – 與現有的 OpenAI SDK 程式碼庫相容

## 支援的區域和端點
<a name="bedrock-mantle-supported"></a>

Amazon Bedrock 可在下列 AWS 區域使用：


| 區域名稱 | 區域 | Endpoint | 
| --- | --- | --- | 
| 美國東部 (俄亥俄) | us-east-2 | bedrock-mantle.us-east-2.api.aws | 
| 美國東部 (維吉尼亞北部) | us-east-1 | bedrock-mantle.us-east-1.api.aws | 
| 美國西部 (奧勒岡) | us-west-2 | bedrock-mantle.us-west-2.api.aws | 
| 亞太地區 (雅加達) | ap-southeast-3 | bedrock-mantle.ap-southeast-3.api.aws | 
| 亞太區域 (孟買) | ap-south-1 | bedrock-mantle.ap-south-1.api.aws | 
| 亞太地區 (悉尼) | ap-southeast-2 | bedrock-mantle.ap-southeast-2.api.aws | 
| 亞太區域 (東京) | ap-northeast-1 | bedrock-mantle.ap-northeast-1.api.aws | 
| 歐洲 (法蘭克福) | eu-central-1 | bedrock-mantle.eu-central-1.api.aws | 
| 歐洲 (愛爾蘭) | eu-west-1 | bedrock-mantle.eu-west-1.api.aws | 
| 歐洲 (倫敦) | eu-west-2 | bedrock-mantle.eu-west-2.api.aws | 
| 歐洲 (米蘭) | eu-south-1 | bedrock-mantle.eu-south-1.api.aws | 
| Europe (Stockholm) | eu-north-1 | bedrock-mantle.eu-north-1.api.aws | 
| 南美洲 (聖保羅) | sa-east-1 | bedrock-mantle.sa-east-1.api.aws | 

## 先決條件
<a name="bedrock-mantle-prereq"></a>

使用 OpenAI APIs之前，請確定您有下列項目：
+ **身分驗證** – 您可以使用下列方法進行身分驗證：
  + Amazon Bedrock API 金鑰 ( OpenAI SDK 需要）
  + AWS 登入資料 (HTTP 請求支援）
+ **OpenAI SDK** （選用） – 如果使用 SDK 型請求，請安裝 OpenAI Python SDK。
+ **環境變數** – 設定下列環境變數：
  + `OPENAI_API_KEY` – 設定為您的 Amazon Bedrock API 金鑰
  + `OPENAI_BASE_URL` – 設定為您所在區域的 Amazon Bedrock 端點 （例如 ` https://bedrock-mantle.us-east-1.api.aws/v1`)

## 模型 API
<a name="bedrock-mantle-models"></a>

模型 API 可讓您在採用 Mantle 技術的 Amazon Bedrock 中探索可用的模型。使用此 API 可擷取可與回應 API 和聊天完成 API 搭配使用的模型清單。如需完整的 API 詳細資訊，請參閱[OpenAI模型文件](https://platform.openai.com/docs/api-reference/models)。

### 列出可用的模型
<a name="bedrock-mantle-models-list"></a>

若要列出可用的模型，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

------
#### [ 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 ]

向 提出 GET 請求`/v1/models`：

```
# 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"
```

------

## 回應 API
<a name="bedrock-mantle-responses"></a>

Responses API 提供狀態式對話管理，支援串流、背景處理和多迴轉互動。如需完整的 API 詳細資訊，請參閱[OpenAI回應文件](https://platform.openai.com/docs/api-reference/responses)。

### 基本請求
<a name="bedrock-mantle-responses-create"></a>

若要建立回應，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

------
#### [ OpenAI SDK (Python) ]

```
# Create a basic response using the OpenAI SDK
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="openai.gpt-oss-120b",
    input=[
        {"role": "user", "content": "Hello! How can you help me today?"}
    ]
)

print(response)
```

------
#### [ HTTP request ]

向 提出 POST 請求`/v1/responses`：

```
# Create a basic response
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables

curl -X POST $OPENAI_BASE_URL/responses \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer $OPENAI_API_KEY" \
   -d '{
    "model": "openai.gpt-oss-120b",
    "input": [
        {"role": "user", "content": "Hello! How can you help me today?"}
    ]
}'
```

------

### 串流回應
<a name="bedrock-mantle-responses-streaming"></a>

若要逐步接收回應事件，請選擇您偏好方法的標籤，然後遵循下列步驟：

------
#### [ OpenAI SDK (Python) ]

```
# Stream response events incrementally using the OpenAI SDK
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables

from openai import OpenAI

client = OpenAI()

stream = client.responses.create(
    model="openai.gpt-oss-120b",
    input=[{"role": "user", "content": "Tell me a story"}],
    stream=True
)

for event in stream:
    print(event)
```

------
#### [ HTTP request ]

向 提出 POST 請求`/v1/responses`，並將 `stream`設定為 `true`：

```
# Stream response events incrementally
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables

curl -X POST $OPENAI_BASE_URL/responses \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer $OPENAI_API_KEY" \
   -d '{
    "model": "openai.gpt-oss-120b",
    "input": [
        {"role": "user", "content": "Tell me a story"}
    ],
    "stream": true
}'
```

------

## 聊天完成 API
<a name="bedrock-mantle-chat-completions"></a>

聊天完成 API 會產生對話式回應。如需完整的 API 詳細資訊，請參閱[OpenAI聊天完成文件](https://platform.openai.com/docs/api-reference/chat/create)。

### 建立聊天完成
<a name="bedrock-mantle-chat-completions-create"></a>

若要建立聊天完成，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

------
#### [ 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!"}
    ]
}'
```

------

### 啟用串流
<a name="bedrock-mantle-chat-completions-streaming"></a>

若要逐步接收回應，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

------
#### [ 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 ]

向 提出 POST 請求`/v1/chat/completions`，並將 ` stream`設定為 `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
}'
```

------