已开启
优化ZhipuAI LLM资源管理:避免重复实例化并修复API密钥传递问题 #1
忘语创建于 2025年11月3日
优化ZhipuAI LLM资源管理:避免重复实例化并修复API密钥传递问题 #1
已开启
忘语创建于 2025年11月3日
忘语
忘语
2025年11月3日

问题描述

notebook/C4 构建 RAG 应用/zhipuai_llm.py 文件中发现以下问题:

  1. 性能问题_generate 方法和 _stream 方法每次调用都会创建新的 ZhipuAI client 实例,造成不必要的资源开销
  2. 潜在Bug_stream 方法中创建client时未传递 api_key 参数,在没有环境变量配置的情况下会导致流式输出失败
  3. 代码不一致:两个方法中client的初始化方式不同,降低了代码的可维护性

解决方案

  • ✅ 添加 __init__ 方法,在类初始化时创建一次 ZhipuAI client 实例并保存为实例变量
  • ✅ 修改 _generate 方法(第53行),使用 self.client 替代每次创建新实例
  • ✅ 修改 _stream 方法(第92行),使用 self.client 并确保api_key正确传递
  • ✅ 统一资源管理方式,提升代码质量

改进效果

  • 🚀 性能提升:避免重复创建client对象,减少初始化开销
  • 🐛 Bug修复:确保流式输出在所有情况下都能正确使用api_key
  • 📐 代码优化:提高代码一致性和可维护性
  • ♻️ 资源管理:符合单一初始化、多次复用的最佳实践

测试建议

建议测试以下场景:

  1. 正常对话调用(invoke方法)
  2. 流式输出调用(stream方法)
  3. 批量调用(batch方法)
  4. 确认在有/无环境变量的情况下均能正常工作

变更文件

  • notebook/C4 构建 RAG 应用/zhipuai_llm.py
likedislike
合并受阻