
人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手【免费下载链接】airi 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器目标是接近 Neuro-sama 的高度支持实时语音聊天、Minecraft 和 Factorio 游玩支持 Web / macOS / Windows。项目地址https://gitcode.com/moeru-ai/airi点击查看免费下载本文基于 AIRI 仓库中的官方手册 Amazon Bedrock 配置文档讲解如何在 AIRI 中使用 AWS 凭据与区域配置接入 Amazon Bedrock 聊天模型并结合 provider 实现源码 深入剖析消息转换、非流式 Converse 调用的 SSE 重放策略、模型列表拉取逻辑与配置校验链路。读完本文你不仅能完成凭据准备、配置填写与 Ping 验证的完整接入流程还能理解 AIRI 底层是如何把一个 Bearer Token 认证的 AWS 端点适配进统一的 xsai 聊天管道。为什么选择 Amazon BedrockAmazon Bedrock 使用 AWS 凭据和区域来访问已获授权的基础模型。如果你已经在 AWS 中管理模型访问权限、区域和计费Bedrock 可沿用这一套账户管理方式无需为 AIRI 单独申请第三方的 API 平台账号。在 AIRI 的 provider 体系中amazon-bedrock被归类为云端付费服务商。可以在 provider 属性表 中看到amazon-bedrock: paidCloud的登记这意味着它属于需要外部网络访问与账户授权的云端推理服务与本地推理类 provider 的管理方式不同。第一步准备 AWS 凭据打开并登录 AWS Management ConsoleBedrock 控制台创建具备 Bedrock 权限的访问凭据。在控制台的 Bedrock → API Keys 中生成 API Key并在 Bedrock 已启用的区域中申请目标模型的访问权限。AWS 凭据安全不要公开 AWS 访问密钥。请使用权限最小化的凭据并在不再使用时撤销。AIRI 界面中对该字段的中文说明见 zh-Hans 文案文件也明确提示Bedrock API 密钥需在「AWS 控制台 → Bedrock → API Keys」中生成AWS 区域需填写 Bedrock 已激活的区域例如us-east-1、us-west-2。第二步在 AIRI 中配置打开设置 → 服务商 → 聊天 → Amazon Bedrock填写 AWSAPI Key并选择区域默认区域为us-east-1。确认该 AWS 账户已在对应区域获得目标模型的访问权限。只有在使用自定义 Bedrock Endpoint 时才填写自定义地址。配置项与校验规则对应的聊天配置页由 amazon-bedrock.vue 实现页面上暴露两个字段apiKey必填密码型输入框与region文本输入框占位符为us-east-1。这两项的配置约束在 provider 定义的 zod schema 中schema 定义配置项类型必填校验规则默认值apiKeystring是非空.min(1)界面以密码框展示无regionstring否正则^[a-z]{2,3}-[a-z]-\d$如us-east-1、ap-southeast-1us-east-1从源码结构看region的取值直接参与拼接请求域名所有运行时请求发往https://bedrock-runtime.{region}.amazonaws.com元数据请求发往https://bedrock.{region}.amazonaws.com。因此区域写错不会导致格式校验失败而是表现为请求打到错误的区域端点——这也是排查时需要重点关注凭据、区域、模型权限三者是否属于同一账户同一区域的原因。第三步验证配置Ping APIPing API点击此按钮测试凭据、区域和网络是否正确。选择模型测试成功后选择账户已授权的模型再到设置 → 意识启用。AIRI 中这一步由 provider 注册时的validators.validateProvider完成校验器实现其行为可以从源码中精确读出请求GET https://bedrock.{region}.amazonaws.com/foundation-models?byInferenceTypeON_DEMANDbyOutputModalityTEXTbyProviderAmazonmaxResults1请求头携带authorization: Bearer {apiKey}返回401或403时报Invalid Amazon Bedrock API key or insufficient permissions.网络层失败如区域端点不可达时报Failed to connect to Amazon Bedrock. Check your region and network.。校验是否被触发由validationRequiredWhen决定只有apiKey去除空白后非空时才要求校验相关逻辑这在 测试用例 中有明确覆盖——有 key 返回true空 key 或仅有 region 时返回false。配置页的交互同样值得注意验证失败时页面会展示红色 Alert 与错误信息并额外提供一个继续按钮forceValid允许在确认误判时强行通过验证成功后则出现绿色 Alert点击即可跳转到设置 → 意识进行模型选择见 配置页模板 与goToModelSelection。底层原理AIRI 如何调用 Bedrock Converse APIAIRI 的 Bedrock provider 没有直接调用 AWS SDK而是通过一个自定义fetch拦截器把 xsai 聊天请求重写成 Bedrock Converse API 请求。核心实现在 createBedrockConverseProvider整体链路如下。请求改写从 OpenAI 风格消息到 Converse 消息分离 system 消息从messages中过滤出role system的消息放入converseBody.system数组其余消息进入messages数组。内容块转换toConverseContent将字符串内容包成[{ text }]将内容数组中type text的条目映射为{ text }块转换逻辑。合并连续同角色消息Converse API 要求 user/assistant 角色交替出现mergeConsecutiveRoles会把相邻的同类消息内容合并到一条中合并逻辑。例如连续两条 user 消息会被拼成一条 user 消息的多个内容块。推理参数映射max_tokens映射为inferenceConfig.maxTokens缺省 4096temperature映射为temperaturetop_p映射为topP未设置的参数不会出现在请求体中参数构建。非流式调用 SSE 重放一个关键设计点值得展开provider 显式使用/converse非流式端点而不是/converse-stream。源码注释给出了原因——Bearer Token 认证不支持/converse-stream所需的二进制事件流协议端点注释。请求发往POST https://bedrock-runtime.{region}.amazonaws.com/model/{modelId}/converse拿到完整响应后拦截器把output.message.content中所有text块拼接为fullText再将结果封装成一个text/event-stream响应按 OpenAI chat completion chunk 格式依次 enqueue先 role 块、再 content 块、最后携带finish_reason的收尾块和data: [DONE]。stopReason为end_turn时映射为stopSSE 重放实现。从源码结构看这意味着上层 xsai 管道始终看到一个标准的流式响应但对 Bedrock 而言实际是整包返回——Bedrock 通道的体验不会出现逐 token 流式输出这是 Bearer 认证形态下的实现取舍。provider 组装与任务能力createProvider将上述聊天 provider 与一个createModelProvider使用https://bedrock-runtime.{region}.amazonaws.com/v1/作为 baseURL 占位合并后返回组装逻辑。该 provider 在注册表中声明id: amazon-bedrock、order: 18、tasks: [chat]即面向聊天任务。模型列表是怎么来的点击选择模型时看到的列表来自extraMethods.listModels模型列表实现其拉取策略分为五步并行拉取基础模型对Amazon、Anthropic、Moonshot、Minimax、DeepSeek五个供应商分别请求GET {base}/foundation-models?byInferenceTypeON_DEMANDbyOutputModalityTEXTbyProvider{供应商}只保留按需推理ON_DEMAND且文本输出的模型拉取系统推理配置GET {base}/inference-profiles?typeSYSTEM_DEFINEDmaxResults1000获取global./us.前缀的跨区域推理 profile建立映射将 profile id 拆为前缀global/us与基础模型 id如amazon.nova-pro-v1:0形成查找表择优展示对每个基础模型优先选global.前缀的 profile id其次us.前缀最后回退为原始模型 id补充 profile 独有模型某些较新模型只存在于 inference profiles 中而不在 foundation-models 列表里代码会按amazon.、anthropic.、moonshot.、minimax.、deepseek.前缀过滤后追加进来且同一模型在global与usprofile 并存时只保留global。如果以上请求全部失败网络不通、凭据无效等listModels会返回一份静态兜底列表fallbackModels包括 Amazon Nova Pro / Lite / Micro、Claude Sonnet 3.5 v2、Claude Sonnet 3.7兜底列表。测试用例 专门用 mock 的 401 响应验证了这条兜底路径列表非空且包含 nova 模型。需要注意的是兜底列表只是保证界面可用实际能否调用某个模型仍取决于该 AWS 账户在所选区域的真实授权情况。排查验证失败时检查 AWS 凭据、所选区域与模型访问权限是否属于同一账户。模型无法选择时先在 Bedrock 控制台为该区域申请并启用对应模型。结合源码可以把排查清单再细化一层现象对应错误/原因检查点凭据无效Invalid Amazon Bedrock API key or insufficient permissions.HTTP 401/403API Key 是否过期、是否具备 Bedrock 读取权限无法连接Failed to connect to Amazon Bedrock. Check your region and network.区域端点是否可达、区域格式是否为xx-xxx-N模型列表为空或不全foundation-models / inference-profiles 请求失败时回退静态列表该区域是否启用了 ON_DEMAND 文本模型对话报模型错误converse请求 4xx/5xx 原样透传模型 id 是否写全含前缀与版本号如us.amazon.nova-lite-v1:0区域是否匹配另外需要说明AIRI 同时提供了 Bedrock 的视觉配置页provider id 为vision-amazon-bedrock见 vision 配置页其凭据与区域填写方式与聊天页一致但上文讨论的 provider 实现面向tasks: [chat]本文聚焦聊天模型接入。相关路径索引配置手册Amazon Bedrockprovider 实现amazon-bedrock/index.ts单元测试amazon-bedrock/index.test.ts聊天配置页chat/amazon-bedrock.vue视觉配置页vision/amazon-bedrock.vue中文界面文案zh-Hans/settings.yamlprovider 属性登记attributes.ts赞分享人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手【免费下载链接】airi 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器目标是接近 Neuro-sama 的高度支持实时语音聊天、Minecraft 和 Factorio 游玩支持 Web / macOS / Windows。项目地址https://gitcode.com/moeru-ai/airi点击查看免费下载相关推荐在 OpenClawClawdbot中使用 Amazon Bedrock 模型Converse API 接入、AWS 凭据配置与自动模型发现实战指南在 OpenClawClawdbot中使用 Amazon Bedrock 模型Converse API 接入、AWS 凭据配置与自动模型发现实战指南 Am人工智能AI Agent即时通讯后端本地部署语音Path of Building 离线构建规划指南精算天赋树与技能伤害Path of Building 离线构建规划指南精算天赋树与技能伤害 Path of BuildingPoB是一款《流放之路》的离线构建规划工具适合想桌面应用AIRI 接入 Amazon BedrockAPI Key 配置、Region 校验与 Converse 适配原理AIRI 接入 Amazon BedrockAPI Key 配置、Region 校验与 Converse 适配原理 Amazon Bedrock 是 AWSAI 应用人工智能大模型数字人AI Agent语音前端后端桌面应用移动开发即时通讯3D渲染上一篇Path of Building PoE2如何用数据驱动构建突破流放之路2的角色瓶颈下一篇ChanlunX通达信缠论自动化分析插件深度解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考