跳到正文
AWS Machine Learning Blog· Aris Tsakpinis·· 5 小时前AI 评分49

Moonshot AI Kimi K3.1 Pro Highspeed 现已在 Amazon Bedrock 上线

Introducing Kimi K3.1 Pro on Amazon Bedrock

AI 导读

Moonshot AI 的 Kimi K3.1 Pro Highspeed 已上线 Amazon Bedrock,它是 Kimi K3 的后训练版本,保留 3T 级开源权重架构和 1M token 上下文窗口,输出速度达到 Kimi K3.1 Pro 的 2–3 倍。

正文 · AI 翻译

月之暗面(Moonshot AI)的 Kimi K3.1 Pro Highspeed 现已在 Amazon Bedrock 上线。作为月之暗面全新 K3.1 系列的一员,它是 Kimi K3 经过后续训练的版本,拥有相同的 3T 级开源权重架构和 100 万 token 上下文窗口,并使用了多得多的后续训练算力。据月之暗面介绍,这些额外训练瞄准长时程智能体任务并减少事实性错误。它还改进了财务建模和办公文档等专业任务,以及游戏引擎、3D 场景和计算机辅助设计(CAD)脚本的编码。Kimi K3.1 Pro Highspeed 以更高的速率生成输出 token,月之暗面报告其速度是 Kimi K3.1 Pro 的 2–3 倍。

Kimi K3.1 Pro Highspeed 使用与 Amazon Bedrock 上的 Kimi K3 相同的端点、API 和功能。如果你已经在使用 Kimi K3 进行构建,只需在现有代码中更改模型 ID 即可试用。

Kimi K3.1 Pro Highspeed 支持工具调用、结构化输出、可配置推理、图像输入和流式传输。你无需更改安全态势即可采用 Kimi K3.1 Pro Highspeed。你的数据在 AWS 数据边界内处理,不会与月之暗面共享,也不会用于训练模型。推理请求始终启用零数据保留,并且由于操作员零访问,AWS 操作员在推理过程中无法查看你的提示和补全。

在这篇文章中,我们将向你展示如何在 Amazon Bedrock 上开始使用 Kimi K3.1 Pro Highspeed。我们还将介绍如何通过 Flex 层级降低成本、针对重复上下文的显式提示缓存,以及如何在 OpenCode 中将该模型用作编码助手。

在 Amazon Bedrock 上开始使用 Kimi K3.1 Pro Highspeed

要在不编写代码的情况下试用该模型,请打开 Amazon Bedrock 控制台,选择 Test,然后选择 Playground,并选择 Kimi K3.1。

在代码方面,Kimi K3.1 Pro Highspeed 通过 OpenAI 兼容的 Chat Completions 和 Responses API 在 bedrock-runtime 端点上可用,也可通过 Amazon Bedrock 的 Converse 和 Invoke API 使用。我们推荐 Chat Completions API。你通过跨区域推理配置文件访问该模型:

  • global.moonshotai.kimi-k3.1 会将请求路由到任何受支持的 AWS 商用区域,且每个 token 的成本低于地理配置文件。对于大多数工作负载,我们推荐使用它。
  • us.moonshotai.kimi-k3.1 将处理保持在美洲(US)区域内,而 in.moonshotai.kimi-k3.1 将其保持在印度区域内,适用于有数据驻留要求的工作负载。

先决条件

要跟随这些示例,你需要:

  1. 一个可以访问 Amazon Bedrock 的 AWS 账户。
  2. Python 3.11 或更高版本,并安装了 OpenAI SDK、aws-bedrock-token-generator 和 boto3(pip install -U openai aws-bedrock-token-generator boto3)。
  3. 一个被允许在 Kimi K3.1 Pro Highspeed 推理配置文件上调用 bedrock:InvokeModel 和 bedrock:InvokeModelWithResponseStream 的 AWS Identity and Access Management (IAM) 身份。如果你使用持有者令牌进行身份验证,请添加 bedrock:CallWithBearerToken。

使用 Chat Completions API 调用 Kimi K3.1 Pro Highspeed

如果你的应用程序已经在使用 OpenAI SDK,只需将其指向 Amazon Bedrock 端点并更改模型名称。以下示例根据你的 AWS 凭证创建一个短期持有者令牌并发送一个请求:

