调用您导入的模型 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

调用您导入的模型

在您发送CreateModelImportJob请求后,模型导入任务可能需要几分钟才能导入您的模型。您可以在控制台中检查导入任务的状态,也可以通过调用GetModelImportJob操作并检查响应中的Status字段来检查导入任务的状态。如果模型的状态为完成,则导入作业已完成。

导入的模型在 Amazon Bedrock 中可用后,您可以通过向模型发送InvokeModelInvokeModelWithResponseStream请求来使用具有按需吞吐量的模型。有关更多信息,请参阅 使用以下命令提交单个提示 InvokeModel

要使用消息格式与导入的模型接口,可以调用 C onverse 或 operation s ConverseStream。有关更多信息,请参阅 使用 Converse API

注意

Qwen2.5、qwen2-vl、qwen2.5-vl 和模型不支持 Converse API。GPT-OSS

增强的 API 支持:多种 API 格式

从 2025 年 11 月 17 日起,Amazon Bedrock 自定义模型导入支持全面的 OpenAI 兼容的 API 格式,从而可以灵活地集成和部署自定义模型。2025 年 11 月 11 日之后进口的所有型号都将自动受益于这些增强功能,无需额外配置。

自定义模型导入现在支持三种 API 格式:

  • BedrockCompletion (文本)-与当前 Bedrock 工作流程兼容

  • 打开AICompletion (文本)-OpenAI 完成架构兼容性

  • Ope AIChat n Completion(文本和图像)-完全兼容对话架构

这些增强的功能包括用于强制执行 JSON 架构和模式的结构化输出、通过多图像处理增强的视觉支持、模型置信度见解的日志概率以及模型的工具调用功能。GPT-OSS

如需详细的 API 参考文档,请参阅 OpenAI 官方文档:

API 格式示例

以下示例演示了如何在导入的模型中使用四种支持的 API 格式中的每一种格式。

BedrockCompletion

BedrockCompletion格式与当前 Bedrock 工作流程兼容,并支持基于文本的推理请求。

请求示例:

import json import boto3 client = boto3.client('bedrock-runtime', region_name='us-east-1') payload = { "prompt": "How is the rainbow formed?", "max_gen_len": 100, "temperature": 0.5 } response = client.invoke_model( modelId='your-model-arn', body=json.dumps(payload), accept='application/json', contentType='application/json' ) response_body = json.loads(response['body'].read())

示例响应:

{ "generation": " – A scientific explanation\nA rainbow is a beautiful natural phenomenon that occurs when sunlight passes through water droplets in the air. It is formed through a process called refraction, which is the bending of light as it passes from one medium to another.\nHere's a step-by-step explanation of how a rainbow is formed:\n1. Sunlight enters the Earth's atmosphere: The first step in forming a rainbow is for sunlight to enter the Earth's atmosphere. This sunlight is made up of a spectrum of", "prompt_token_count": 7, "generation_token_count": 100, "stop_reason": "length", "logprobs": null }

BedrockCompletion 支持使用带response_format参数json_objectjson_schema类型的结构化输出。

OpenAICompletion

开放AICompletion格式提供 OpenAI 补全架构兼容性。要使用此格式,请使用max_tokens参数代替max_gen_len

请求示例:

import json import boto3 client = boto3.client('bedrock-runtime', region_name='us-east-1') payload = { "prompt": "How is the rainbow formed?", "max_tokens": 100, "temperature": 0.5 } response = client.invoke_model( modelId='your-model-arn', body=json.dumps(payload), accept='application/json', contentType='application/json' ) response_body = json.loads(response['body'].read())

示例响应:

{ "id": "cmpl-b09d5810bd64428f8a853be71c31f912", "object": "text_completion", "created": 1763166682, "choices": [ { "index": 0, "text": " The formation of a rainbow is a complex process that involves the interaction of sunlight with water droplets in the air. Here's a simplified explanation: 1. Sunlight enters the Earth's atmosphere and is refracted, or bent, as it passes through the air. 2. When sunlight encounters a water droplet, such as a cloud, mist, or fog, it is refracted again and split into its individual colors, a process known as dispersion. 3. The refracted and", "finish_reason": "length" } ], "usage": { "prompt_tokens": 7, "total_tokens": 107, "completion_tokens": 100 } }

Open AICompletion 支持完整的结构化输出功能json,包括regexchoice、、和使用structured_outputs参数的grammar约束。

OpenAIChatCompletion

Ope@@ AIChatn Completion 格式提供了完全的对话架构兼容性,并支持文本和图像输入。

请求示例:

import json import boto3 client = boto3.client('bedrock-runtime', region_name='us-east-1') payload = { "messages": [ { "role": "user", "content": "How is the rainbow formed?" } ], "max_tokens": 100, "temperature": 0.5 } response = client.invoke_model( modelId='your-model-arn', body=json.dumps(payload), accept='application/json', contentType='application/json' ) response_body = json.loads(response['body'].read())

示例响应:

