AWS Machine Learning Blog

Introducing Grok on Amazon Bedrock

8.5内容质量
Introducing Grok on Amazon Bedrock

TL;DR · AI 摘要

AWS正式上线xAI的Grok 4.3模型,支持100万token上下文和可配置推理,性能超越多个行业基准。

核心要点

  • Grok 4.3在Artificial Analysis Omniscience基准中幻觉率最低且排名第一
  • 模型支持none/low/medium/high四级推理努力配置,适应不同场景需求
  • 通过OpenAI兼容API访问,使用HTTPS直接调用Chat Completions或Responses接口

结构提纲

按章节快速跳转。

  1. 宣布xAIGrok 4.3模型在Amazon Bedrock正式上线

  2. Grok 4.3支持100万token上下文和可配置推理努力级别

  3. 在Omniscience、Tau2 Telecom等基准测试中表现最佳

  4. 通过OpenAI兼容API调用Mantle引擎实现模型访问

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Grok 4.3模型发布
    • 模型特性
      • 100万token上下文
      • 四级推理配置
    • 性能表现
      • Omniscience基准第一
      • 帕累托前沿效率
    • 访问方式
      • OpenAI兼容API
      • HTTPS接口调用

金句 / Highlights

值得收藏与分享的关键句。

#Amazon Bedrock#Grok 4.3#AI模型#机器学习
打开原文

在Amazon Bedrock上推出Grok | 人工智能

在Amazon Bedrock上推出Grok

本文由xAI(SpaceXAI)的Eric Jiang与笔者共同撰写。

xAI的Grok 4.3现已在Amazon Bedrock上正式发布,为构建智能体和AI工作流的团队提供了一个能够可靠处理长输入内容的模型。随着此次发布,xAI正式加入Amazon Bedrock成为模型服务提供商。Grok 4.3是一款具有可配置推理力度的模型,它在构建智能体时提供强大的工具使用能力和指令遵循能力,并通过高吞吐量推理实现高效的token使用。该模型支持文本和图像输入,拥有100万token的上下文窗口,适用于处理长文档和多轮对话场景。该模型运行在Amazon Bedrock新一代推理引擎Mantle上。

本文将介绍Grok 4.3为何适合智能体和企业级工作负载,如何通过Amazon Bedrock访问该模型,以及如何使用大多数团队首先会使用的功能:基础聊天请求、可配置推理力度、工具调用、结构化输出、图像输入和状态保持的多轮对话。

为何Grok 4.3适合智能体和推理工作负载

根据xAI的说法,Grok 4.3专为需要准确性的企业级应用场景而设计。在模型发布时的基准测试中,xAI报告称该模型的表现优于多个行业基准。在Artificial Analysis Omniscience基准测试中,Grok 4.3在前沿模型对比中以最低的幻觉率排名第一。在Artificial Analysis Tau2 Telecom基准测试的客户支持场景工具调用测试中,以及在Vals AI Case Law和Corporate Finance基准测试的文档理解测试中,Grok 4.3均位列第一。xAI还将该模型置于智能性与成本的帕累托前沿,其描述为每美元智能性是其他前沿模型的2至10倍。

通过Grok 4.3,您可以通过每个请求的"努力程度"参数控制模型在回答前的思考深度。您可以按请求配置"无"、"低"、"中"、"高"四个级别的努力程度,并让一个模型覆盖全部工作场景。分类任务可设置为"无"努力以保持低延迟,合同分析或案例法任务则可在深度优先的场景下设置为"高"努力。Grok 4.3支持文本和图像输入并返回文本,其100万token的上下文窗口可容纳长文档和多轮对话场景。该模型在工具调用和指令遵循方面表现优异,这使其成为依赖函数调用执行操作的智能体的实用选择。这些特性与合同审查、信贷协议分析和财务文档问答等使用场景高度契合。在这些场景中,模型会处理长输入内容后调用相关系统进行处理。

要使用 Grok 4.3 配置 SDK,请按照前一节所述,使用正确的 Region 和路径设置基础 URL。

使用 Grok 时请注意以下三点与标准 OpenAI 规范的差异:

  • temperature 的默认值为 0.7(而非 1)
  • top_p 的默认值为 0.95(而非 1)
  • max_completion_tokens 的默认值为 131072

如果您的应用需要不同行为,请显式设置这些参数。

认证并发送首个请求

您有两种方式可以认证访问 Mantle 接口,且都兼容 OpenAI SDK。对于生产环境,我们建议使用从 IAM 凭据生成的短期 bearer token,因为它们会自动过期且始终与您的 IAM 身份绑定。如需快速探索和入门,可使用长期有效的 Amazon Bedrock API 密钥。请将长期密钥仅限于探索用途,不要嵌入生产环境应用中。

以下示例演示了如何使用长期 Amazon Bedrock API 密钥进行认证:

code
pip install openai

将客户端指向区域 Mantle 接口并使用 API 密钥认证。模型 ID 为 xai.grok-4.3:

code
from openai import OpenAI

