CrewAI BedrockKBRetrieverTool 实战详解:为 Agent 接入 Amazon Bedrock 知识库检索

发布时间:2026/11/3 20:09:42

CrewAI BedrockKBRetrieverTool 实战详解:为 Agent 接入 Amazon Bedrock 知识库检索 CrewAI BedrockKBRetrieverTool 实战详解为 Agent 接入 Amazon Bedrock 知识库检索【免费下载链接】crewAIFramework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.项目地址: https://gitcode.com/GitHub_Trending/cr/crewAI本文基于 CrewAI 仓库中crewai-tools包的 Bedrock 知识库工具文档lib/crewai-tools/src/crewai_tools/aws/bedrock/knowledge_base/README.md及其对应源码实现撰写。读完后你将掌握BedrockKBRetrieverTool的安装与配置、全部构造参数的取值规则与校验逻辑、在 CrewAI Agent 中的接入方式以及该工具底层对bedrock-agent-runtime.retrieve()的调用链与响应解析机制。1. 工具定位与核心能力BedrockKBRetrieverTool让 CrewAI 智能体能够用自然语言查询natural language query从 Amazon Bedrock 知识库中检索信息是典型的 RAG检索增强生成接入点Agent 负责推理与任务编排知识库检索负责提供来自企业私有数据的事实依据。工具实现在 retriever_tool.py类定义继承自crewai.tools.BaseTool并暴露给 LLM 的输入 Schema 只有一个字段class BedrockKBRetrieverToolInput(BaseModel): Input schema for BedrockKBRetrieverTool. query: str Field( ..., descriptionThe query to retrieve information from the knowledge base )也就是说Agent 侧只需要生成一句查询语句工具内部完成其余所有工作。工具在包内的导出路径为 knowledge_base/init.py并向上聚合到 bedrock/init.py 与 aws/init.py因此既可以从crewai_tools.aws.bedrock.knowledge_base导入也可以直接从crewai_tools.aws导入。2. 安装与环境要求2.1 安装pip install crewai[tools]2.2 前置条件已配置 AWS 凭据环境变量或 AWS CLI 均可依赖boto3与python-dotenv包。源码层面工具声明了package_dependencies: list[str] Field(default_factorylambda: [boto3])且模块导入时执行load_dotenv()因此.env文件中的配置会自动被加载具备目标 Amazon Bedrock 知识库的访问权限。2.3 环境变量BEDROCK_KB_IDyour-knowledge-base-id # 可作为 knowledge_base_id 参数的替代 AWS_REGIONyour-aws-region # 默认 us-east-1 AWS_ACCESS_KEY_IDyour-access-key # AWS 鉴权所需 AWS_SECRET_ACCESS_KEYyour-secret-key # AWS 鉴权所需从源码看__init__中的参数回退逻辑为self.knowledge_base_id knowledge_base_id or os.getenv(BEDROCK_KB_ID)即构造参数优先未显式传入时才回退到BEDROCK_KB_ID环境变量见 retriever_tool.py#L59-L60。Region 的解析链为AWS_REGION→AWS_DEFAULT_REGION→ 兜底us-east-1见 retriever_tool.py#L194-L200。3. 在 CrewAI Agent 中的完整用法以下示例继承自工具 README展示初始化工具 → 挂载到 Agent → 定义 Task → 运行 Crew的完整链路from crewai import Agent, Task, Crew from crewai_tools.aws.bedrock.knowledge_base.retriever_tool import BedrockKBRetrieverTool # 初始化工具 kb_tool BedrockKBRetrieverTool( knowledge_base_idyour-kb-id, number_of_results5 ) # 创建使用该工具的 CrewAI Agent researcher Agent( roleKnowledge Base Researcher, goalFind information about company policies, backstoryI am a researcher specialized in retrieving and analyzing company documentation., tools[kb_tool], verboseTrue ) # 为 Agent 创建任务 research_task Task( descriptionFind our companys remote work policy and summarize the key points., agentresearcher ) # 创建包含该 Agent 的 Crew crew Crew( agents[researcher], tasks[research_task], verbose2 ) # 运行 result crew.kickoff() print(result)工具初始化后其description会被动态改写为Retrieves information from Amazon Bedrock Knowledge Base {knowledge_base_id} given a query这样 Agent 在决策是否调用工具时能明确感知具体查询的是哪个知识库。4. 参数详解与校验规则4.1 构造参数参数类型必填默认值说明knowledge_base_idstr是*None知识库唯一标识0–10 位字母数字字符可用环境变量BEDROCK_KB_ID替代number_of_resultsint否5返回的最大结果数retrieval_configurationdict否None自定义知识库查询配置guardrail_configurationdict否None内容过滤Guardrail设置next_tokenstr否None分页游标用于获取下一批结果* 若通过BEDROCK_KB_ID环境变量提供则构造参数可省略。4.2 参数校验逻辑源码级_validate_parameters()在__init__末尾被调用校验失败会抛出BedrockValidationError定义于 exceptions.py继承自BedrockError基类。具体约束见 retriever_tool.py#L89-L124knowledge_base_id非空、必须是字符串、长度 ≤ 10、仅允许字母数字字符next_token若非空必须是字符串、长度在 1–2048 之间、不能包含空格number_of_results必须是整数且 0。4.3 retrieval_configuration 的自动生成如果没有显式传入retrieval_configuration工具会根据number_of_results自动构造def _build_retrieval_configuration(self) - dict[str, Any]: vector_search_config {} if self.number_of_results is not None: vector_search_config[numberOfResults] self.number_of_results return {vectorSearchConfiguration: vector_search_config}即默认等价于{vectorSearchConfiguration: {numberOfResults: 5}}。5. 高级用法自定义检索配置与 Guardrail5.1 混合检索HYBRID显式传入retrieval_configuration时工具会原样使用该配置不再自动构造kb_tool BedrockKBRetrieverTool( knowledge_base_idyour-kb-id, retrieval_configuration{ vectorSearchConfiguration: { numberOfResults: 10, overrideSearchType: HYBRID } } ) policy_expert Agent( rolePolicy Expert, goalAnalyze company policies in detail, backstoryI am an expert in corporate policy analysis with deep knowledge of regulatory requirements., tools[kb_tool] )5.2 内容过滤Guardrail与分页guardrail_configuration与next_token分别映射到 Bedrock API 的guardrailConfiguration与nextToken字段用于对检索内容做合规过滤和分批拉取kb_tool BedrockKBRetrieverTool( knowledge_base_idkb123, guardrail_configuration{ guardrailIdentifier: your-guardrail-id, guardrailVersion: DRAFT, trace: ENABLED, } )响应中的guardrailAction字段会回传 Guardrail 的处理动作便于在 Agent 侧感知内容是否被干预。6. 底层调用链_run()的完整执行流程_run(query)是 Agent 调用工具时的实际入口执行流程可拆解为六步见 retriever_tool.py#L183-L250懒加载 boto3import boto3失败时抛出ImportError提示执行uv add boto3创建客户端boto3.client(bedrock-agent-runtime, region_name...)AWS 鉴权由 SDK 自动从环境读取组装请求参数retrieve_params { knowledgeBaseId: self.knowledge_base_id, retrievalQuery: {text: query}, } if self.retrieval_configuration: retrieve_params[retrievalConfiguration] self.retrieval_configuration if self.guardrail_configuration: retrieve_params[guardrailConfiguration] self.guardrail_configuration if self.next_token: retrieve_params[nextToken] self.next_token发起检索bedrock_agent_runtime.retrieve(**retrieve_params)逐条后处理对response[retrievalResults]中每条记录调用_process_retrieval_result()标准化序列化返回结果为空时返回{message: No results found for the given query.}否则输出results列表如响应中存在nextToken、guardrailAction则一并透传最终以json.dumps(..., indent2)返回给 Agent。异常处理分两层botocore.exceptions.ClientError会被解包出Code与Message后抛出BedrockKnowledgeBaseError(Error ({code}): {message})其他异常统一包装为BedrockKnowledgeBaseError(Unexpected error: ...)。这两个异常类型均定义在 exceptions.py 中可在业务代码中精确捕获知识库错误而不影响其他工具调用。7. 响应格式与来源映射机制7.1 标准化响应工具对外返回 JSON 字符串{ results: [ { content: Retrieved text content, content_type: text, source_type: S3, source_uri: s3://bucket/document.pdf, score: 0.95, metadata: { additional: metadata } } ], nextToken: pagination-token, guardrailAction: NONE }字段说明content/content_type检索片段文本及其类型默认textsource_type/source_uri数据源类型与定位地址见 7.2 的映射表score相关性分数仅当 API 返回时存在metadata知识库附加元数据仅当返回时存在此外_process_retrieval_result()还会把二进制片段映射为byte_content来自byteContent、结构化行映射为row_content来自row用于 SQL 等非文本数据源。7.2 八种数据源的 URI 映射_process_retrieval_result()内置了一张 Bedrock 位置类型 → 工具输出类型 → URI 取字段的映射表见 retriever_tool.py#L144-L153Bedrock 位置字段输出 source_typeURI 取值字段s3LocationS3uriconfluenceLocationConfluenceurlsalesforceLocationSalesforceurlsharePointLocationSharePointurlwebLocationWeburlcustomDocumentLocationCustomDocumentidkendraDocumentLocationKendraDocumenturisqlLocationSQLquery这意味着该工具天然覆盖 Bedrock 知识库支持的多种数据源Amazon S3、Confluence、Salesforce、SharePoint、网页、自定义文档位置、Amazon Kendra 与 SQL 数据库Agent 拿到的每条结果都带有可追溯的来源信息。8. 典型应用场景工具 README 归纳了五类落地场景均围绕让 Agent 的推理扎根于企业真实数据展开企业知识集成Agent 直接访问组织私有知识而不暴露敏感数据基于内部政策、流程与文档做决策领域专家知识无需微调模型即可让 Agent 接入法律、医疗、技术等垂直领域知识库复用 AWS 环境中已有的知识资产数据驱动决策以实际业务数据为回答依据减少幻觉可扩展的信息访问无需将数 TB 级知识嵌入模型按任务动态检索相关片段合规与治理Agent 的回答对齐已批准的内部文档且source_uri/metadata可形成可审计的信息来源记录配合 Guardrail 进一步控制访问边界。9. 小结BedrockKBRetrieverTool的实现非常聚焦一个query输入 Schema、五条构造参数、一次retrieve()调用、一套八源映射的结果标准化逻辑。它的工程价值在于把 Bedrock 知识库检索封装成 CrewAI 工具协议BaseTool下的普通成员——Agent 通过tools[kb_tool]即可挂载无需感知 boto3 细节而参数校验、错误包装、来源映射等健壮性逻辑保证了它在生产链路中可预测、可调试。相关源码索引工具实现retriever_tool.py异常定义exceptions.py模块文档README.md【免费下载链接】crewAIFramework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.项目地址: https://gitcode.com/GitHub_Trending/cr/crewAI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/29 9:21:14

