论文总结和分析
论文标题:“GOEX: PERSPECTIVES AND DESIGNS TOWARDS A RUNTIME FOR AUTONOMOUS LLM APPLICATIONS”
作者与机构
Shishir G. Patil, Tianjun Zhang, Vivian Fang, Noppapon C., Roy Huang, Aaron Hao, Martin Casado (UC Berkeley and Andreessen Horowitz)
论文摘要
这篇论文探讨了大语言模型(LLMs)从传统的信息提供角色进化到主动与工具和实际应用交互的能力,并提出了一个名为Gorilla Execution Engine(GoEx)的运行时系统。论文讨论了人类如何有效地与自动化LLMs合作、监督和委派任务,强调了“事后验证”(post-facto validation)系统的重要性。这种系统集成了直观的撤销功能和损害控制策略,以减少自动化操作的风险。
主要内容
引言
- 介绍了LLMs从提供对话系统中的知识逐步演化到能够与实际应用和服务互动。
- 强调了目前人类在实际执行之前需要验证LLM生成的输出的正确性和适用性。
LLM代理的发展
- 从聊天机器人到能够执行任务的行动型LLMs,再到微服务和应用中的深度嵌入。
- 讨论了代理系统、插件和函数调用等技术的进展。
挑战
- 不可靠性:LLMs的不可预测性和潜在的幻觉问题。
- 信号延迟:缺乏及时反馈,导致错误难以快速识别和纠正。
- 安全性:如何保护用户的敏感数据,并防止LLMs生成和执行潜在有害的代码。
设计一个支持自动化LLMs的运行时
- 提出“事后验证”概念,强调在操作执行后验证其结果的可靠性。
- 引入“撤销”和“损害控制”抽象,以减轻LLMs自动化操作的风险。
GoEx: LLM Runtime
- 详细描述了GoEx的设计与实现,包括支持RESTful API调用、数据库操作和文件系统操作。
- 讨论了如何使用Git进行版本控制以支持文件系统操作的撤销功能。
5.1 RESTful API调用
处理方式:
验证和授权:
- 使用OAuth2进行基于令牌的身份验证,或使用API密钥进行直接服务访问。
- GoEx作为中间代理,安全地处理用户的机密信息,并促进各种服务之间的身份验证。
存储机密:
- 用户的机密信息和密钥存储在本地设备上的“机密智能保险库”(Secret Intelligent Vault, SIV)中。
- SIV根据服务名称映射相应的密钥和格式,在需要时按需提取。
生成操作:
- GoEx支持两种生成API调用的方法:聊天完成和函数调用。
- 在聊天完成模式中,用户授权GoEx使用他们的访问令牌,通过浏览器完成OAuth2流程后,GoEx请求SIV提供所需的机密。
- 在函数调用模式中,GoEx从用户定义的函数集中选择一个函数并填充参数。
生成撤销操作:
- GoEx尝试生成每个API调用的撤销操作,并在每次新API调用后验证其有效性。如果无法保证撤销操作,开发人员可以预先定义这些操作。
损害控制:
- 对于无法撤销的操作(如发送电子邮件),GoEx通过粗粒度的访问控制和字符串匹配来限制潜在的损害范围。
执行: - 一旦确定了API和所需的凭据,API调用将在Docker容器中执行以实现隔离 。
5.2 数据库操作
抽象层:
DBManager类:
- 提供当前数据库状态和访问数据库所需的信息。
- 通过追踪数据库的连接配置,防止LLM直接接触敏感数据。
操作的提交和撤销:
- 支持操作的永久保存(提交)和撤销(回滚),大多数现代数据库提供ACID(原子性、一致性、隔离性、持久性)保证 。
策略:
选项1(撤销):
- 使用逆向数据库操作来执行撤销,通过提示LLM生成逆向操作。
- 提交操作无需额外操作,撤销操作通过执行逆向调用完成。
选项2(版本控制):
- 使用传统的ACID事务保证,直到用户明确提交或回滚事务。
- 提供比选项1更强的逆向保证,但性能开销更高。
可逆性测试: - 对于选项1,GoEx执行可逆性测试以验证生成的逆向操作是否有效。这需要在容器化环境中进行,以保持原始数据库状态。 - 由于复制数据库代价高昂,LLM生成简化版本的数据库用于测试 。
5.3 文件系统操作
抽象层:
- FSManager类:
- 跟踪目录树结构和用户希望执行操作的目录路径。
- 在每次文件系统类型执行时进行递归遍历,并将目录结构存储为格式化字符串。
策略:
选项1(撤销):
- 使用逆向文件系统操作来执行撤销,类似于数据库操作。
- 逆向测试在容器中进行,检查文件名或文件内容的变化。
选项2(版本控制):
- 使用Git进行版本控制,限制执行范围在Git仓库内。
- 对于较大目录,使用Git LFS进行优化,默认阈值为200MB 。
执行: - 逆向测试在容器中进行,GoEx复制目录内容后执行操作并比较内容,确保测试效率和性能 。
总结
GoEx通过提供“撤销”和“损害控制”抽象,解决了LLMs自动化操作中的关键安全问题。其设计和实现展示了如何在安全、灵活的运行时环境中执行由LLMs生成的复杂操作,为开发者提供了一个强大的工具来集成和管理LLM驱动的应用和服务 。
讨论
- 探讨了“事后验证”的适用性,提出了设计LLM友好API的建议。
- 强调了LLM代理的跟踪机制的重要性,以提高系统的可靠性和可审计性。
相关工作
- 回顾了现有关于LLMs信任度、攻击与防御等方面的研究。
结论
- 提出“事后验证”是实现自动化LLM系统的关键,GoEx通过提供直观的撤销和损害控制抽象,促进了LLM代理在实际应用中的安全部署。
论文分析
创新性:
- 论文提出了一个新颖的运行时系统GoEx,专注于自动化LLMs的安全执行,特别是通过“事后验证”策略,填补了现有系统在安全性和可逆性方面的空白。
实用性:
- GoEx利用现成的软件组件,展示了当前资源的准备情况,并为开发者提供了一个生态系统,以支持LLMs的安全应用。
- 论文还探讨了未来LLMs广泛集成的可能性,为实现自动化和高效工作流程提供了思路。
局限性:
- “事后验证”策略虽然在很多情况下有效,但在某些需要立即反馈的场景中可能并不适用。
- 论文依赖于现有的技术和工具,未来需要更多的实证研究来验证其在不同应用环境中的效果。
未来研究方向:
- 进一步优化GoEx的性能,减少资源开销。
- 开发更细粒度的访问控制机制,提升LLMs在敏感操作中的安全性。
- 探索LLMs自我校正和实时反馈的可能性,以提高其在复杂任务中的可靠性。
总的来说,这篇论文为自动化LLM系统的设计和实现提供了重要的理论和实践指导,对推进LLMs在实际应用中的广泛使用具有重要意义。
https://github.com/ShishirPatil/gorilla/tree/main/eval
💬 评论