You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于AWS Bedrock的CrewAI代码生成输出不完整问题排查求助

问题诊断与解决方案

一、输出不完整/语法错误的核心修复

1. 模型参数调整

  • Token长度优化:当前设置max_tokens=10000,Claude 3.5 Sonnet支持最高200k上下文窗口,可将值提升至20000(单文件处理足够),避免因输出长度限制导致代码截断。
  • 修正终止序列:原stop_sequences中的换行格式错误,会触发提前终止输出,改为:
model_kwargs = {
    "max_tokens": 20000,
    "temperature": 0.1,
    "top_k": 250,
    "top_p": 1,
    "stop_sequences": ["\n\nHuman:"],
}

2. CrewAI配置规范修正

  • Crew初始化格式错误:agents和tasks必须为列表类型,原代码直接传入单个实例会导致逻辑异常,修正后:
# 先创建实例
dev_agent = developer([docs_tool, file_tool])
dev_task_instance = dev_task([docs_tool, file_tool], dev_agent)

# 正确初始化Crew
crew = Crew(
    agents=[dev_agent],
    tasks=[dev_task_instance],
    verbose=True
)
result = crew.kickoff()
  • Agent参数优化:单Agent场景下allow_delegation=True无意义,改为False;若无需上下文记忆,关闭memory=True以减少冗余负载。
  • 任务描述明确化:原任务描述未限定处理范围,补充细节避免模糊输出:
description = (
    "Read all code files in the specified directory, refactor each file to improve readability. "
    "Return only the complete, syntactically valid refactored code for each file, no comments or explanations."
)

3. 代码库大小处理

若待分析代码库过大,单次传入的内容会超出模型上下文限制,导致输出截断:

  • 拆分任务:将“重构整个代码库”拆分为“按单个文件重构”的子任务,让Agent逐文件处理。
  • 工具配置:限制DirectoryReadTool仅读取指定类型文件(如.py),避免加载无关文档。

二、Llama3/Mistral模型兼容问题

Bedrock上的Llama3、Mistral需匹配特定调用格式,兼容CrewAI需注意:

  • 检查boto3版本:确保版本≥1.34.0,支持Bedrock上的开源模型调用。
  • 适配模型参数:不同模型的终止序列、输入格式不同,比如Llama3的stop_sequences需设为["<|end_of_solution|>"],调整model_kwargs适配对应模型要求。
  • 自定义包装:若ChatBedrock默认适配不兼容,可基于LangChain自定义模型包装类,统一输入输出格式。

三、Bedrock实现程序化向量化

可直接使用Bedrock上的Amazon Titan Embeddings解决本地向量化速度慢的问题,示例代码:

from langchain.embeddings import BedrockEmbeddings

# 初始化Bedrock嵌入模型
bedrock_embeddings = BedrockEmbeddings(
    client=bedrock,
    model_id="amazon.titan-embed-text-v1"
)

# 替代本地嵌入模型,用于代码库向量化检索

内容的提问来源于stack exchange,提问作者Mogoli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 07:49:57