You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更高效判断ChatGPT API是否返回未知或模糊答复?

检测ChatGPT API不确定答复的更优方法

方法1:语义相似度匹配

基于预训练语义模型,计算响应文本与典型“不确定”类表述的语义相似度,能覆盖更多表述变体,比简单字符串匹配更灵活。

示例代码:

from sentence_transformers import SentenceTransformer, util
import openai

# 初始化语义匹配模型
model = SentenceTransformer('all-MiniLM-L6-v2')
# 定义各类不确定表述
uncertain_phrases = ["我不知道", "我不确定", "无法回答", "暂无相关信息", "不太清楚"]
# 生成表述的语义嵌入
uncertain_embeddings = model.encode(uncertain_phrases, convert_to_tensor=True)

# OpenAI API调用
openai.api_key = 'YOUR_API_KEY'
messages = [
    {'role': 'system', 'content': '你是一个乐于助人的助手。'},
    {'role': 'user', 'content': '法国的首都是哪里?'}
]
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=messages
)
generated_message = response['choices'][0]['message']['content'].strip()

# 计算语义相似度并判断
message_embedding = model.encode(generated_message, convert_to_tensor=True)
cos_scores = util.cos_sim(message_embedding, uncertain_embeddings)[0]
max_score = cos_scores.max().item()
# 设置相似度阈值(可根据需求调整)
if max_score >= 0.6:
    print("ChatGPT对答案不确定")
else:
    print("ChatGPT给出了明确答复")

方法2:让AI主动输出置信标识

在系统提示词中明确要求AI在回答时附带“是否知晓答案”的固定格式标识,直接提取标识即可,准确率最高。

示例代码:

import openai

openai.api_key = 'YOUR_API_KEY'
messages = [
    {'role': 'system', 'content': '你是一个乐于助人的助手。回答问题时,必须在结尾用固定格式标注状态:[STATUS: KNOWN] 或 [STATUS: UNKNOWN],不确定答案则标注UNKNOWN。'},
    {'role': 'user', 'content': 'XX星球的首都是哪里?'}
]
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=messages
)
generated_message = response['choices'][0]['message']['content'].strip()

# 提取状态标识判断
if "[STATUS: UNKNOWN]" in generated_message:
    print("ChatGPT对答案不确定")
elif "[STATUS: KNOWN]" in generated_message:
    print("ChatGPT给出了明确答复")
else:
    print("未识别到状态标识,需检查提示词或响应内容")

方法3:扩展正则匹配

针对中文场景下的各类不确定表述编写正则表达式,覆盖更多语言变体,比简单字符串匹配覆盖范围更广。

示例代码:

import re
import openai

openai.api_key = 'YOUR_API_KEY'
messages = [
    {'role': 'system', 'content': '你是一个乐于助人的助手。'},
    {'role': 'user', 'content': 'XX星球的首都是哪里?'}
]
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=messages
)
generated_message = response['choices'][0]['message']['content'].strip()

# 定义匹配不确定表述的正则规则
uncertain_pattern = re.compile(r'(我不知道|我不确定|无法回答|暂无相关信息|不太清楚|没有相关知识|无法给出答案)', re.IGNORECASE)
if uncertain_pattern.search(generated_message):
    print("ChatGPT对答案不确定")
elif not generated_message:
    print("ChatGPT未生成有效响应")
else:
    print("ChatGPT给出了明确答复")

内容的提问来源于stack exchange,提问作者TaeWoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:32:52