Wave Terminal:5 分钟上手的完整指南

Wave Terminal:5 分钟上手的完整指南 【免费下载链接】waveterm An open-source, AI-integrated, cross-platform terminal for seamless workflows 项目地址: https://gitcode.com/GitHub_Trending/wa/waveterm Wave Terminal 是一款开源跨平台终端&#xf…

2026/10/27 8:24:13

FreeTube 路线图解读:直连 YouTube 后最值得跟进的3个方向

FreeTube 路线图解读:直连 YouTube 后最值得跟进的3个方向 【免费下载链接】FreeTube An Open Source YouTube app for privacy 项目地址: https://gitcode.com/GitHub_Trending/fr/FreeTube FreeTube 是一个不追踪、不带广告的开源 YouTube 客户端&#xff…

2026/10/29 6:09:46

IOPaint批量擦除:百张图片10分钟

IOPaint批量擦除:百张图片10分钟 【免费下载链接】IOPaint Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on your pictures. …

2026/11/3 20:07:25

DDR5 JEDEC标准解读:模式寄存器与信号完整性调试

简介:JEDEC JESD79-5(2020年7月正式版)DDR5 SDRAM标准全文,面向内存芯片设计、硬件验证、固件开发、系统平台选型及高校相关课程人员,提供从协议定义到电气与封装实现的统一参考。文档共492页,系统覆盖DDR5…