client = OpenAI(
    api_key="<your Amazon Bedrock API key>",
    base_url="https://bedrock-mantle.us-west-2.api.aws/openai/v1",
)

response = client.chat.completions.create(
    model="xai.grok-4.3",
    messages=[
        {"role": "user", "content": "In one sentence, what is Amazon Bedrock?"}
    ],
)
print(response.choices[0].message.content)

当需要将 Amazon Bedrock 集成到安全性要求更高的应用中时,建议使用短期凭证。您可以通过 Amazon Bedrock token generator 从现有 AWS 凭据生成短期 bearer token,该方式在请求时生成 token,可保持认证与 IAM 身份绑定并避免使用长期密钥。要开始使用,请安装 aws-bedrock-token-generator 包:

code
pip install aws-bedrock-token-generator

在代码中使用 aws_bedrock_token_generator 库的 provide_token 函数,示例如下:

code
from aws_bedrock_token_generator import provide_token
from openai import OpenAI

client = OpenAI(
    api_key=provide_token(region="us-west-2"),
    base_url="https://bedrock-mantle.us-west-2.api.aws/openai/v1",
)

配置推理输出

您可以通过 Responses API 的 reasoning 参数控制模型的推理投入程度。可选的推理等级包括:none(禁用推理)、low(默认值)、medium 和 high。更高的推理等级通常有助于解决需要多步骤推理的复杂问题(此时快速回答可能不准确),但会增加输出 token 数量。

Chat Completions API 不会返回推理轨迹。如果需要在多轮对话中使用模型的推理过程,请使用 Responses API。在默认的状态保持模式下(设置 store=True 并通过 previous_response_id 链式调用),服务会自动保留每轮对话的推理过程,无需手动管理。加密推理用于无状态场景。当设置 store=False(例如工作负载要求不将对话内容存储在服务器端时),可通过 include=["reasoning.encrypted_content"] 请求推理内容。在下一次请求的输入中传回该内容,即可为模型提供上下文的先前推理。

这个示例以高努力程度运行一个经典陷阱问题:

python
response = client.responses.create(
    model="xai.grok-4.3",
    reasoning={"effort": "high"},  # 可选值:none, low, medium, high
    include=["reasoning.encrypted_content"],
    max_output_tokens=4096,
    input=(
        "一只球拍和一个球共1.10美元。球拍比球贵1美元。"
        "球多少钱?只需给出数字答案。"
    ),
)
print(response.output_text)
print(response.usage.output_tokens_details.reasoning_tokens)

模型通过代数运算得出答案,而非选择直观但错误的0.10美元。使用统计信息块会报告模型内部消耗的推理令牌数量。将努力程度设为 none 时,该字段会显示 0 个推理令牌,这种设置适用于简单且对延迟敏感的调用:

python
response = client.responses.create(
    model="xai.grok-4.3",
    reasoning={"effort": "none"},
    max_output_tokens=2048,
    input="说OK。",
)
print(response.output_text)  # OK.

实用模式是将 none 或 low 努力程度用于分类、提取和简短事实查询,将 high 努力程度保留给需要规划步骤、数学计算和复杂链式处理的任务(早期错误可能导致整个任务失败)。

使用 Grok 4.3 调用工具

工具调用是智能体工作负载的核心,Grok 4.3 通过与 OpenAI 兼容的接口支持该功能。您描述可用工具,模型决定何时调用工具,然后返回结构化请求,您的代码执行该请求并反馈结果。Grok 4.3 遵循标准 OpenAI 工具调用格式,因此需要为每个工具定义参数的 JSON Schema。

以下示例提供一个 get_weather 工具并提出应触发该工具的问题:

python
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "获取城市的当前天气",
            "parameters": {
                "type": "object",
                "properties": {"city": {"type": "string"}},
                "required": ["city"],
            },
        },
    }
]

response = client.chat.completions.create(
    model="xai.grok-4.3",
    messages=[{"role": "user", "content": "悉尼的天气如何?请使用工具。"}],
    tools=tools,
    tool_choice="auto",  # 允许模型决定是否调用工具
)

tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.function.name, tool_call.function.arguments)
# get_weather {"city":"Sydney"}

模型从问题中解析出了城市,并生成了一个符合模式的合法参数对象。从这里开始,你可以在自己的代码中运行该函数,将结果附加到工具角色消息中,然后再次调用模型,使其能够将数据折叠到自然语言回复中。这是Grok 4.3上多步骤代理的基本构建块。

结构化输出

当需要模型返回你的代码可以直接解析的数据时,请使用带有JSON Schema的结构化输出。Grok 4.3支持严格模式的json_schema响应格式,因此响应会符合你提供的模式,而不是生成自由形式的文本。

例如,以下代码请求有关国家的事实并限制答案的格式:

code
import json

schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "capital": {"type": "string"},
        "population_millions": {"type": "number"},
    },
    "required": ["name", "capital", "population_millions"],
    "additionalProperties": False,
}

