ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

5 分钟用 Amazon Bedrock 搭一个 AI Agent:从零到能干活(TaoToken 统一 Key 接入版)

5 分钟用 Amazon Bedrock 搭一个 AI Agent:从零到能干活(TaoToken 统一 Key 接入版) 1. 从零搭 Agent 的真实卡点在哪Amazon Bedrock 的 Agent 功能本质是把「模型 提示词 工具调用 知识库」四件事打包成一个托管服务。你不需要装 Python 环境、不需要管向量数据库、不需要自己写 Function Call 的编排逻辑控制台点几下就能让一个 Agent 具备「理解意图 → 提取参数 → 调用外部 API → 把结果说成人话」的完整链路。它适合谁适合手上有现成后端接口、想快速验证 Agent 可行性、又不想在基础设施上耗时间的开发者。但真正动手时卡点往往不在 Bedrock 本身而在「密钥散落」。你可能会用 Cline 写代码、用 CC Switch 切换模型通道、用脚本调 InvokeAgent每个工具各配一套 Key改一个地方要同步三处时间全花在找 Key 上。这篇的做法是Bedrock 负责 Agent 的编排与执行TaoToken 统一 Key/API 通道负责把模型调用收敛到一个入口两边各司其职。下面从创建 Agent、配 Action Group、接 Knowledge Base到用 TaoToken 统一接入 Cline / CC Switch再到 InvokeAgent 端到端验证一步步走完。2. TaoToken 前置把密钥收敛到一个入口TaoToken 在这里的角色不是替代 Bedrock而是做「统一 Key 通道」。Bedrock 的 Agent 运行时需要调用基础模型如果你同时在 Cline、CC Switch、自写脚本里各配一份凭证维护成本会随工具数量线性上涨。TaoToken 提供统一的 API 入口和 Key 管理你只需要在 TaoToken 控制台生成一个 Key然后让各个工具都指向同一个 base_url。先做两件事。第一打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册并进入控制台。第二在控制台里创建 API Key地址是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite 。生成的 Key 形如sk-开头的一串字符复制后先存到密码管理器后面 Cline 和 CC Switch 都要用同一个。注意API 基础地址用 https://taotoken.net/api 不要带 UTM 参数否则部分客户端会把查询串当成路径的一部分导致 404。如果你只是想先验证模型通道是否通可以直接用模型对话页面发一条消息地址 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite 。这一步能通说明 Key 和网络都没问题再去配 Cline 就少一层变量。3. 可复制配置settings.json 与 config.toml 骨架Cline 是 VS Code 里的编码 Agent 插件配置走settings.json。CC Switch 是模型通道切换工具配置走config.toml。两者都指向 TaoToken 的统一入口这样你在 Bedrock 控制台调 Agent 时用的模型和本地编码时用的模型走的是同一套 Key 体系。先看 Cline 的settings.json骨架。路径通常在 VS Code 的用户设置里或者项目根目录的.vscode/settings.json{ cline.apiProvider: openai, cline.openAiBaseUrl: https://taotoken.net/api, cline.openAiApiKey: sk-你的TaoTokenKey, cline.openAiModelId: claude-sonnet-4-6, cline.enableStreaming: true, cline.requestTimeout: 120000 }这里apiProvider选openai是因为 TaoToken 的接口兼容 OpenAI 格式Cline 用这个协议就能对接。openAiModelId填你要用的模型标识具体可用的模型名在 TaoToken 控制台的模型列表里查。requestTimeout给到 120 秒Agent 类任务链路长超时太短容易断在半路。再看 CC Switch 的config.tomldefault_provider taotoken [providers.taotoken] base_url https://taotoken.net/api api_key sk-你的TaoTokenKey model claude-sonnet-4-6 max_tokens 8192 temperature 0.3 [providers.taotoken.headers] X-Client cc-switchtemperature设 0.3 是因为 Agent 场景要的是稳定执行不是创意发散。max_tokens给 8192 留足工具调用参数的空间。两个配置文件里的 Key 是同一个改 Key 时只改 TaoToken 控制台一处本地两个工具重新拉取即可。提示不要把 Key 硬编码进会提交到 Git 的文件。用环境变量${TAOTOKEN_API_KEY}引用或者把配置文件加进.gitignore。4. 验证请求InvokeAgent 端到端跑通配置写完先验证 TaoToken 通道本身能通再验证 Bedrock Agent 能干活。两步分开测出问题好定位。第一步用 curl 测 TaoToken 的模型通道curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoTokenKey \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-6, messages: [{role: user, content: 回复 OK 两个字母}], max_tokens: 16 }返回里如果有choices[0].message.content且内容是OK说明通道正常。这一步不通后面 Bedrock 的 Agent 调用也会受影响因为 Agent 运行时同样依赖模型通道。第二步用 boto3 调 Bedrock 的 InvokeAgent。前提是你在 Bedrock 控制台已经创建好 Agent、配好 Action Group、点过 Prepare并且拿到了agentId和agentAliasIdimport boto3 client boto3.client(bedrock-agent-runtime, region_nameus-east-1) response client.invoke_agent( agentId你的AgentID, agentAliasIdTSTALIASID, sessionIduser-session-001, inputText帮我查一下订单 ORD-20260310-001 的状态, enableTraceTrue ) for event in response[completion]: if chunk in event: print(event[chunk][bytes].decode(utf-8), end) if trace in event: trace event[trace][trace] if orchestrationTrace in trace: print(\n[Trace], trace[orchestrationTrace])enableTraceTrue是关键它会把 Agent 的推理过程吐出来。你会看到类似这样的输出先识别意图是「查询订单状态」再提取参数order_id ORD-20260310-001然后触发 Action Group 的GetOrderStatus函数因为执行器选的是 Return Control所以 Agent 会把参数返回给你的应用等你的后端返回结果后再继续对话。实测下来从发请求到拿到完整响应链路清晰可查不用猜模型在想什么。如果你在 Cline 里配好了 TaoToken也可以直接在 Cline 的对话框里让它「调用 Bedrock Agent 查询订单」Cline 会走 TaoToken 通道把请求转发出去效果和脚本一致。5. 本篇常见错排查报错一ValidationException: The provided model identifier is invalid。这是 Bedrock 的经典坑。直接用anthropic.claude-sonnet-4-6这种裸模型 ID 调用会失败需要用 Inference Profile ID形如us.anthropic.claude-sonnet-4-6。控制台创建 Agent 时它会自动处理但 API/CLI 创建时必须手动指定 Profile ID。排查方法在 Bedrock 控制台的 Model access 页面确认模型已开通再在 Inference profiles 页面查对应的 Profile ID。报错二AccessDeniedException: User is not authorized to perform bedrock:InvokeAgent。Agent 必须绑定 IAM Service RoleTrust Policy 要允许bedrock.amazonaws.com做sts:AssumeRole并附加bedrock:InvokeModel权限。控制台创建时选「Create and use a new service role」会自动搞定CLI 创建需要手动建 Role 并绑定agentResourceRoleArn。排查方法在 Agent 详情页看 Resource role 那一栏是否为空。报错三改了 Instructions 或 Action Group 后不生效。Bedrock Agent 每次修改配置后必须重新 Prepare 才生效。控制台点顶部 Prepare 按钮状态从NOT_PREPARED变成PREPARED才算完成。API 调用PrepareAgent接口同理。这个坑很隐蔽因为不报错只是行为还是旧的。报错四TaoToken 返回 401。检查 Key 是否复制完整、有没有多余空格以及base_url是否写成了https://taotoken.net/api而不是带 UTM 的长链接。如果 Cline 和 CC Switch 同时报 401大概率是 Key 本身的问题去控制台重新生成一个。报错五InvokeAgent 流式响应卡住不返回。检查sessionId是否每次请求都变了。多轮对话要用同一个sessionId但不同用户之间要隔离。如果sessionId复用错乱Agent 会把上下文串起来导致响应异常。6. 后续怎么接更顺Agent 跑通之后下一步通常是把它接进日常编码流。如果你主要在 VS Code 里写代码Cline 配好 TaoToken 通道后可以让它直接调用 Bedrock Agent 做订单查询、工单创建这类操作编码和 Agent 执行在同一个窗口完成。如果你需要频繁切换模型通道做对比测试CC Switch 的config.toml里加多个 provider 段用default_provider一行切换不用改代码。长期跑编码和 Agent 任务的话Coding Plan 比按量计费更划算地址 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite 里面有各语言 SDK 的完整示例。控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite 可以看用量和余额。Claude Code 相关的接入说明在 https://taotoken.net/claudecode?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite 。最后说一个实际经验Bedrock Agent 的 Return Control 模式特别适合已有后端服务的团队因为不用写 LambdaAgent 只负责收集参数执行逻辑留在你自己的服务里权限和审计都好控制。但如果你要的是完全托管的执行那就得配 Lambda 作为 Action Group executor多一层部署但少一层应用侧代码。两种模式按团队情况选没有绝对优劣。
返回列表