from openai import OpenAI
from aws_bedrock_token_generator import provide_token

REGION = "us-west-2"
MODEL_ID = "global.moonshotai.kimi-k3.1"

# A short-term token derived from your AWS credentials, so no long-lived key is stored in code
client = OpenAI(
    base_url=f"https://bedrock-runtime.{REGION}.amazonaws.com/openai/v1",
    api_key=provide_token(region=REGION),
)

completion = client.chat.completions.create(
    model=MODEL_ID,
    messages=[
        {"role": "system", "content": "You are a concise senior engineer."},
        {"role": "user", "content": "When should I prefer a queue over a stream?"},
    ],
    reasoning_effort="high",
)
print(completion.choices[0].message.content)

Kimi K3.1 Pro Highspeed 在回答前总是会进行推理。通过 reasoning_effort,你可以控制推理的程度:low、high 或 max。如果不设置,模型会使用 max,因此在较简单的任务上,设置较低的值是降低延迟和输出 token 数量最直接的方式。

通过 Responses API 调用 Kimi K3.1 Pro Highspeed

同一个客户端也适用于 Responses API,它在相同的设置中使用 reasoning.effort:

response = client.responses.create(
    model=MODEL_ID,
    input="Summarize the trade-offs between optimistic and pessimistic locking.",
    reasoning={"effort": "low"},
)
print(response.output_text)

通过 Converse API 调用 Kimi K3.1 Pro Highspeed

如果你已经在使用 Amazon Bedrock Converse API,只需更改模型 ID:

import boto3

bedrock = boto3.client("bedrock-runtime", region_name="us-west-2")
response = bedrock.converse(
    modelId="global.moonshotai.kimi-k3.1",
    messages=[{"role": "user", "content": [{"text": "Explain idempotency keys in two sentences."}]}],
)

# The model can return a reasoning block before the answer, so pick the text block
content = response["output"]["message"]["content"]
print(next(block["text"] for block in content if "text" in block))

使用 Flex 层级降低成本

Flex 层级以 Standard 价格的一半提供 Kimi K3.1 Pro Highspeed,代价是响应时间可能更长。它非常适合成本效率优先级高于响应时间的工作负载,例如模型评估、内容摘要以及智能体工作流中的后台任务。由于你可以为每个请求选择层级,同一个应用程序可以混合使用不同层级。例如,同一个应用程序可以对延迟敏感的请求使用 Priority,对日常流量使用 Standard,对成本敏感的工作使用 Flex。你的按需配额在 Standard、Priority 和 Flex 层级之间共享。

要使用 Flex,请将 service_tier 设置为 flex。以下示例复用了前面的 Chat Completions 客户端:

completion = client.chat.completions.create(
    model=MODEL_ID,
    messages=[{"role": "user", "content": "List edge cases to test in a function that parses ISO 8601 dates."}],
    service_tier="flex",
)
print(completion.choices[0].message.content)
print(completion.service_tier)  # The tier that served the request

在 Converse API 上,改为将 serviceTier 设置为 {"type": "flex"}。要查看各层级分别服务了多少流量,请在 Amazon CloudWatch 中使用 ServiceTier 和 ResolvedServiceTier 维度。我们建议先让 Flex 承载流量的一小部分,在对比延迟和成本后再逐步扩大。

通过显式提示缓存优化推理

智能体和编程助手在每一轮都会重复发送相同的大型前缀:系统指令、工具定义、仓库规范和参考文档。Kimi K3.1 Pro Highspeed 会自动缓存重复的前缀,而通过显式提示缓存,你可以标记稳定前缀的结束位置以提高缓存命中率。后续请求会复用该前缀而不是重新处理,从而降低长重复上下文的延迟和输入成本。

适用以下几条规则:

  • 显式缓存适用于 Chat Completions、Responses 和 Invoke API,但不适用于 Converse。
  • prompt_cache_breakpoint 必须至少跟随 256 个稳定内容的 token。
  • 缓存内容至少保留 30 分钟。
  • 缓存写入的计费率高于标准输入。缓存读取以折扣价计费,且不计入每分钟输入 token 配额。

以下示例缓存了一个很长的系统提示,并在用户内容之后添加了第二个断点,这样对同一文档的后续提问就可以复用两个缓存层:

from pathlib import Path

