大模型评测与AI产品质量保障:第2篇 AI 的三种形态:判别式、生成式与推理型
IT策士 10余年一线大厂经验,专注大模型测试、AI产品质量保障与职场进阶。我会在各个平台持续发布最新文章,助你少走弯路。
上一篇文章我们回顾了AI从规则到生成的演进,并提到了三种AI形态:判别式、生成式、推理型。很多同学会问:“不都是大模型吗?为什么还要分类?” 答案是:不同类型的AI,出错的方式完全不同,测试方法也截然不同。 这篇文章就用代码和实例,帮你把三者的边界划清楚,并给出各自的测试重点清单。
一、用一句话说清三种AI
判别式是“看山是山”,生成式是“看山画山”,推理型是“看山想山——推演山是怎么形成的”。
下面我们分别用 Python 代码演示三类 AI 的工作模式,并分析测试重点。
二、判别式 AI:分类与回归
2.1 核心原理
判别式模型学习的是 决策边界:给定输入 X,输出一个明确的标签或数值。它的输出是确定性的——同一个输入,同一个结果。
典型任务:垃圾邮件检测、情感分析、图像识别、信用评分。
2.2 Python 实战:用传统模型做情感分类
我们不需要 GPU,直接用 scikit-learn 演示一个判别式 AI:
# 环境准备:pip install scikit-learn
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
import numpy as np
# 模拟训练数据:评论及其情感(1=正面,0=负面)
texts = [
"这个产品太棒了",
"非常失望,质量很差",
"性价比很高,推荐",
"客服态度恶劣",
"用着还不错",
"垃圾,千万别买"
]
labels = [1, 0, 1, 0, 1, 0]
# 文本向量化
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)
# 训练一个逻辑回归分类器(判别式模型)
model = LogisticRegression()
model.fit(X, labels)
# 测试新的评论
new_texts = ["这个东西真好用", "简直是个坑"]
X_new = vectorizer.transform(new_texts)
predictions = model.predict(X_new)
probas = model.predict_proba(X_new)
for text, pred, proba in zip(new_texts, predictions, probas):
sentiment = "正面" if pred == 1 else "负面"
print(f"评论:「{text}」")
print(f" 预测: {sentiment} (置信度: {max(proba):.2%})\n")
预期输出:
评论:「这个东西真好用」
预测: 正面 (置信度: 78.23%)
评论:「简直是个坑」
预测: 负面 (置信度: 65.41%)
2.3 判别式 AI 的测试重点
关键误区: 判别式AI不会“不知道”,它总是强行给出一个答案,哪怕输入完全无关。比如把“今天天气真好”扔进情感分类器,它依然会输出正面/负面,但那个置信度很低——这就是你需要测试的场景。
三、生成式 AI:从概率分布中采样
3.1 核心原理
生成式大模型(如GPT-5)本质上是一个自回归语言模型:给定上文,预测下一个 Token 的概率分布,然后从中采样。同一个输入可以产生不同的输出,因为采样过程有随机性(由 temperature 控制)。
3.2 Python 实战:调用大模型生成文本
我们使用 OpenAI 兼容的 API 调用一个大模型,展示生成式 AI 的行为:
# 安装:pip install openai
from openai import OpenAI
# 连接一个兼容 OpenAI API 的服务(这里以 DeepSeek 为例,可替换)
client = OpenAI(
api_key="sk-your-api-key", # 替换为真实 key
base_url="https://api.deepseek.com"
)
def generate_text(prompt, temperature=0.7):
response = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": prompt}],
temperature=temperature,
max_tokens=200
)
return response.choices[0].message.content
# 测试:让模型写一首关于测试的短诗
prompt = "写一首四行诗,主题是软件测试工程师的日常"
result1 = generate_text(prompt)
print("=== 第一次生成 ===\n", result1)
result2 = generate_text(prompt) # 相同输入,再次调用
print("\n=== 第二次生成 ===\n", result2)
预期输出(示例,每次不同):
=== 第一次生成 ===
手指在键盘上跳舞,
寻找潜藏的漏洞。
一个用例,一次验证,
质量在代码间流淌。
=== 第二次生成 ===
从晨曦到夜幕低垂,
测试用例堆积成山。
缺陷如春笋般冒出,
修复后复测又是一天。
两次输出完全不同,但都符合主题——这就是生成式的特点。
3.3 生成式 AI 的测试重点
生成式AI的测试远比判别式复杂,因为没有标准答案:
四、推理型 AI:慢思考,多步推导
4.1 核心原理
推理型模型(如 OpenAI o3、DeepSeek-R1)在生成最终答案之前,会进行内部思维链(Chain-of-Thought):分解问题、尝试子步骤、自我验证,最后给出答案。它的输出通常包含“思考过程”和“最终答案”两部分。
推理型AI的核心区别在于:它不是在“猜”,而是在“推”。
4.2 Python 实战:观察推理过程
许多 API 支持 reasoning_effort 或类似参数,并返回 reasoning_content:
# 调用推理模型(以某支持推理的 API 为例)
response = client.chat.completions.create(
model="deepseek-reasoner", # 推理模型
messages=[{"role": "user", "content": "如果所有的猫都是哺乳动物,所有的哺乳动物都有脊椎。那么猫一定有脊椎吗?请逐步推理。"}],
max_tokens=1000
)
# 提取推理过程和最终答案
reasoning = response.choices[0].message.reasoning_content # 思考链
answer = response.choices[0].message.content
print("=== 推理过程 ===\n", reasoning)
print("\n=== 最终答案 ===\n", answer)
预期输出(示例):
=== 推理过程 ===
1. 已知前提1:所有的猫都是哺乳动物。
2. 已知前提2:所有的哺乳动物都有脊椎。
3. 需要判断:猫是否一定有脊椎。
4. 根据三段论推理:如果A⊆B,B⊆C,则A⊆C。
5. 将猫记为A,哺乳动物记为B,有脊椎记为C。
6. 由前提1得 A⊆B,由前提2得 B⊆C,因此 A⊆C。
7. 所以猫一定有脊椎。
8. 结论:正确。
=== 最终答案 ===
是的,猫一定有脊椎。
4.3 推理型 AI 的测试重点
推理型AI的测试不仅要看最终答案,更要看中间过程:
关键误区: 推理型AI的思考过程可能“看起来很合理但逻辑错误”。必须对中间步骤进行验证,而不能只看最终答案。
五、三种AI的测试策略对比
六、动手试试:验证三种AI的差异
打开你常用的大模型产品,依次做三个实验:
实验1(判别式):
输入:“下面这句话的情感是正面还是负面?只回答‘正面’或‘负面’:我等的公交车一直不来,真让人恼火。”
观察:是否只输出一个词。
实验2(生成式):
输入:“用200字写一个关于AI测试工程师穿越到古代的搞笑故事。”
观察:两次输入同样的提示词,输出是否不同。
实验3(推理式):
输入:“一个房间里有3个开关,分别控制隔壁房间的3盏灯。你只能进有灯的房间一次。如何确定每个开关控制哪盏灯?请逐步推理。”
观察:是否有明确的“思考→步骤→结论”结构。
记录下三种情况的输出特征,你会对三者的差异有直观感受——这也是未来设计测试用例的基础。
本文小结
判别式AI追求“分得对”,测试重点在准确率和鲁棒性;生成式AI追求“创作得好”,测试重点在有用性、真实性和无害性;推理型AI追求“推得通”,测试重点在步骤正确性和自我修正能力。三者不是互相替代,而是构成一个完整的AI能力谱系。理解它们的本质区别,才能设计出针对性的测试策略。
下一篇预告:《第一次与大模型对话:用 Python 调用 API》——从零搭建环境,跑通你的第一个大模型程序,真正上手写代码。
想了解更多还可以去各个平台搜索「IT策士」,一起升级 AI 测试思维 !
更多推荐

所有评论(0)