

# 推論提供者目標
<a name="gateway-target-inference-provider"></a>

推論提供者目標可讓您明確控制模型提供者的端點、模型映射和操作。當您需要自訂可用的模型、設定每個模型字符限制、設定路徑重寫，或連接到沒有內建連接器的提供者時，請使用提供者組態。

**Topics**
+ [目標組態](#gateway-target-inference-provider-config)
+ [建立提供者推論目標](#gateway-target-inference-provider-create)
+ [叫用供應商推論目標](#gateway-target-inference-provider-invoke)
+ [模型型路由](#gateway-target-inference-provider-routing)
+ [串流](#gateway-target-inference-provider-streaming)
+ [傳出授權](#gateway-target-inference-provider-auth)

## 目標組態
<a name="gateway-target-inference-provider-config"></a>

推論提供者目標的目標組態使用下列結構：

```
{
    "inference": {
        "provider": {
            "endpoint": "https://api.openai.com",
            "operations": [
                {
                    "path": "/v1/chat/completions",
                    "models": [
                        {"model": "gpt-5.5"},
                        {"model": "gpt-5.4"},
                        {"model": "gpt-5.4-mini"}
                    ]
                },
                {
                    "path": "/v1/responses",
                    "models": [
                        {"model": "gpt-5.5"},
                        {"model": "gpt-5.4"}
                    ]
                }
            ]
        }
    }
}
```
+  **endpoint** （必要） – 模型提供者的 HTTPS URL。
+  **modelMapping** （選用） – 模型 ID 轉譯組態。
  +  **providerPrefix** （選用） – 設定用戶端如何從模型 IDs 省略提供者字首。如果省略，則不會套用字首轉譯，且用戶端必須使用提供者的完整模型 IDs。
    +  **strip** （選用） – 當 時`true`，用戶端可以使用沒有提供者字首IDs （例如，`claude-opus-4-7`而不是 `anthropic.claude-opus-4-7`)。預設為 `false`。
    +  **分隔**符號 （選用） – 提供者字首和模型名稱之間的分隔符號字元 （例如 `.`)。
+  **operations** （選用） – 將請求路徑映射至支援模型的操作組態清單：
  +  **path** （必要） – 此操作的請求路徑 （例如，`/v1/chat/completions`)。
  +  **providerPath** （選用） – 如果與請求路徑不同，則在提供者上轉送至 的路徑。
  +  **模型** （選用） – 此操作支援的模型。每個項目都包含**模型**欄位 （必要），其中包含模型 ID 或 glob 模式 （例如 `anthropic.claude-opus-*`)。

## 建立提供者推論目標
<a name="gateway-target-inference-provider-create"></a>

下列範例使用提供者組態建立 OpenAI 推論目標：

```
aws bedrock-agentcore-control create-gateway-target --cli-input-json '{
    "gatewayIdentifier": "GATEWAY_ID",
    "name": "openai",
    "targetConfiguration": {
        "inference": {
            "provider": {
                "endpoint": "https://api.openai.com",
                "operations": [
                    {
                        "path": "/v1/chat/completions",
                        "models": [
                            {"model": "gpt-5.5"},
                            {"model": "gpt-5.4"},
                            {"model": "gpt-5.4-mini"}
                        ]
                    },
                    {
                        "path": "/v1/responses",
                        "models": [
                            {"model": "gpt-5.5"},
                            {"model": "gpt-5.4"}
                        ]
                    }
                ]
            }
        }
    },
    "credentialProviderConfigurations": [
        {
            "credentialProviderType": "API_KEY",
            "credentialProvider": {
                "apiKeyCredentialProvider": {
                    "providerArn": "arn:aws:bedrock-agentcore:us-west-2:111122223333:token-vault/default/apikeycredentialprovider/openai-key",
                    "credentialLocation": "HEADER",
                    "credentialParameterName": "Authorization",
                    "credentialPrefix": "Bearer "
                }
            }
        }
    ]
}'
```

下列範例會建立具有明確提供者組態和模型映射的 Bedrock 推論目標。使用 的`modelMapping`組態`providerPrefix`可讓用戶端使用短模型名稱 （如 `claude-opus-4-7`)，而閘道會將它們轉譯為提供者字首名稱 （如 `anthropic.claude-opus-4-7`)：