LONG_STATIC_PROMPT = Path("repo_guidelines.md").read_text()  # stable content, at least 256 tokens
QUESTION = "Which of these guidelines apply to database migrations?"

def cached_text(text):
    # Marks the end of a cacheable prefix
    return {"type": "input_text", "text": text, "prompt_cache_breakpoint": {"mode": "explicit"}}

response = client.responses.create(
    model=MODEL_ID,
    extra_body={"prompt_cache_options": {"mode": "explicit"}},
    input=[
        {"type": "message", "role": "system", "content": [cached_text(LONG_STATIC_PROMPT)]},
        {"type": "message", "role": "user", "content": [cached_text(QUESTION)]},
    ],
)
details = response.usage.input_tokens_details
print(f"Cache read: {details.cached_tokens} tokens")  # greater than 0 on a cache hit

更多信息请参阅 Prompt caching for faster model inference。

Kimi K3.1 Pro Highspeed 实战:使用 OpenCode 编程

OpenCode 是一个开源、模型无关的编程智能体,可在你的终端中运行。你可以通过 OpenCode 的 OpenAI 兼容提供商和 Amazon Bedrock API 密钥,将其连接到 Amazon Bedrock Chat Completions API 上的 Kimi K3.1 Pro Highspeed。要创建密钥,请在你已在 baseURL 中设置的 AWS 区域打开 Amazon Bedrock 控制台,然后选择 API keys。短期密钥有效期最长 12 小时,仅在你生成它们的区域内可用,推荐用于生产环境。长期密钥适合探索用途。

将以下内容添加到 ~/.config/opencode/opencode.json 中,并将 baseURL 中的区域替换为你自己的:

{
  "$schema": "https://opencode.ai/config.json",
  "providers": {
    "amazon-bedrock-chat-completions": {
      "name": "Amazon Bedrock (Chat Completions)",
      "package": "@opencode/ai/providers/openai-compatible",
      "settings": {
        "baseURL": "https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1"
      },
      "models": {
        "global.moonshotai.kimi-k3.1": {
          "name": "Kimi K3.1 Pro Highspeed",
          "capabilities": {
            "reasoning": { "supported": true, "effort": ["low", "high", "max"] }
          }
        }
      }
    }
  },
  "model": "amazon-bedrock-chat-completions/global.moonshotai.kimi-k3.1"
}

在项目目录中启动 OpenCode,输入 /connect,选择 Amazon Bedrock (Chat Completions),然后粘贴你的 API 密钥,如图 1 所示。OpenCode 会保存该密钥,因此每个密钥只需连接一次。要在会话期间在 Kimi K3.1 Pro Highspeed 与其他模型之间切换,请输入 /models。

Connecting OpenCode to the Amazon Bedrock (Chat Completions) provider

图 1:将 OpenCode 连接到 Amazon Bedrock(Chat Completions)提供商

配置中的 capabilities 条目列出了该模型支持的推理力度级别,因此 OpenCode 将 low、high 和 max 作为该模型的变体提供,如图 2 所示:

Reasoning effort variants for Kimi K3.1 Pro Highspeed in OpenCode

图 2:OpenCode 中 Kimi K3.1 Pro Highspeed 的推理力度变体

在智能体编码中,输出速度至关重要。为完成单个任务,编码智能体需要连续进行多次模型调用。它会读取文件、规划更改、编辑代码、运行测试并修复失败之处。每次调用必须在下一次调用开始前完成,而其中大部分时间都花在生成推理和代码上。更高的输出 token 速率会缩短每一步的时间,从而使整个“编辑-测试-修复”循环更快完成,你也无需在迭代之间等待太久。

可用性

Kimi K3.1 Pro Highspeed 现已通过 global.moonshotai.kimi-k3.1、us.moonshotai.kimi-k3.1 和 in.moonshotai.kimi-k3.1 跨区域推理配置文件在 Amazon Bedrock 上推出。有关支持的区域和模型详情,请参阅 Kimi K3.1 Pro Highspeed 模型卡和区域可用性。有关定价,请参阅 Amazon Bedrock 定价。

要开始使用,请在 Amazon Bedrock 控制台上试用 Kimi K3.1 Pro Highspeed。要与 Amazon Bedrock 团队讨论您的用例,请与我们联系。


关于作者

来源: AWS Machine Learning Blog · aws.amazon.com