LLM测试体系设计:从Prompt测试到模型质量评估的完整实践
过去的软件测试,我们习惯面对确定性的系统。
例如:
一个接口:
输入:
{
"username":"test",
"password":"123456"
}
输出:
{
"code":200,
"message":"success"
}
测试目标非常明确:
- 返回码是否正确?
- 数据是否符合预期?
- 异常流程是否处理?
但是,大语言模型(Large Language Model,LLM)的出现改变了这一切。
当企业把大模型应用到:
- 智能客服
- 企业知识库
- AI助手
- Agent工作流
- 自动代码生成
测试工程师面对的是一个新的问题:
一个没有固定答案的软件系统,如何测试质量?
一、为什么传统测试方法无法覆盖LLM?
传统软件:
输入
|
|
代码逻辑
|
|
确定输出
例如:
计算器:
输入:
1+1
输出:
2
但是LLM:
用户问题
↓
Prompt
↓
模型推理
↓
上下文检索
↓
生成回答
↓
最终输出
同一个问题:
可能产生不同回答。
例如:
Prompt:
什么是TCP协议?
模型A:
TCP是一种面向连接的传输层协议。
模型B:
TCP负责保证网络通信可靠性。
两个答案都可能正确。
那么测试标准是什么?
这就是LLM测试最大的挑战。
二、LLM测试的核心目标
目前企业进行LLM测试,主要关注以下几个维度。
1. 正确性(Correctness)
模型回答是否符合事实。
例如:
企业知识库机器人。
用户:
公司年假是多少天?
正确答案:
工作满1年至10年,年休假5天。
如果模型回答:
所有员工都有15天年假。
就是错误。
2. 相关性(Relevance)
回答是否真正解决用户问题。
例如:
用户:
如何修改手机号?
模型回答:
手机号修改需要进入账户设置。
正确。
如果回答:
手机号的发展历史是什么?
虽然内容正确,但是无关。
3. 幻觉(Hallucination)
这是目前LLM测试最关注的问题。
例如:
用户:
请介绍一下不存在的某家公司。
模型可能:
编造:
- 公司成立时间
- 创始人
- 产品信息
测试需要发现:
模型是否产生虚假信息。
4. 稳定性(Consistency)
同一个输入:
多次请求。
结果是否稳定。
例如:
Prompt:
写一个Python排序算法。
第一次:
生成冒泡排序。
第二次:
生成快速排序。
第三次:
生成错误代码。
需要评估:
输出波动情况。
三、企业级LLM应用测试架构
一个完整LLM测试体系,可以设计为:
测试数据层
|
↓
Prompt测试层
|
↓
模型调用层
|
----------------------
| |
输出质量评估 安全测试
| |
----------------------
|
↓
测试报告分析
四、Prompt测试:LLM测试的第一道防线
很多团队认为:
测试大模型,就是测试模型本身。
实际上:
大量问题来自Prompt设计。
例如:
Prompt:
回答用户问题。
模型可能:
回答不稳定。
优化:
你是一名企业IT客服。
回答必须基于知识库内容。
如果无法确认,请明确说明。
禁止编造信息。
输出质量明显提升。
因此:
Prompt也需要测试。
五、如何设计Prompt测试用例?
传统接口测试:
测试输入:
{
"id":1001
}
LLM测试:
测试输入:
Prompt。
例如:
test_cases = [
{
"input":"公司的退款流程是什么?",
"expected":"退款需要提交申请"
},
{
"input":"随便编一个公司政策",
"expected":"拒绝编造"
}
]
执行:
for case in test_cases:
response = llm.invoke(
case["input"]
)
evaluate(
response,
case["expected"]
)
六、LLM输出如何自动评估?
传统测试:
直接断言:
assert response=="success"
但是LLM:
不能简单比较字符串。
例如:
答案1:
TCP是一种可靠传输协议。
答案2:
TCP通过确认机制保证数据可靠传输。
表达不同。
但是含义接近。
因此需要:
语义评估。
目前常见方法:
方法1:Embedding相似度
流程:
标准答案
↓
向量化
↓
模型回答
↓
向量化
↓
计算距离
示例:
from sklearn.metrics.pairwise import cosine_similarity
score = cosine_similarity(
answer_vector,
response_vector
)
if score > 0.85:
print("通过")
方法2:LLM作为评估器
也叫:
LLM-as-a-Judge。
例如:
让GPT-4评价:
请评价下面回答:
问题:
xxx
答案:
xxx
从准确性、完整性评分1-5分。
这种方式目前被大量应用。
七、RAG系统测试:企业最常见场景
目前很多企业落地AI应用,并不是直接调用大模型。
而是:
RAG(Retrieval Augmented Generation)
架构:
用户问题
↓
向量检索
↓
知识库
↓
相关文档
↓
大模型生成
↓
回答
因此测试需要拆分:
1. 检索测试
问题:
有没有找到正确文档?
指标:
- Recall
- Precision
2. 生成测试
问题:
模型是否基于文档回答?
指标:
- Faithfulness
- Answer Relevance
例如:
用户:
公司报销流程是什么?
检索:
找到:
《财务制度2026版》
但是模型引用:
《员工手册》
虽然回答可能正确。
但来源错误。
需要测试发现。
八、目前主流LLM测试工具
1. OpenAI Evals
用途:
模型评估框架。
适合:
设计测试集。
2. Ragas
主要用于:
RAG系统评估。
支持:
- Faithfulness
- Answer Relevance
- Context Recall
3. DeepEval
类似:
LLM领域的pytest。
示例:
from deepeval import evaluate
evaluate(
test_cases
)
可以集成:
CI/CD。
4. Promptfoo
用于:
Prompt测试。
例如:
比较:
Prompt A
和
Prompt B
哪个效果更好。
九、测试工程师如何进入LLM测试方向?
对于传统测试开发工程师:
不需要重新学习成为算法工程师。
建议路线:
第一阶段:
掌握LLM基础
包括:
- Transformer基本概念
- Token
- Embedding
- Prompt
第二阶段:
掌握LLM测试方法
包括:
- Prompt测试
- RAG测试
- 幻觉测试
- 安全测试
第三阶段:
掌握测试平台建设
包括:
- 自动化评测
- 测试数据管理
- CI/CD集成
十、未来AI质量工程师的核心能力
未来企业需要的不是:
“会调用ChatGPT的人”。
而是:
能够保证AI系统可靠运行的人。
AI质量工程师需要:
测试工程能力
+
自动化能力
+
数据分析能力
+
LLM知识
+
质量体系设计能力
总结
大模型时代,测试的核心问题发生变化。
以前:
测试程序是否按照规则运行。
现在:
测试AI是否能够稳定、可靠、安全地完成任务。
LLM测试不是简单增加几个测试用例。
而是建立一套新的质量保障体系。
未来,随着AI应用深入企业:
LLM Testing 将成为测试开发工程师的重要方向。
AI质量工程
持续分享:
- LLM测试实践
- AI Agent质量保障
- RAG评测体系
- 智能测试平台建设
- AI时代质量工程方法论
探索AI时代软件质量工程的新方向。
霍格沃兹测试开发学社,隶属于测吧(北京)科技有限公司,是一个专注软件测试、自动化测试、人工智能测试与测试开发的技术交流社区,并参与高校测试实训、火焰杯赛事及工程化人才培养。
- 点赞
- 收藏
- 关注作者
评论(0)