```
aws bedrock-agentcore-control create-gateway-target --cli-input-json '{
    "gatewayIdentifier": "GATEWAY_ID",
    "name": "bedrock",
    "targetConfiguration": {
        "inference": {
            "provider": {
                "endpoint": "https://bedrock-mantle.us-east-1.api.aws",
                "modelMapping": {
                    "providerPrefix": {"strip": true, "separator": "."}
                },
                "operations": [
                    {
                        "path": "/v1/chat/completions",
                        "models": [
                            {"model": "anthropic.claude-opus-*"},
                            {"model": "anthropic.claude-sonnet-*"},
                            {"model": "openai.gpt-oss-*"}
                        ]
                    },
                    {
                        "path": "/v1/messages",
                        "providerPath": "/anthropic/v1/messages",
                        "models": [
                            {"model": "anthropic.claude-opus-*"},
                            {"model": "anthropic.claude-sonnet-*"}
                        ]
                    }
                ]
            }
        }
    },
    "credentialProviderConfigurations": [
        {"credentialProviderType": "GATEWAY_IAM_ROLE"}
    ]
}'
```

## 叫用供應商推論目標
<a name="gateway-target-inference-provider-invoke"></a>

若要叫用推論目標，請將請求傳送到閘道的`/inference`路徑。閘道會根據請求內文中的 `model` 欄位，將每個請求路由至正確的目標。`model` 值可以是純模型 ID （例如 `gpt-5.5`) 或以 格式顯示的目標合格模型 ID `{targetName}/{modelId}`（例如 `openai/gpt-5.5`)。如需 `model`值如何符合目標的詳細資訊，請參閱以[模型為基礎的路由](#gateway-target-inference-provider-routing)。

URL 格式為：

```
https://{gatewayId}.gateway.bedrock-agentcore.{region}.amazonaws.com/inference/{path}
```

`{path}` 將 取代為推論操作路徑 （例如 `v1/chat/completions`、 `v1/responses`或 `v1/messages`)。

### 使用 OpenAI 開發套件
<a name="_using_the_openai_sdk"></a>

將閘道的`/inference/v1`路徑設定為 `base_url`：

```
from openai import OpenAI

client = OpenAI(
    base_url="https://<gateway-id>.gateway.bedrock-agentcore.us-west-2.amazonaws.com/inference/v1",
    api_key="<gateway-auth-token>"
)

response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Hello!"}]
)
```

### 使用 Anthropic SDK
<a name="_using_the_anthropic_sdk"></a>

將閘道的`/inference`路徑設定為 `base_url`：

```
import anthropic

client = anthropic.Anthropic(
    base_url="https://<gateway-id>.gateway.bedrock-agentcore.us-west-2.amazonaws.com/inference",
    api_key="<gateway-auth-token>"
)

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}]
)
```

### 使用 awscurl
<a name="_using_awscurl"></a>

```
awscurl --service bedrock-agentcore --region us-west-2 -X POST \
    "https://<gateway-id>.gateway.bedrock-agentcore.us-west-2.amazonaws.com/inference/v1/chat/completions" \
    -H "Content-Type: application/json" \
    -d '{"model": "gpt-5.5", "messages": [{"role": "user", "content": "Hello!"}]}'
```

### 合格模型路由
<a name="_qualified_model_routing"></a>

當多個目標提供相同的模型時，請在模型 ID 前加上目標名稱，以路由至特定提供者：

```
# Route explicitly to the "bedrock" target
response = client.chat.completions.create(
    model="bedrock/claude-opus-4-7",
    messages=[{"role": "user", "content": "Hello!"}]
)
```

## 模型型路由
<a name="gateway-target-inference-provider-routing"></a>

閘道會根據請求內文中的 `model` 欄位路由推論請求：

1.  **合格路由** – 如果模型 ID 包含 ，`/`且字首符合目標名稱，則請求會路由到該目標 （例如，`openai/gpt-5.5`路由到`openai`目標）。

1.  **不合格的路由** – 如果模型 ID 不包含 `/`，閘道會比對它與所有設定的目標。完全相符項目的優先順序高於 glob 模式。如果只有一個目標相符，請求會路由到該目標。

1.  **碰撞處理** – 當多個目標符合相同特異性的相同模型時，如果符合其中之一，閘道會預設為 Amazon Bedrock 目標。否則，它會以循環順序將請求分配到相符的目標。若要鎖定對特定目標的請求，請將具有目標名稱的模型視為字首 （例如，`bedrock/claude-opus-4-7`)。

## 串流
<a name="gateway-target-inference-provider-streaming"></a>

串流遵循 OpenAI SSE 慣例。在請求內文`"stream": true`中設定 ，而閘道會從提供者傳遞 SSE 串流，而不需要轉換：

```
stream = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Write a story."}],
    stream=True
)

for chunk in stream:
    print(chunk.choices[0].delta.content, end="")
```

## 傳出授權
<a name="gateway-target-inference-provider-auth"></a>

推論提供者目標支援下列傳出授權類型：
+  **IAM (SigV4)** – `GATEWAY_IAM_ROLE`用於接受 IAM 身分驗證 （例如 Amazon Bedrock) 的供應商。
+  **API 金鑰** – `API_KEY`用於需要 API 金鑰 （例如 OpenAI 和 Anthropic) 的提供者。閘道會將儲存的 API 金鑰注入傳出請求。