计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-25
1. PromSec: Prompt Optimization for Secure Generation of Functional Source Code with Large Language Models (LLMs)
M Nazzal, I Khalil, A Khreishah, NH Phan - arXiv preprint arXiv:2409.12699, 2024
https://arxiv.org/pdf/2409.12699
PromSec: 使用大型语言模型(LLMs)生成功能源代码的提示优化以确保安全
摘要
本文介绍了一种名为 PromSec 的算法,它针对大型语言模型(LLMs)在生成源代码时存在的安全漏洞问题,提出了一种提示优化方法。LLMs 能够生成高质量的源代码,但它们在训练过程中也可能会复制不安全的编程实践,导致生成的代码存在安全漏洞。PromSec 结合了生成对抗图神经网络(gGAN)和 LLM 代码生成,通过迭代循环优化提示,以生成既安全又功能完备的代码。该算法通过新的对比学习方法训练 gGAN,将代码清理和生成循环构建为一个双目标优化问题,显著减少了 LLM 推理的次数,提高了成本效益。实验结果表明,PromSec 能有效提升代码安全性,同时保持其预期功能。
创新点
- 双目标优化:将代码安全性和功能保持作为两个优化目标。
- 生成对抗图神经网络(gGAN):用于修复和减少生成代码中的安全漏洞。
- 对比学习方法:在 gGAN 中引入新的对比学习方法,优化代码生成过程。
- 迭代交互循环:通过 LLM 和 gGAN 之间的迭代交互,逐步优化代码生成。
- 跨模型和语言的可转移性:优化后的提示可跨不同的 LLMs 和编程语言使用。
算法模型
PromSec 算法包括以下关键组件:
- gGAN:一个生成对抗网络,用于在保持代码功能的同时修复安全漏洞。
- LLM:用于生成代码的大规模语言模型。
- 对比损失函数:用于训练 gGAN,确保生成的代码图既安全又保持功能。
- 迭代优化过程:通过 LLM 和 gGAN 的迭代交互,不断优化代码和提示。
实验效果
- 安全性提升:PromSec 显著减少了代码中的常见弱点枚举(CWEs)数量。
- 功能保持:通过代码图相似性度量,PromSec 生成的代码保持了原始代码的功能。
- 成本效益:PromSec 减少了 LLM 查询次数和安全分析成本,提高了操作效率。
- 跨模型和语言的可转移性:PromSec 优化的提示在不同的 LLMs 和编程语言中具有较高的可转移性。
重要数据与结论
- PromSec 在处理 100 个测试代码库时,能够在 20 次迭代内解决大多数 CWEs。
- 在与基线方法(BL1 和 BL2)的比较中,PromSec 在安全性、功能保持和成本效益方面均表现更优。
- PromSec 在处理未在训练集中出现的 CWEs 时,仍能展现出一定的安全性修复能力。
推荐阅读指数:
★★★★☆
推荐理由
- 实用性:PromSec 解决了实际开发中的一个重要问题,即如何在利用 LLMs 生成代码的同时确保代码的安全性。
- 创新性:该研究提出了一种新颖的方法,通过优化提示来提高代码的安全性,而不是直接修改模型本身。
2. Exploring Large Language Models for Product Attribute Value Identification
K Sabeh, M Kacimi, J Gamper, R Litschko, B Plank - arXiv preprint arXiv:2409.12695, 2024