

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

借助推理提供者目标，您可以显式控制模型提供者的端点、模型映射和操作。当您需要自定义哪些模型可用、设置每个模型的令牌限制、配置路径重写或连接到没有内置连接器的提供程序时，请使用提供程序配置。

**Topics**
+ [目标配置](#gateway-target-inference-provider-config)
+ [创建提供者推理目标](#gateway-target-inference-provider-create)
+ [调用提供者推理目标](#gateway-target-inference-provider-invoke)
+ [Model-based 路由](#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"}
                    ]
                }
            ]
        }
    }
}
```
+  **端点**（必填）-模型提供者的 HTTPS 网址。
+  **模型映射**（可选）-型号 ID 转换配置。
  +  **ProviderPrefix**（可选）— 配置客户端如何从型号 ID 中省略提供商前缀。如果省略，则不应用前缀转换，客户端必须使用提供商的完整模型 ID。
    +  **strip**（可选）— 当`true`，客户端可以使用不带提供者前缀的模型 ID（例如，`claude-opus-4-7`而不是`anthropic.claude-opus-4-7`）。默认值为 `false`。
    +  **separator（可选）— 提供者前缀和型号名称之间的分隔符（例如，`.`）。**
+  **操作**（可选）— 将请求路径映射到支持的模型的操作配置列表：
  +  **path**（必填）-此操作的请求路径（例如，`/v1/chat/completions`）。
  +  P@@ **roviderPath**（可选）— 提供程序上的转发路径（如果它与请求路径不同）。
  +  **模型**（可选）-此操作支持的模型。每个条目都包含一个**模型**字段（必填），其中包含模型 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`值与目标匹配的详细信息，请参阅[Model-based 路由](#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!"}]
)
```

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

网关根据请求正文中的`model`字段路由推理请求：

1.  **限定路由**-如果模型 ID 包含`/`且前缀与目标名称匹配，则请求将路由到该目标（例如，到`openai`目标的`openai/gpt-5.5`路由）。

1.  **不合格路由**-如果型号 ID 不包含`/`，则网关会将其与所有已配置的目标进行匹配。精确匹配优先于全局模式。如果恰好有一个目标匹配，则会将请求路由到该目标。

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 密钥注入到出站请求中。