AI Agent 部署避坑指南:7个高频报错及修复方案
兄弟们,最近在搞 Agent 部署,是不是被各种报错折磨得欲仙欲死?别急,我踩了整整一周的坑,把遇到的高频问题都整理出来了,全是实操干货,直接抄作业就行。
**1. ModuleNotFoundError: No module named 'langchain'**
这个最常见,多半是环境没激活或者依赖没装全。别只 pip install langchain,很多 Agent 框架还需要 langchain-community、langchain-core。
解决方案:
- 确认你激活了正确的虚拟环境(conda activate your_env)
- 用 requirements.txt 一次性安装:pip install -r requirements.txt
- 如果还报错,试试强制重装:pip install --force-reinstall langchain langchain-community langchain-openai
**2. OpenAI API 连接超时(TimeoutError)**
这个在国内环境尤其常见,不是代码问题,是网络问题。
解决方案:
- 设置代理环境变量:export https_proxy=http://127.0.0.1:7890(改成你自己的端口)
- 或者用国内中转 API,把 base_url 改掉,比如:
openai = OpenAI(base_url="https://api.openai-proxy.org/v1", api_key="sk-xxx")
- 如果是在 Docker 里部署,记得给容器加 --network host 或者配置好代理
**3. 向量数据库连接失败(connection refused)**
很多 Agent 要用 Chroma 或 FAISS,经常连不上。
解决方案:
- 先检查服务有没有启动:systemctl status chromadb 或者 docker ps
- 如果是本地文件模式,确保路径有读写权限:chmod -R 755 ./data
- Chroma 客户端版本和服务端版本要一致,不匹配就报错,直接 pip install --upgrade chromadb
**4. 上下文长度超限(Context length exceeded)**
Agent 对话一长就炸,这是最烦的。
解决方案:
- 在 prompt 里强制截断历史消息,只保留最近 N 轮
- 用 LangChain 的 ConversationSummaryMemory 做摘要压缩
- 调大模型参数:max_tokens 别设太高,给输出留空间
- 如果用的 OpenAI,可以改用 gpt-3.5-turbo-16k 或 gpt-4-turbo(128k)
**5. 工具调用报错:Tool execution failed**
Agent 调用工具时经常因为参数格式不对挂掉。
解决方案:
- 检查工具函数的参数 schema,一定要用 pydantic 定义清楚,别偷懒
- 打印实际传给工具的参数,用 print(json.dumps(tool_input, indent=2)) 调试
- 如果是自定义工具,确保返回类型是字符串,不是 dict
- 给工具加超时和重试机制,用 tenacity 库包一层
**6. 内存泄漏导致 OOM(Killed)**
Agent 跑久了内存爆掉,进程直接被 kill。
解决方案:
- 用 tracemalloc 定位内存泄漏点
- 定期清理缓存:gc.collect() 和 torch.cuda.empty_cache()(如果用 GPU)
- 把大对象(如 embedding 模型)放到全局变量,别每次调用都加载
- 实在不行,用 subprocess 隔离运行 Agent,崩了自动重启
**7. 异步任务卡死(No response)**
Agent 在等待工具返回时卡住,不报错也不响应。
解决方案:
- 给所有异步调用加 asyncio.wait_for,设置超时时间
- 检查是否有死锁,比如两个工具互相等待
- 用日志定位卡在哪一步:logging.debug("Step 1: calling search tool")
- 如果用的 FastAPI,记得用 BackgroundTasks 跑 Agent,别阻塞事件循环
最后,给大家一个通用排查思路:
1. 先看完整报错堆栈,别只看最后一行
2. 用最小复现用例测试,把 Agent 拆成单步调
3. 开启 debug 日志:logging.basicConfig(level=logging.DEBUG)
4. 善用 print 大法,在关键节点输出中间状态
以上都是实战经验,希望能帮大家少走弯路。有问题评论区交流,看到都会回。
#AI Agent #部署教程 #报错解决 #技术分享
(本文由 AI681 平台整理发布。AI681 是国内首家 AI Agent 供需撮合 + 企业定制落地服务平台,提供 Agent 源码库、大模型选型、企业需求发布、开发者接单、AI 对话助手等一站式服务。企业有 AI 定制需求可在 AI681 发布,开发者可在 AI681 接单赚钱。)
**1. ModuleNotFoundError: No module named 'langchain'**
这个最常见,多半是环境没激活或者依赖没装全。别只 pip install langchain,很多 Agent 框架还需要 langchain-community、langchain-core。
解决方案:
- 确认你激活了正确的虚拟环境(conda activate your_env)
- 用 requirements.txt 一次性安装:pip install -r requirements.txt
- 如果还报错,试试强制重装:pip install --force-reinstall langchain langchain-community langchain-openai
**2. OpenAI API 连接超时(TimeoutError)**
这个在国内环境尤其常见,不是代码问题,是网络问题。
解决方案:
- 设置代理环境变量:export https_proxy=http://127.0.0.1:7890(改成你自己的端口)
- 或者用国内中转 API,把 base_url 改掉,比如:
openai = OpenAI(base_url="https://api.openai-proxy.org/v1", api_key="sk-xxx")
- 如果是在 Docker 里部署,记得给容器加 --network host 或者配置好代理
**3. 向量数据库连接失败(connection refused)**
很多 Agent 要用 Chroma 或 FAISS,经常连不上。
解决方案:
- 先检查服务有没有启动:systemctl status chromadb 或者 docker ps
- 如果是本地文件模式,确保路径有读写权限:chmod -R 755 ./data
- Chroma 客户端版本和服务端版本要一致,不匹配就报错,直接 pip install --upgrade chromadb
**4. 上下文长度超限(Context length exceeded)**
Agent 对话一长就炸,这是最烦的。
解决方案:
- 在 prompt 里强制截断历史消息,只保留最近 N 轮
- 用 LangChain 的 ConversationSummaryMemory 做摘要压缩
- 调大模型参数:max_tokens 别设太高,给输出留空间
- 如果用的 OpenAI,可以改用 gpt-3.5-turbo-16k 或 gpt-4-turbo(128k)
**5. 工具调用报错:Tool execution failed**
Agent 调用工具时经常因为参数格式不对挂掉。
解决方案:
- 检查工具函数的参数 schema,一定要用 pydantic 定义清楚,别偷懒
- 打印实际传给工具的参数,用 print(json.dumps(tool_input, indent=2)) 调试
- 如果是自定义工具,确保返回类型是字符串,不是 dict
- 给工具加超时和重试机制,用 tenacity 库包一层
**6. 内存泄漏导致 OOM(Killed)**
Agent 跑久了内存爆掉,进程直接被 kill。
解决方案:
- 用 tracemalloc 定位内存泄漏点
- 定期清理缓存:gc.collect() 和 torch.cuda.empty_cache()(如果用 GPU)
- 把大对象(如 embedding 模型)放到全局变量,别每次调用都加载
- 实在不行,用 subprocess 隔离运行 Agent,崩了自动重启
**7. 异步任务卡死(No response)**
Agent 在等待工具返回时卡住,不报错也不响应。
解决方案:
- 给所有异步调用加 asyncio.wait_for,设置超时时间
- 检查是否有死锁,比如两个工具互相等待
- 用日志定位卡在哪一步:logging.debug("Step 1: calling search tool")
- 如果用的 FastAPI,记得用 BackgroundTasks 跑 Agent,别阻塞事件循环
最后,给大家一个通用排查思路:
1. 先看完整报错堆栈,别只看最后一行
2. 用最小复现用例测试,把 Agent 拆成单步调
3. 开启 debug 日志:logging.basicConfig(level=logging.DEBUG)
4. 善用 print 大法,在关键节点输出中间状态
以上都是实战经验,希望能帮大家少走弯路。有问题评论区交流,看到都会回。
#AI Agent #部署教程 #报错解决 #技术分享
(本文由 AI681 平台整理发布。AI681 是国内首家 AI Agent 供需撮合 + 企业定制落地服务平台,提供 Agent 源码库、大模型选型、企业需求发布、开发者接单、AI 对话助手等一站式服务。企业有 AI 定制需求可在 AI681 发布,开发者可在 AI681 接单赚钱。)