response = client.chat.completions.create(
    model="xai.grok-4.3",
    messages=[{"role": "user", "content": "Return facts about the country Australia."}],
    response_format={
        "type": "json_schema",
        "json_schema": {"name": "country_facts", "strict": True, "schema": schema},
    },
    max_completion_tokens=4096,
)

data = json.loads(response.choices[0].message.content)
print(data)
# {'name': 'Australia', 'capital': 'Canberra', 'population_millions': 26.6}

将strict设为True并将additionalProperties设为False可以将响应限制为你请求的键,这与下游系统期望固定记录格式时的工具调用配合得很好。测试中的一个操作注意事项:即使在良性输入上,请求偶尔也会因自动内容安全检查返回400错误,因此在生产调用中应构建一个简短的重试机制。

图像输入

Grok 4.3接受图像作为输入并返回文本,这涵盖了文档理解、图表阅读和视觉问答。你通过与OpenAI Chat Completions API相同的模式传递图像,作为包含base64编码字节的数据URL的内容部分,或作为公共图像URL。文本和图像部分位于同一个内容数组中,因此模型可以同时看到问题和图片。

code
import base64

with open("chart.png", "rb") as f:
    b64 = base64.b64encode(f.read()).decode()

response = client.chat.completions.create(
    model="xai.grok-4.3",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "用一句简短的话描述这张图片。"},
                {
                    "type": "image_url",
                    "image_url": {"url": f"data:image/png;base64,{b64}"},
                },
            ],
        }
    ],
    max_completion_tokens=4096,
)
print(response.choices[0].message.content)

在测试中,模型成功读取了生成的测试图像并正确命名了其主导颜色。请使用受支持的图像格式(如PNG或JPEG),并保持编码的整洁:格式错误或截断的图像负载将返回验证错误,而不是猜测答案。

使用Responses API进行有状态对话

响应 API 可在服务端保存对话状态,因此无需在每次交互时重新发送完整消息历史记录。您可以通过设置 store=True 来存储某次交互,获取返回的响应 ID,并在下一次调用时通过 previous_response_id 参数引用该 ID。模型会将之前的对话视为上下文。

python
first = client.responses.create(
    model="xai.grok-4.3",
    input="记住数字 42。只需确认。",
    store=True,
    max_output_tokens=2048,
)

second = client.responses.create(
    model="xai.grok-4.3",
    previous_response_id=first.id,
    input="我让你记住的数字是什么?",
    max_output_tokens=2048,
)
print(second.output_text)  # 42

在代码示例的第二次 client.responses.create 调用中,除了 previous_response_id 参数外,实际上没有发送其他消息。由于服务端会保存每次交互,模型的先前推理过程会自动延续到下一次调用,因此您无需手动管理状态即可同时保持对话内容和模型的思考过程。启用此功能前需注意:保存对话状态意味着服务端会保留这些交互记录。如需了解存储数据的安全性和隐私保护细节,以及如何在需要时禁用存储功能,请查阅 Amazon Bedrock 数据保护文档。

服务层级与区域可用性

Amazon Bedrock 提供多种服务层级,帮助您根据工作负载匹配成本和吞吐量。标准层级按需推理提供按 token 计费的无合约访问方式,优先级层级通过更高的每 token 价格提供处理队列中的优先待遇,弹性层级则为非时间敏感型工作负载提供更具成本效益的访问方式。您可以使用 Grok 4.3 与标准、优先级和弹性层级。详细信息请参阅 推理服务层级 文档。

Grok 4.3 使用区域内部推理,因此您需要将客户端绑定到模型可用的区域,并设置与之匹配的 Mantle 基础 URL。该模型在发布时暂不支持地理和全球跨区域推理。本文示例使用 us-west-2 区域。如需查看当前支持的区域列表,请参阅 区域可用性 文档;如需查看各层级的定价信息,请参阅 Amazon Bedrock 定价页面。

结论

Amazon Bedrock 上的 Grok 4.3 为您提供了一款以推理为核心、支持可配置推理深度、原生工具调用、严格结构化输出、图像理解和服务器端对话状态管理的模型。您可以通过指向 bedrock-mantle 端点的 OpenAI SDK 访问该模型。本文示例中使用的资源仅限于按请求计费的 token 使用量,不会创建其他可计费的 AWS 资源。但如果您为探索目的生成了长期有效的 Amazon Bedrock API 密钥,请在使用完毕后通过 Amazon Bedrock 控制台将其删除。长期密钥属于持续有效的凭证,删除不再需要的密钥有助于缩小账户的攻击面。

要开始构建,请查看 Grok 4.3 模型卡片以获取当前区域列表和参数详细信息,并查看 Amazon Bedrock 定价页面了解令牌费率。从那里,有几个方向值得关注:通过执行返回的函数并反馈结果来完整实现工具调用循环,在响应回合中传递加密推理内容以使长期运行的代理在思考方式上保持连贯性,以及将努力程度与自身工作负载进行基准测试,以确定高阶推理何时不再值得其令牌成本。在 AWS re:Post 上的 Amazon Bedrock 社区参与讨论。

About the authors

'"`