跳到正文
AWS Machine Learning Blog· Naomi Teng·· 4 小时前AI 评分28

Amazon Bedrock 为 Kimi K3 推出印度境内推理

Introducing India-based inference for Kimi K3 on Amazon Bedrock

AI 导读

Amazon Bedrock 现支持 Kimi K3 在印度境内推理,调用 in.moonshotai.kimi-k3 推理配置文件即可让请求在孟买和海得拉巴 Region 处理,满足严格数据驻留要求。

正文 · AI 翻译

Kimi K3 是一个多模态、开放权重的基础模型(FM),提供商 Moonshot AI 报告称其在发布时达到了前沿水平的编码和通用智能体能力。

除了全球和美国境内的推理之外,Amazon Bedrock 现在为 Kimi K3 支持印度境内推理:为具有严格数据驻留要求的本地工作负载解除限制。像 Ultrahuman 这样的客户已经在生产环境中看到了好处:

“Jade 是 Ultrahuman 应用中的 AI 健康与保健助手,它使用每个人自己的 Ring 和血糖数据,以通俗语言回答问题,每天处理超过 14,000 次对话。Amazon Bedrock 上的 Kimi K3 让我们通过已经在使用的 API 添加了一个领先的开放权重模型,健康数据保留在 AWS 内部,并以孟买作为回退区域。借助提示缓存,我们将 LLM 成本降低了 80%,并使多轮聊天速度提高了 85%。”

— Aditya Patawari,Ultrahuman 工程副总裁

在本文中,我们解释了可用的不同全球和地理推理选项,并分享了一个示例用例的代码:对印度语言文档进行光学字符识别(OCR)和理解,并以混合语 Hinglish 进行后续问答。

选择推理运行位置

Amazon Bedrock 上的 Kimi K3 通过跨区域推理配置文件提供。你可以从众多 AWS 区域中的任意一个(“源”)调用该模型。然后,Amazon Bedrock 会在多个可能的“目标”区域之一安全地处理你的请求。

跨区域推理由 AWS 完全托管:数据在区域之间传输时加密,并保留在 AWS 网络上,绝不会经过公共互联网,也不需要你设置任何多区域虚拟私有云(VPC)基础设施。

你调用的推理配置文件 ID 控制哪些目标区域符合条件:

配置文件 模型 ID 何时选择它
全球 global.moonshotai.kimi-k3 推荐用于大多数用例:成本最低且可用范围最广
印度地理 in.moonshotai.kimi-k3 推理处理必须留在孟买和海得拉巴区域

请参阅 Amazon Bedrock Kimi K3 模型卡,了解有关可用推理配置文件、可从哪些 AWS 区域调用以及可使用哪些目标区域进行推理的最新信息。

示例演练:印度语言文档理解

让我们考虑一个示例用例:读取扫描的印地语文档,提取结构化数据,并以印地语和英语混合(Hinglish)回答后续问题。

这种需求在印度金融服务和公共部门工作流中很常见,其中了解你的客户(KYC)表格、水电费账单和类似文档通常必须数字化。Amazon Bedrock 上的 Kimi K3 可以直接读取和推理图像,包括包含多语言文本的图像。它提供了一种潜在解决方案,无需单独的 OCR 或翻译服务。

先决条件

此示例的完整源代码可在GitHub 上获取。

要跟随操作,你需要:

  1. 一个 AWS 账户。
  2. 已安装 Python 3.11 或更高版本,并具有互联网访问权限以安装所需的 PyPI 包。
  3. 已安装 AWS 命令行界面(AWS CLI),并配置了具有足够 AWS Identity and Access Management(IAM)权限的凭证,以通过印度推理配置文件调用 Kimi K3 模型。

例如,要通过 ap-south-1 孟买区域使用 Kimi K3 并采用印度地理推理,以下 IAM 策略授予了足够的访问权限。请将 {ACCOUNT_ID} 占位符替换为您的 AWS 账户 ID:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BedrockCallWithBearerToken",
      "Effect": "Allow",
      "Action": ["bedrock:CallWithBearerToken"],
      "Resource": ["*"]
    },
    {
      "Sid": "BedrockKimiK3India",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": [
        "arn:aws:bedrock:ap-south-1::foundation-model/moonshotai.kimi-k3",
        "arn:aws:bedrock:ap-south-2::foundation-model/moonshotai.kimi-k3",
        "arn:aws:bedrock:ap-south-1:{ACCOUNT_ID}:inference-profile/in.moonshotai.kimi-k3",
        "arn:aws:bedrock:ap-south-1:{ACCOUNT_ID}:project/default"
      ]
    }
  ]
}

