快速结论:这不是用户侧运行报错,而是 CrewAI 仓库中为 Bedrock 提供商补充共享 LLM 内容与用量契约测试的功能请求。若你在做同类测试改造时遇到契约不匹配,优先排查 Bedrock Converse 的内容块是否被字符串化、以及测试是否依赖 AWS 凭证。
适用环境:Issue 仅确认为 crewAI 的 Python 库(lib/crewai)与 Bedrock 提供商实现,测试应使用伪造的 Converse 响应,不需要真实 AWS 凭证;未确认具体 Python、CUDA、显卡或 boto3 版本。
最快修复方案:暂无确认的一步修复方案。Issue 处于待分配状态,尚未合并对应 PR。
注意事项:该 Issue 由维护者协调分配给 Stanford 学期合作 cohort,评论表达兴趣不等于获得所有权;相关共享测试套件(#8037/#8039/#8062)和 Bedrock 格式化工作(#7930)仍在并行推进,需避免重复实现。
问题场景
在 CrewAI 中为 Bedrock 提供商扩展共享的原生 LLM 内容与用量契约测试时触发。目标是给共享 provider 契约套件加入一个 Bedrock Converse fixture,在保留其 content-block 表示的前提下,测试通用文本、多模态和 token 用量行为;覆盖字符串、parts-list 和 None 内容三种情况,并在同步/异步路径上验证 token 用量与返回文本,且不依赖 AWS 凭证。
报错原文
[FEATURE] Extend shared native LLM content and usage contracts to Bedrock
原因分析
可能原因:Bedrock Converse 的内容块表示(content-block)与共享契约预期的通用内容约定不一致。若测试中把 content 列表直接字符串化,会导致多模态块与模型可见文本的断言失真;若未拆分 provider 专属语义与真正通用的期望,也会让共享套件无法复用。此外,同步与异步路径的用量统计可能出现行为差异。
环境排查
- 确认 crewAI 库版本,以及该版本是否已包含 #8037/#8039/#8062 的共享契约套件。
- 确认 Bedrock 提供商实现位置:
lib/crewai/src/crewai/llms/providers/bedrock/completion.py。 - 确认现有 Bedrock 测试目录
lib/crewai/tests/llms/bedrock与共享测试目录lib/crewai/tests/llms的状态。 - 确认测试是否使用伪造的 boto3 Session/client 与 Converse 响应,而不是真实 AWS 调用。
- 确认是否有与本 Issue 竞争的改动,尤其是 #7930 的 Bedrock formatter 工作。
解决步骤
- 在维护者 @lorenzejay 明确确认分配前不要实施;该 Issue 保留给 Stanford cohort 协调分配。
- 若获得分配,在
lib/crewai/tests/llms/bedrock下新增 hermetic Bedrock Converse fixture,用伪造的 boto3 Session/client 构造字符串、parts-list 和 None 内容响应。 - 断言模型可见文本与多模态块时不把 content 列表字符串化。
- 在同步与异步路径上分别验证 token 用量和返回文本,全程不调用付费 API、不需要 AWS 凭证。
- 把 Bedrock 专属语义保留在 fixture 内,只在共享套件中放真正通用的期望。
- 与 #8037/#8039/#8062 及 #7930 协调,避免重复的运行时实现,并纳入已跟踪的多模态/finish-reason 修复。
验证方法
运行新增的 Bedrock Converse fixture 测试,确认字符串、parts-list、None 三类内容均通过,多模态块未被字符串化,token 用量与返回文本在同步/异步路径下一致,且整个测试过程在无 AWS 凭证环境中完成。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug]: /api/v1/dify/retrieval resets the connection (502 / "Reached max retries") because build_error_result sets HTTP status to RetCode.ARG](https://www.chat-gpts.plus/wp-content/uploads/2026/11/16208-b69fbe48-768x403.jpg)

![[Bug]: response_cost is null and spend stays $0 when custom_llm_provider=anthropic and the priced row lives under a different provider](https://www.chat-gpts.plus/wp-content/uploads/2026/11/47675-f09593c8-768x403.jpg)