LangChain Go安全更新:及时修复漏洞

【免费下载链接】langchaingo LangChain for Go, the easiest way to write LLM-based programs in Go 【免费下载链接】langchaingo 项目地址: https://gitcode.com/GitHub_Trending/la/langchaingo

概述

LangChain Go近期发布了重要安全更新,修复了影响agents系统的三个高优先级问题。这些修复显著提升了使用开源模型(如llama2/llama3)和OpenAI模型时的可靠性和安全性,确保AI代理能够正确处理工具调用并生成准确结果。

已修复的关键问题

1. Agent Executor最大迭代次数Bug (#1225)

问题描述:使用llama2/llama3等模型的代理即使已经得出答案,仍会持续运行直到达到最大迭代次数,导致资源浪费和响应延迟。

根本原因:MRKL代理的parseOutput函数对"Final Answer:"格式要求过于严格,而部分模型无法始终生成这一固定短语。

修复方案:在agents/mrkl.go中增强了parseOutput函数,实现:

  • 支持"final answer"的大小写不敏感匹配
  • 识别"the answer is:"和"answer:"等替代表述
  • 兼容灵活的空格和标点符号
  • 保持与原始格式的向后兼容性

2. OpenAI Functions Agent多工具调用错误 (#1192)

问题描述:OpenAI Functions Agent在调用多个工具时仅处理第一个调用,导致后续工具调用被忽略并产生错误。

根本原因ParseOutput函数仅处理choice.ToolCalls[0],未遍历所有工具调用。

修复方案:更新agents/openai_functions_agent.go中的ParseOutputconstructScratchPad函数,实现:

  • 处理响应中的所有工具调用
  • 正确在临时存储区(scratchpad)中分组并行工具调用
  • 准确处理多个工具的返回结果

3. Ollama代理与工具兼容性问题 (#1045)

问题描述:Ollama模型与代理结合使用时因输出格式不一致和缺乏原生函数调用支持而失败。

根本原因:Ollama不具备OpenAI式的原生函数/工具调用能力,且不同模型生成的响应格式差异较大。

修复方案

  • 应用修复#1中改进的MRKL解析器
  • 创建全面的文档和最佳实践指南
  • 添加Ollama模型提示工程指导

新增文件:agents/ollama_agent_guide.md - 包含示例的完整使用指南

测试与验证

运行测试套件

chmod +x test_all_fixes.sh
./test_all_fixes.sh

运行专项测试

# 测试代理执行器改进
go test -v ./agents -run TestImprovedFinalAnswerDetection

# 测试OpenAI函数代理
go test -v ./agents -run TestOpenAIFunctionsAgent

# 测试完整代理套件
go test -race ./agents/...

安全修复影响范围

这些修复显著提升了以下场景的可靠性:

  • 通过Ollama使用开源模型(llama2、llama3、mistral等)
  • OpenAI模型的多工具调用功能
  • 任何可能存在输出格式轻微变化的LLM集成

向后兼容性

所有修复均保持完全向后兼容性:

  • 原始"Final Answer:"格式仍然有效
  • 单工具调用功能不受影响
  • 现有测试继续通过

升级建议

  1. Ollama用户:参考ollama_agent_guide.md获取最佳实践
  2. OpenAI用户:多工具调用现已无缝工作
  3. 一般用户:建议将模型温度参数设置为0.2-0.3以获得更一致的代理行为

代码质量保证

  • ✅ 所有测试通过
  • ✅ 无竞态条件(go test -race验证)
  • ✅ 保持向后兼容性
  • ✅ 遵循Go最佳实践
  • ✅ 内联注释完善文档

后续计划

  1. 为每个修复创建独立PR
  2. 添加与实际LLM提供商的集成测试
  3. 更新文档以反映这些改进
  4. 考虑添加更多代理示例

通过及时应用这些安全更新,您可以确保LangChain Go应用程序在处理AI代理时更加安全、可靠且高效。建议所有用户尽快更新到最新版本。

【免费下载链接】langchaingo LangChain for Go, the easiest way to write LLM-based programs in Go 【免费下载链接】langchaingo 项目地址: https://gitcode.com/GitHub_Trending/la/langchaingo

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