有关权限的更多信息,请参阅 Amazon Bedrock 用户指南中的运行模型推理的先决条件。如果您的组织限制了 AWS 区域,请让管理员查看地理跨区域推理 IAM 和 SCP 指南。保持源区域被允许,并允许路由到两个印度目的地,在适当情况下使用配置文件范围的例外。Responses API 指南还介绍了所需的默认项目访问权限。

推理 API 入门

如模型卡中所述,Amazon Bedrock 支持多种 API 来调用 Kimi K3,所有这些 API 都位于 Bedrock Runtime 端点下:

API 请求和响应格式
Chat Completions OpenAI 兼容的消息输入和助手消息输出。
Responses OpenAI 兼容的输入和结构化输出项。
Converse 跨受支持模型的标准消息、内容块和推理参数。
InvokeModel 特定于模型的 JSON 请求和响应正文。

由于此模型推荐使用 OpenAI 兼容 API,因此我们在本示例中使用这些 API,并通过 openai Python 库进行连接。

Amazon Bedrock 支持为需要 API 密钥的集成生成 API 密钥。但是,AWS 建议尽可能使用短期凭证。AWS 令牌生成器 Python 库从标准 AWS CLI 凭证链派生短期类 API 密钥令牌。

如果您为 AWS CLI 使用命名配置文件,可能需要先设置 AWS_PROFILE 环境变量。设置 CLI 凭证后,您可以使用以下代码调用模型:

from aws_bedrock_token_generator import provide_token
from openai import OpenAI

region = "ap-south-1"
model_id = "in.moonshotai.kimi-k3"

client = OpenAI(
    base_url=f"https://bedrock-runtime.{region}.amazonaws.com/openai/v1",
    api_key=provide_token(region=region),
)

response = client.chat.completions.create(
    model=model_id,
    messages=[{
        "role": "user",
        "content": "Classify this ticket as billing, technical, or account: I was charged twice."
    }],
    max_completion_tokens=2048,
)

print(response.choices[0].message.content)

此处,region(ap-south-1 孟买)指定了请求发往的源区域。推理配置文件 in.moonshotai.kimi-k3 确保推理仅在印度区域内处理。

Chat Completions 和 Responses API 均支持流式传输、工具调用和结构化输出等广泛功能。有关更多示例,请参阅 OpenAI Python API 参考。

分析图像

Amazon Bedrock 上的 Kimi K3 支持图像以及 PDF 和一系列其他文件类型。您可以通过 base64 编码直接将输入文件发送给模型。对于 OCR 或其他小细节很重要的用例,请考虑将图像 detail 参数设置为 high。这会提高准确性,但代价是每张图像消耗更多输入令牌。

在某些情况下,我们发现当图像在文本输入之前提供时,Kimi K3 的输出质量更高。我们建议尝试不同的请求顺序。请考虑以下示例代码:

from base64 import b64encode

image_path = "sample_data/electricity_bill_hi.png"
with open(image_path, "rb") as f:
    image_base64 = b64encode(f.read()).decode("ascii")

response = client.chat.completions.create(
    model=model_id,
    messages=[
        {
            "role": "user",
            "content": [
                # The model card recommends placing images before text:
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/png;base64,{image_base64}",
                        "detail": "high"
                    }
                },
                {"type": "text", "text": QUESTION_PROMPT},
            ]
        },
    ],
    max_completion_tokens=16384,
)

print(response.choices[0].message.content)

为了演示,我们生成了一张印地语合成电费账单的图像。

Synthetic Hindi electricity bill used as a sample document for OCR

图 1:示例中的合成印地语电费账单(所有示例文档均为虚构)

给定此图像输入,模型可以直接从文档中提取数据来回答问题,无需单独的数字化步骤。例如:

