戰(zhàn)指南)
人工智能AI AgentAgent 框架后端多智能體RAG工具調(diào)用Agent 記憶【免費(fèi)下載鏈接】voltagentAI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework項(xiàng)目地址https://gitcode.com/gh_mirrors/vo/voltagent點(diǎn)擊查看免費(fèi)下載本指南以 VoltAgent 官方示例 examples/with-amazon-bedrock 為核心完整講解如何在 VoltAgent TypeScript Agent 框架中接入 Amazon Bedrock 服務(wù)從項(xiàng)目腳手架搭建、AWS 憑證鏈配置、模型訪問(wèn)權(quán)限開(kāi)通到 Agent 代碼編寫(xiě)、工具Tools掛載、持久化內(nèi)存與 REST 服務(wù)器啟動(dòng)。讀完本文你將掌握通過(guò)amazon-bedrock/model模型路由字符串切換 Claude、Llama、Mistral、Titan 等 Bedrock 模型的具體方法并理解 VoltAgent 底層如何自動(dòng)解析 AWS 憑證。一、示例解決什么問(wèn)題VoltAgent 是一個(gè)開(kāi)源的 TypeScript AI Agent 框架見(jiàn)倉(cāng)庫(kù)根目錄 README.md它通過(guò)模塊化組件讓開(kāi)發(fā)者快速構(gòu)建、定制和擴(kuò)展 AI Agent支持多種 LLM 提供方切換而無(wú)需綁定特定廠商。本示例with-amazon-bedrock則展示了如何將 Agent 的模型后端對(duì)接 AWS Amazon Bedrock——一個(gè)通過(guò)單一 API 提供多家模型廠商Anthropic Claude、Meta Llama、Mistral、Amazon Titan 等的托管推理服務(wù)。該示例同時(shí)演示了 VoltAgent 的幾個(gè)關(guān)鍵能力Amazon Bedrock 集成通過(guò)amazon-bedrock/前綴訪問(wèn) Bedrock 上的 Claude、Llama、Mistral、Titan 模型AWS 憑證鏈自動(dòng)識(shí)別環(huán)境變量、本地 Profile、IAM Role 等憑證來(lái)源模型路由Model Router以amazon-bedrock/model字符串直接指定模型自定義工具Custom Tools內(nèi)置一個(gè)天氣查詢(xún)工具示例演示函數(shù)調(diào)用function calling服務(wù)器模式通過(guò) Hono 服務(wù)器把 Agent 暴露為端口 3141 上的 REST API。注README 中描述的服務(wù)端口為 4000而當(dāng)前倉(cāng)庫(kù) src/index.ts 實(shí)際使用honoServer({ port: 3141 })請(qǐng)以倉(cāng)庫(kù)源碼為準(zhǔn)。二、環(huán)境準(zhǔn)備與項(xiàng)目安裝2.1 前置條件運(yùn)行該示例需要滿(mǎn)足Node.js v20 或更高版本npm / yarn / pnpm任意包管理器一個(gè)可訪問(wèn) Amazon Bedrock 的 AWS 賬號(hào)已配置好AWS 憑證憑證配置方式見(jiàn)下文。2.2 創(chuàng)建項(xiàng)目VoltAgent 提供了create-voltagent-app腳手架可以直接拉取本示例npm create voltagent-applatest -- --example with-amazon-bedrock然后進(jìn)入項(xiàng)目目錄cd with-amazon-bedrock腳手架生成的目錄結(jié)構(gòu)與倉(cāng)庫(kù)中的示例保持一致見(jiàn) examples/with-amazon-bedrock. ├── src/ │ └── index.ts # 主應(yīng)用Bedrock Agent 定義與啟動(dòng) ├── .env.example # AWS 配置模板README 中約定的文件 ├── .voltagent/ # 自動(dòng)生成的 Agent 內(nèi)存目錄 ├── package.json ├── tsconfig.json └── README.md其中.voltagent/目錄由框架自動(dòng)生成用于存放 Agent 的持久化內(nèi)存數(shù)據(jù)庫(kù)文件本示例中為file:./.voltagent/memory.db。2.3 安裝與運(yùn)行項(xiàng)目依賴(lài)通過(guò) package.json 聲明核心依賴(lài)包括voltagent/coreAgent 核心框架本示例使用^2.9.2voltagent/libsqlLibSQL 內(nèi)存適配器voltagent/loggerPino 日志封裝voltagent/server-honoHono REST 服務(wù)器aiAI SDKv6Bedrock 提供方適配器基于它實(shí)現(xiàn)zod工具參數(shù) schema 校驗(yàn)。安裝依賴(lài)后即可啟動(dòng)開(kāi)發(fā)服務(wù)器npm install npm run dev # 或 yarn dev # 或 pnpm devdev腳本tsx watch --env-file.env ./src會(huì)以監(jiān)聽(tīng)模式運(yùn)行src/index.ts并自動(dòng)從.env文件加載環(huán)境變量。生產(chǎn)環(huán)境可先npm run buildtsc編譯到dist/再npm start。三、AWS 憑證配置從環(huán)境變量到憑證鏈3.1 配置 .env 文件復(fù)制配置模板并編輯cp .env.example .env.env內(nèi)容如下AWS_REGIONus-east-1 # Option 1: AWS Access Keys AWS_ACCESS_KEY_IDyour-access-key-id AWS_SECRET_ACCESS_KEYyour-secret-access-key # Option 2: AWS Profile (recommended) AWS_PROFILEyour-profile-name有兩種憑證方式可選Option 1訪問(wèn)密鑰直接在.env中填寫(xiě)AWS_ACCESS_KEY_ID與AWS_SECRET_ACCESS_KEYOption 2AWS Profile推薦通過(guò)AWS_PROFILE指定本地~/.aws/credentials中已有的 Profile避免把密鑰寫(xiě)進(jìn)代碼倉(cāng)庫(kù)。3.2 框架讀取的標(biāo)準(zhǔn)環(huán)境變量VoltAgent 讀取 Amazon Bedrock 憑證時(shí)使用以下標(biāo)準(zhǔn) AWS 環(huán)境變量變量說(shuō)明AWS_ACCESS_KEY_IDAWS 訪問(wèn)密鑰 IDAWS_SECRET_ACCESS_KEYAWS 秘密訪問(wèn)密鑰AWS_REGION區(qū)域如us-east-1必須與模型可用區(qū)域一致AWS_SESSION_TOKEN可選臨時(shí)憑證STS場(chǎng)景使用如果你本地已配置好 AWS Profile 或 IAM Role提供方會(huì)自動(dòng)拾取無(wú)需額外代碼。3.3 源碼級(jí)原理憑證如何被解析從源碼看VoltAgent 的模型提供方注冊(cè)表在加載 Amazon Bedrock 提供方時(shí)會(huì)顯式構(gòu)造createAmazonBedrock調(diào)用并注入憑證見(jiàn) model-provider-registry.tsconst buildAmazonBedrockProvider: ProviderAdapter (config, moduleExports) { const createFn getModuleFunction(moduleExports, createAmazonBedrock); const providerExport resolveProviderExport(moduleExports, bedrock); ... return (createFn?.({ region: getEnvValue(AWS_REGION), accessKeyId: getEnvValue(AWS_ACCESS_KEY_ID), secretAccessKey: getEnvValue(AWS_SECRET_ACCESS_KEY), sessionToken: getEnvValue(AWS_SESSION_TOKEN), }) ?? providerExport) as ModelProviderEntry; };即框架啟動(dòng)時(shí)讀取AWS_REGION、AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN四個(gè)環(huán)境變量注入到ai-sdk/amazon-bedrock的createAmazonBedrock工廠函數(shù)中。該適配器通過(guò)PACKAGE_ADAPTERS映射到 npm 包ai-sdk/amazon-bedrock見(jiàn) model-provider-registry.generated.ts 中的注冊(cè)條目env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION]。如果只配置了本地 AWS Profile / IAM Role則AWS_ACCESS_KEY_ID等環(huán)境變量為空但ai-sdk/amazon-bedrock底層的 AWS SDK 會(huì)繼續(xù)沿標(biāo)準(zhǔn)憑證鏈環(huán)境變量 → 共享憑證文件 → IAM Role自動(dòng)解析因此 README 中說(shuō)“本地已配置的 Profile 或 IAM Role 會(huì)被自動(dòng)拾取”。四、開(kāi)通 Bedrock 模型訪問(wèn)權(quán)限在運(yùn)行代碼之前需要先在 AWS 控制臺(tái)開(kāi)通模型訪問(wèn)打開(kāi) AWS 控制臺(tái)https://console.aws.amazon.com進(jìn)入Amazon Bedrock → Model access請(qǐng)求開(kāi)通所需模型如 Claude、Llama、Titan 等的訪問(wèn)權(quán)限等待審批通常即時(shí)生效。五、核心代碼逐段解讀示例主體位于 src/index.ts下面拆解每一部分。5.1 自定義工具天氣查詢(xún)import { Agent, Memory, VoltAgent, createTool } from voltagent/core; import { z } from zod; const weatherTool createTool({ name: get_current_weather, description: Get the current weather in a location, parameters: z.object({ location: z.string().describe(The location to get weather for), unit: z.enum([celsius, fahrenheit]).optional().describe(Temperature unit), }), execute: async (input) { // Mock weather data const temperature Math.floor(Math.random() * 30) 10; return { location: input.location, temperature, unit: input.unit || celsius, condition: [sunny, cloudy, rainy][Math.floor(Math.random() * 3)], }; }, });要點(diǎn)createTool接收name、description、parameters、execute四要素parameters使用zod描述入?yún)⒔Y(jié)構(gòu)location為必填字符串unit為可選的celsius | fahrenheit枚舉execute返回模擬天氣數(shù)據(jù)溫度隨機(jī)生成、天氣條件隨機(jī)取 sunny/cloudy/rainy真實(shí)項(xiàng)目中可替換為真實(shí)天氣 API 調(diào)用。工具的描述與參數(shù) schema 會(huì)被注入模型上下文使 Bedrock 上的 Claude、Llama 等模型能夠正確觸發(fā)函數(shù)調(diào)用。5.2 日志與 Agent 定義import { createPinoLogger } from voltagent/logger; const logger createPinoLogger({ name: with-amazon-bedrock, level: info, }); const agent new Agent({ name: bedrock-assistant, instructions: An AI assistant powered by Amazon Bedrock, // Credentials are resolved from AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, // and optionally AWS_SESSION_TOKEN. model: amazon-bedrock/anthropic.claude-opus-4-1-20250805-v1:0, tools: [weatherTool], memory: new Memory({ storage: new LibSQLMemoryAdapter({ url: file:./.voltagent/memory.db, }), }), });關(guān)鍵配置項(xiàng)model模型路由字符串格式為amazon-bedrock/bedrock模型ID。示例默認(rèn)使用anthropic.claude-opus-4-1-20250805-v1:0tools掛載上一節(jié)定義的weatherTool啟用函數(shù)調(diào)用能力memory配置持久化內(nèi)存。這里使用voltagent/libsql的LibSQLMemoryAdapter將對(duì)話(huà)記憶寫(xiě)入本地 SQLite 兼容文件./.voltagent/memory.db。5.3 服務(wù)器啟動(dòng)import { honoServer } from voltagent/server-hono; new VoltAgent({ agents: { agent, }, logger, server: honoServer({ port: 3141 }), });VoltAgent是框架的編排入口注冊(cè)agent實(shí)例、注入logger并通過(guò)honoServer({ port: 3141 })啟動(dòng)一個(gè) Hono REST 服務(wù)器默認(rèn)端口 3141將 Agent 以 HTTP API 形式對(duì)外提供服務(wù)。六、模型路由amazon-bedrock/ 字符串詳解6.1 可用模型速查README 與源碼注釋提供了常用模型 ID。Claude 系列示例// Claude models model: amazon-bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0; model: amazon-bedrock/anthropic.claude-3-opus-20240229-v1:0;Llama 系列示例// Llama models model: amazon-bedrock/meta.llama3-2-3b-instruct-v1:0; model: amazon-bedrock/meta.llama3-1-70b-instruct-v1:0;Mistral 與 Titan 系列示例// Mistral models model: amazon-bedrock/mistral.mistral-large-2407-v1:0; // Titan models model: amazon-bedrock/amazon.titan-text-premier-v1:0;源碼 src/index.ts 的注釋中還列出了更多可選模型Claude 3.5 Haikuanthropic.claude-3-5-haiku-20241022-v1:0、Claude 3 Sonnetanthropic.claude-3-sonnet-20240229-v1:0、Claude 3 Haikuanthropic.claude-3-haiku-20240307-v1:0、Llama 3.2 1Bmeta.llama3-2-1b-instruct-v1:0、Mistral Smallmistral.mistral-small-2402-v1:0、Titan Text Expressamazon.titan-text-express-v1等。替換模型時(shí)只需修改Agent配置中的model字段即可框架與工具、內(nèi)存、服務(wù)器代碼無(wú)需改動(dòng)——這正是 VoltAgent 避免廠商鎖定的體現(xiàn)。6.2 模型 ID 解析規(guī)則從源碼看模型路由字符串統(tǒng)一按provider/model格式解析見(jiàn) model-provider-registry.ts 的splitModelId字符串以/分隔前半段歸一化為小寫(xiě) Provider ID如amazon-bedrock后半段為模型 ID。因此amazon-bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0會(huì)被解析為「Amazon Bedrock 提供方 Bedrock 上的 Claude 3.5 Sonnet 模型」。解析時(shí)也會(huì)兼容provider:model的冒號(hào)寫(xiě)法。6.3 注冊(cè)表自動(dòng)刷新VoltAgent 內(nèi)置ModelProviderRegistry單例內(nèi)置提供方列表來(lái)自自動(dòng)生成的注冊(cè)表同時(shí)支持從models.dev拉取更新并緩存到本地緩存目錄.voltagent/model-registry/默認(rèn) 30 分鐘自動(dòng)刷新一次見(jiàn) model-provider-registry.ts。這意味著你無(wú)需手工維護(hù)模型清單框架會(huì)動(dòng)態(tài)感知新增的 Bedrock 模型。七、常見(jiàn)問(wèn)題排查T(mén)roubleshootingAccess Denied訪問(wèn)被拒絕確認(rèn)已在 Bedrock 控制臺(tái)Model access頁(yè)面開(kāi)通對(duì)應(yīng)模型的訪問(wèn)權(quán)限檢查 IAM 權(quán)限策略是否包含 Bedrock 相關(guān)權(quán)限如bedrock:InvokeModel。Region 問(wèn)題檢查AWS_REGION是否與 Bedrock 服務(wù)及所選模型的可用區(qū)域一致不同模型可能僅在特定區(qū)域開(kāi)放。限流Rate Limits注意當(dāng)前 AWS 賬號(hào)的 Bedrock 配額quotas生產(chǎn)環(huán)境建議自行實(shí)現(xiàn)重試邏輯retry與退避策略。八、小結(jié)通過(guò)with-amazon-bedrock示例可以看到在 VoltAgent 中接入 Amazon Bedrock 只需三步配置 AWS 憑證環(huán)境變量 → 在Agent.model中填寫(xiě)amazon-bedrock/model路由字符串 → 開(kāi)通對(duì)應(yīng)模型訪問(wèn)權(quán)限。框架底層的ModelProviderRegistry會(huì)自動(dòng)完成ai-sdk/amazon-bedrock的加載與憑證注入而createTool、Memory、honoServer等組件則讓工具調(diào)用、持久化記憶與 REST 服務(wù)開(kāi)箱即用。結(jié)合倉(cāng)庫(kù)中的 核心注冊(cè)表實(shí)現(xiàn)、生成式注冊(cè)表 與 示例源碼你可以在此基礎(chǔ)上快速擴(kuò)展出屬于自己的 Bedrock Agent 應(yīng)用。贊分享人工智能AI AgentAgent 框架后端多智能體RAG工具調(diào)用Agent 記憶【免費(fèi)下載鏈接】voltagentAI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework項(xiàng)目地址https://gitcode.com/gh_mirrors/vo/voltagent點(diǎn)擊查看免費(fèi)下載相關(guān)推薦15分鐘把30天社交討論變成圖表:last30days-skill 數(shù)據(jù)可視化完整保姆級(jí)教程15分鐘把30天社交討論變成圖表:last30days skill 數(shù)據(jù)可視化完整保姆級(jí)教程 last30days skill 是一個(gè) Claude CodeAI 技能深度研究人工智能MCP 服務(wù)LangChain4j 接入 Amazon Bedrock 嵌入模型Cohere 與 Titan 完整實(shí)戰(zhàn)指南LangChain4j 接入 Amazon Bedrock 嵌入模型Cohere 與 Titan 完整實(shí)戰(zhàn)指南 Amazon Bedrock 是 AWS 提供人工智能AI 應(yīng)用RAGAI Agent工具調(diào)用Qwen3-Coder 實(shí)戰(zhàn)通過(guò) Amazon Bedrock 接入 Aider 的完整配置指南Qwen3 Coder 實(shí)戰(zhàn)通過(guò) Amazon Bedrock 接入 Aider 的完整配置指南 本指南聚焦于開(kāi)源 AI 編程助手 Aider 如何通過(guò) Am大模型代碼模型微調(diào)模型評(píng)測(cè)強(qiáng)化學(xué)習(xí)上一篇Tuba 開(kāi)發(fā)者深度解析Vala 語(yǔ)言構(gòu)建的 GNOME Fediverse 客戶(hù)端架構(gòu)揭秘下一篇Staticgen 與其他靜態(tài)生成器對(duì)比為什么選擇它作為你的開(kāi)發(fā)工具創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考