View a markdown version of this page

推理提供者目标 - Amazon Bedrock AgentCore

推理提供者目标

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

目标配置

推理提供者目标的目标配置使用以下结构:

{ "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-*)。

创建提供者推理目标

以下示例使用提供程序配置创建 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"} ] }'

调用提供者推理目标

要调用推理目标,请向网关的/inference路径发送请求。网关根据请求正文中的model字段将每个请求路由到正确的目标。该model值可以是普通模型 ID(例如gpt-5.5),也可以是表单中的目标限定模型 ID{targetName}/{modelId}(例如)。openai/gpt-5.5有关如何将该model值与目标匹配的详细信息,请参阅Model-based 路由

URL 格式如下:

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

{path}替换为推理操作路径(例如v1/chat/completionsv1/responses、或v1/messages)。

使用 OpenAI 开发工具包

将网关的/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

将网关的/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

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

合格的模型路由

当多个目标为同一个模型提供服务时,请在模型 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 路由

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

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

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

  3. 碰撞处理 — 当多个目标以相同特异性匹配同一个模型时,如果其中有一个目标在匹配目标中,则网关默认为 Amazon Bedrock 目标。否则,它会按循环顺序在匹配的目标之间分配请求。要将请求固定到特定目标,请使用目标名称作为前缀来限定模型(例如,bedrock/claude-opus-4-7)。

流式传输

直播遵循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="")

出站授权

推理提供商目标支持以下出站授权类型:

  • IAM (Sigv4)GATEWAY_IAM_ROLE 适用于接受 IAM 身份验证的提供商(例如 Amazon Bedrock)。

  • API 密钥API_KEY 用于需要 API 密钥的提供商(例如 OpenAI 和 Anthropic)。网关将存储的 API 密钥注入到出站请求中。