问:Bill kitne ka hai aur last date kab hai? Late hua toh kitna dena padega?

答:Bill ka total ₹2,217.20 hai, aur last date 20/10/2026 hai. Late hua toh ₹2,261.54 dena padega.

构建结构化提取管道

除了通用问答之外,你还可以使用静态提示词创建结构化文档处理工作流,从大量文档中提取一组一致的目标字段。

为了对输出结构施加严格约束(而非尽力而为的提示词引导式生成),Kimi K3 在 Amazon Bedrock 上支持结构化输出,既可通过函数调用实现,也可通过提供 JSON Schema 输出格式实现。这些选项在 OpenAI 文档(针对 OpenAI 兼容 API)和 Amazon Bedrock 用户指南(针对原生 Converse/InvokeModel API)中有更详细的说明。

在完整的示例代码 仓库中,我们提供了一个端到端流水线,它可以:

  1. 以文档的原始文字系统转写文档(OCR)。
  2. 使用可配置的 schema 将关键字段提取为 JSON,其中日期规范化为 ISO 8601(YYYY-MM-DD),天城文数字(例如 २८८)转换为西方数字(288),姓名音译为英文。
  3. 撰写一段简短的英文摘要。
  4. 以 Hinglish(用拉丁字母书写的印地语,混有英语)就同一文档回答多轮追问。

对于上一张图中的同一份合成印地语电费账单,该流水线会返回如下结构化字段(节选):

{
  "consumer_name": "श्रीमती सुनीता देवी शर्मा",
  "consumer_name_english": "Smt. Sunita Devi Sharma",
  "consumer_number": "410277893561",
  "billing_period": "2026-09-01 to 2026-09-30",
  "due_date": "2026-10-20",
  "units_consumed_kwh": 288,
  "amount_due_inr": 2217.20,
  "amount_after_due_date_inr": 2261.54
}

我们还加入了一个 KYC 表单示例以及一个开放式的无 schema模式,在该模式下,模型会针对任何其他文档类型自行选择最有用的字段。所有提供的示例文档均为合成文档,其中的姓名和地址为虚构,身份号码已做遮蔽处理。

从 GitHub 下载示例代码以进一步探索,并在你自己的图像上试用。

与任何自动化提取一样,在将输出用于重要决策之前,你应验证其对你的具体用例是否可靠。对于关键工作流,可考虑加入后验证逻辑或人工审核步骤。

优化性价比、服务层级与缓存

针对示例文档调整你的系统提示词和 schema,以实现可靠的提取。Amazon Bedrock 高级提示词优化(AdvPO)提供了一种全托管选项,可基于参考示例优化提示词模板。

Amazon Bedrock 服务层级让你可以按请求控制性价比。对于延迟不太敏感的场景,你可以选择 flex 层级,享受默认标准定价 50% 的折扣。对于延迟关键型场景,你可以选择“priority”,以更高价格请求更高的队列优先级。详情请参阅定价页面。

输入提示词中包含较长且很少变化内容的用例,也可以受益于 Amazon Bedrock 上的提示词缓存。请确保静态内容(系统提示词、工具描述等)出现在输入的开头,即位于当前图像和问题等动态部分之前。

Amazon Bedrock 上的 Kimi K3 既支持缓存命中的折扣定价,也支持显式缓存模式。在默认的隐式缓存模式下,服务会尝试自动缓存并复用请求之间重复的提示词前缀,无需用户操作。不过,你可以通过选择显式模式并在输入中指定可缓存内容的“断点”来提升性能,从而提高缓存命中率、响应速度和成本节省。

以下示例展示了使用 Responses API 进行显式提示缓存的用法。更多信息,请参阅 Amazon Bedrock 用户指南中的提示缓存:

for call in (1, 2):
    response = client.responses.create(
        model=model_id, max_output_tokens=2048, store=False,
        input=[
            {"type": "message", "role": "system", "content": [{
                "type": "input_text", "text": static_prefix,
                "prompt_cache_breakpoint": {"mode": "explicit"},
            }]},
            {"type": "message", "role": "user", "content": [{
                "type": "input_text", "text": dynamic_prompt,
            }]},
        ],
        extra_body={"prompt_cache_options": {"mode": "explicit"}},
    )
    print(call, response.usage.input_tokens_details.cached_tokens)