2026/11/3 20:07:25

车辆漂移仿真中的三自由度模型与非线性轮胎建模

1. 项目概述:漂移仿真与车辆模型的价值漂移作为极限驾驶技术的代表,其仿真分析对车辆动力学研究具有双重意义。在工程层面,精确的漂移仿真能帮助工程师理解轮胎非线性区域的力学特性,优化ESP等电控系统的干预逻辑。比如某德系品牌…

2026/11/3 20:07:25

Vue3 vxe-gantt甘特图定制:任务分解与拖拽优化

1. 项目概述:基于Vue3的vxe-gantt甘特图深度定制甘特图作为项目管理领域的核心工具,其可视化排期和任务追踪能力在近十年的敏捷开发实践中已被反复验证。而vxe-gantt作为基于Vue3的轻量级甘特图组件,凭借其响应式设计和对组合式API的天然支持…

2026/11/3 20:07:25

风光储并网仿真模型构建与调试实战经验

1. 风光储并网模型构建实录去年接手某新能源场站智能化改造项目时,我带队搭建了一套风光储联合并网仿真系统。这个过程中积累的实战经验,特别是那些教科书上不会写的"坑",今天做个系统梳理。这类模型本质上是通过数字孪生技术&…

2026/11/3 20:07:25

DDR5 JESD79-5规范精读:子通道、Bank Group与训练调试避坑

简介:这份资源是 JEDEC 固态技术协会于 2020 年 7 月发布的 JESD79-5 正式版 DDR5 SDRAM 标准全文,面向从事内存控制器设计、DRAM 颗粒验证、服务器与高性能计算平台硬件开发的工程师,以及需要查阅原始规范的研究人员,用于解决 DD…

2026/11/3 20:02:24

HDMI转MIPI桥接选型:IT6616的4K带宽与lane配置

简介:联阳IT6616芯片数据手册面向硬件工程师、嵌入式显示方案开发者及HDMI-to-MIPI桥接选型人员,聚焦HDMI 1.4转MIPI CSI/DSI的低功耗、高质量视频转换需求,也可为替代TC358743XBG/TC358749XBG、LT6911C等方案提供器件级参考。压缩包内仅含1个…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32实战:基于MAX14431数字隔离器的SPI隔离通信方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

工业SPI隔离通信设计:MAX14431BAEE+与STM32L4A6RG实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32+NRF24L01无线抢答器:硬件设计、通信协议与低功耗实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