{ "id": "chatcmpl-1d84ce1d3d61418e8c6d1973f87173db", "object": "chat.completion", "created": 1763166683, "choices": [ { "index": 0, "message": { "role": "assistant", "content": "A rainbow is a beautiful natural phenomenon that occurs when sunlight passes through water droplets in the air. The process of forming a rainbow involves several steps:\n\n1. **Sunlight**: The first requirement for a rainbow is sunlight. The sun should be shining brightly, but not directly overhead.\n2. **Water droplets**: The second requirement is water droplets in the air..." }, "finish_reason": "length" } ], "usage": { "prompt_tokens": 41, "completion_tokens": 100, "total_tokens": 141 } }

开放AIChat补全支持同时使用response_formatstructured_outputs参数的结构化输出。要获得视觉功能,请在内容数组中加入带有 base64 编码图像数据的图像。

注意

要使用 ChatCompletion 格式,聊天模板必须是其中的一部分tokenizer_config.json。“自定义模型导入” 不会将任何默认聊天模板应用于请求。

您需要模型 ARN 才能对新导入的模型进行推理调用。成功完成导入任务后,在导入的模型处于活动状态后,您可以在控制台中或通过发送请求来获取导入模型的模型 ARN。ListImportedModels

如果您使用 InvokeModelInvokeModelWithStream 调用导入的模型,您的请求将在 5 分钟内送达,或者您可能会得到 ModelNotReadyException。要理解 ModelNotReadyException,请按照下一节中的步骤进行处理 ModelNotreadyException。

常见问题

问:我应该使用哪种 API 格式?

答:为了最大限度地兼容各种格式 SDKs,我们建议使用开放AICompletion 或开放AIChat完成格式,因为它们提供了与 OpenAI 兼容的架构,在不同的工具和库中得到广泛支持。

问:Amazon GPT-OSS 上的 Bedrock 自定义模型导入是否支持 Converse API?

答:不是。 GPT-OSS基于自定义模型的导入模型不支持 Converse API 或 ConverseStream API。使用GPT-OSS基于 OpenA InvokeModelI 的自定义模型时,必须将 API 与兼容 OpenAI 的架构一起使用。

问:哪些型号支持工具调用?

答:GPT-OSS基于自定义模型支持工具调用功能。工具调用支持复杂工作流程的函数调用。

问:2025年11月11日之前进口的车型呢?

答:2025 年 11 月 11 日之前导入的模型继续使用其现有的 API 格式和功能。

问:基于 OpenAI generation_config.json 的模型呢?

答:在导入基于 OpenAI 的模型时,请务必包含正确的generation_config.json文件,例如。GPT-OSS您必须使用更新后的配置文件(2024 年 8 月 13 日更新),网址为 https://huggingface。 co/openai/gpt-oss-20b/blob/main/generation_config.json。更新的配置包括三个 end-of-sequence标记 IDs ([200002, 199999, 200012]),而较旧的版本仅包含两个标记 ([200002, 199999])。使用过时的generation_config.json文件会在模型调用期间导致运行时错误。此文件对于正确的模型行为至关重要,并且必须包含在基于 OpenAI 的模型导入中。

处理 ModelNotReadyException

Amazon Bedrock 自定义模型导入可移除未激活的模型,从而优化硬件利用率。如果您尝试调用已移除的模型,则会得到 ModelNotReadyException。在移除模型并且您首次调用模型之后,“自定义模型导入”将开始恢复模型。恢复时间取决于按需实例集大小和模型大小。

如果 InvokeModelInvokeModelWithStream 请求返回 ModelNotReadyException,请按照以下步骤处理异常。

  1. 配置重试次数。

    默认情况下,该请求会自动重试,并采用指数回退。您可以配置最大重试次数。

    以下示例代码显示了如何配置重试次数。将${region-name}${model-arn}、和10,替换为您所在的地区、模型 ARN 和最大尝试次数。

    import json import boto3 from botocore.config import Config REGION_NAME = ${region-name} MODEL_ID= '${model-arn}' config = Config( retries={ 'total_max_attempts': 10, //customizable 'mode': 'standard' } ) message = "Hello" session = boto3.session.Session() br_runtime = session.client(service_name = 'bedrock-runtime', region_name=REGION_NAME, config=config) try: invoke_response = br_runtime.invoke_model(modelId=MODEL_ID, body=json.dumps({'prompt': message}), accept="application/json", contentType="application/json") invoke_response["body"] = json.loads(invoke_response["body"].read().decode("utf-8")) print(json.dumps(invoke_response, indent=4)) except Exception as e: print(e) print(e.__repr__())
  2. 在重试尝试期间监控响应代码

    每次重试尝试都会启动模型恢复过程。恢复时间取决于按需实例集的可用性和模型大小。在恢复过程进行过程中监控响应代码。

    如果重试持续失败,请继续后续操作。

  3. 检验模型是否成功导入

    您可以通过在控制台中检查导入任务的状态或调用GetModelImportJob操作来验证模型是否已成功导入。查看响应中的 Status 字段。如果模型的状态为完成,则导入作业已成功。

  4. 如支持需进一步调查,请联系我们

    使用打开工单。支持有关更多信息,请参阅创建支持案例

    在支持请求中包含相关详细信息,例如模型 ID 和时间戳。