监控使用情况

Amazon CloudWatch 指标会在 AWS/Bedrock 命名空间下为 Kimi K3 自动生成,可让您了解调用速率、令牌数量、缓存使用情况、延迟、错误和限流情况。

模型调用日志记录为可选启用项,可选择包含提示和输出。启用前请查看访问权限、保留期限和存储位置设置。

无论跨区域推理中可能由哪个目标区域处理请求,日志和指标都存储在您提交请求的源区域。您可以选择启用 AWS CloudTrail 数据事件日志记录,以在 CloudTrail 中记录模型调用,其中会将请求的目标区域记录为 additionalEventData.inferenceRegion 字段。

清理

Kimi K3 按令牌计费,因此这些代码示例不会预置任何需要清理的持久性 AWS 资源。如果您为进行探索而创建了新的 IAM 角色或用户,或为现有用户/角色添加了额外权限,请记得在完成后将其删除。

结论与后续步骤

在本文中,我们探讨了 Amazon Bedrock 上的 Kimi K3 如何提供按需智能,能够理解混合的印度语言和英语。它现在通过 in.moonshotai.kimi-k3 推理配置文件支持在印度(AWS 孟买和海得拉巴区域)进行完全境内数据处理。

立即在 Amazon Bedrock 控制台中或通过推理 API 试用。查看模型卡了解更多信息,并访问 AWS re:Post 查找答案或向社区咨询有关 Amazon Bedrock 的问题。


关于作者

Naomi Teng

Naomi Teng

Naomi Teng 是 AWS 的高级 AI 市场推广专家,常驻悉尼,工作范围覆盖亚太地区和日本。她热衷于帮助客户利用 AI 实现业务转型,包括 Amazon Bedrock 上的开放权重模型,并将知识产权、隐私和 AI 政策方面的法律背景带入负责任 AI 工作。Naomi 联合创办了 AWS She Builds 导师计划,并担任 Amazon 女性 AI/ML 董事会成员。

Alex Thewsey

Alex Thewsey

Alex 是 AWS 的 AI 专家解决方案架构师,常驻新加坡。他专注于研究开源技术和开放权重模型如何帮助世界各地的客户构建创新的 AI 解决方案并应对 AI 治理挑战。

Rohan Verma

Rohan Verma

Rohan 是 AWS 的 AI 专家解决方案架构师,从事生成式 AI 工作。他的兴趣涵盖多智能体架构以及使自主 AI 系统在大规模下可靠运行的设计模式。他专注于模型部署、成本优化,并将新兴 AI 研究转化为实用的现实系统。业余时间,Rohan 喜欢阅读研究论文并将其转化为可复用的工件。

Deepinder Tumrate

Deepinder Tumrate

Deepinder Tumrate 是 AWS 的 AI 专家解决方案架构师,常驻印度,与客户合作在 AWS AI/ML 产品组合中构建和扩展生成式 AI 解决方案。他热衷于帮助印度各地的客户采用 AI 解决现实业务挑战并加速创新。加入 AWS 之前,Deepinder 曾在 Amazon 的 Alexa+ 团队担任解决方案架构师。

Melanie Li

Melanie Li

Melanie Li 博士是 AWS 驻澳大利亚悉尼的高级生成式 AI 专家解决方案架构师,她的工作重点是帮助客户使用最先进的 AI/ML 工具构建解决方案。她积极参与了 APJ 地区的多项生成式 AI 计划,充分利用 LLM 的能力。在加入 AWS 之前,Li 博士曾在金融和零售行业担任数据科学相关职位。

Saurabh Trikande

Saurabh Trikande

Saurabh 是 Amazon Bedrock 和 Amazon SageMaker Inference 的高级产品经理。他热衷于与客户和合作伙伴合作,并以推动 AI 民主化为目标。他专注于部署复杂 AI 应用、多租户模型推理、成本优化以及让生成式 AI 模型的部署更易获取等核心挑战。业余时间,Saurabh 喜欢徒步、了解创新技术、关注 TechCrunch,并与家人共度时光。

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