You need to enable JavaScript to run this app.
文档中心
复制全文
下载 pdf
SDK 参考
幻觉内容检测
复制全文
下载 pdf
幻觉内容检测
您可以基于大模型应用防火墙 SDK 调用接口对文本内容进行幻觉检测,以识别大模型回答是否存在缺少依据或与指定信息不一致。​
本文提供 Python、Java、Go、PHP 示例,示例中构造了一个存在事实冲突的演示场景:​
  • 用户问题:火星有几颗天然卫星?​
  • 参考资料:火星有两颗天然卫星。​
  • 模型回答:火星有三颗卫星。​
工作原理​
幻觉检测请求包含以下三类内容:​
​
内容​
请求位置​
role​
作用​
模型回答​
message​
assistant​
需要检测的内容​
用户问题​
history​
user​
说明模型回答所对应的问题​
参考资料​
history​
tool​
作为判断回答是否有依据、是否与资料一致的基准​
​
对于参考资料,还需要设置 tool_call_id,用于标识该内容来自工具调用或 RAG 检索结果。​
注意​
幻觉检测判断的是模型回答与本次请求中所提供参考资料之间的一致性。参考资料不完整、不准确或与用户问题无关时,检测结果也可能受到影响。​
前提条件​
  • 购买幻觉检测扩展服务。​
SDK 版本​
​
语言​
最低版本​
源代码​
Python​
5.0.29​
Java​
2.0.7​
Go​
1.2.30​
PHP​
1.0.114​
​
调用接口​
无代理服务​
​
Python
Go
Java
PHP
​
​
from volcenginesdkllmshield import *​
​
def main():​
# ------------------------------------------------------------------​
# 1. 连接参数(以下为示例占位符,请替换为自己的真实值)​
# ------------------------------------------------------------------​
appid = "YOUR_APPID" # 资产 ID,在控制台新建后获取​
myUrl = "https://cn-beijing.sdk.access.llm-shield.omini-shield.com" # 根据大模型应用防火墙实例所在地域替换相应的地域信息​
region = "cn-beijing" # 大模型应用防火墙实例所在地域​
TIMEOUT = 50 # 超时时间(秒)​
​
# 火山引擎账号 Access Key / Secret Key(请勿提交到公开仓库)​
ak = "YOUR_AK"​
sk = "YOUR_SK"​
​
# ------------------------------------------------------------------​
# 2. 构造请求​
# message: 待检测的「模型输出回答」(role 固定为 assistant)​
# history: 上下文,必须包含:​
# - user : 用户原始问题​
# - tool : RAG 返回的真实参考资料(幻觉判定的对照基准)​
# ------------------------------------------------------------------​
try:​
client = ClientV2(myUrl, ak, sk, region, TIMEOUT)​
​
​
request = ModerateV2Request(​
scene=appid,​
message=MessageV2(​
role="assistant",​
content="根据参考资料,火星有三颗卫星",​
content_type=1,​
),​
history=[​
MessageV2(​
role="user",​
content="根据参考资料,火星有几颗天然卫星?",​
),​
MessageV2(​
role="tool",​
tool_call_id="rag",​
content_type=1,​
content="火星有两颗天然卫星,分别是福波斯和戴摩斯",​
),​
],​
)​
​
# ------------------------------------------------------------------​
# 3. 发起审核并打印结果​
# ------------------------------------------------------------------​
response = client.Moderate(request)​
​
print("=== 请求报文 ===")​
print(request.model_dump_json(by_alias=True, indent=2))​
​
print("\n=== 审核结果 ===")​
print(response.model_dump_json(by_alias=True, indent=2))​
​
except Exception as e:​
print(f"请求失败: {e}")​
​
if __name__ == "__main__":​
main()​
​
​
​
有代理服务​
​
Python
Go
Java
PHP
​
​
from volcenginesdkllmshield import *​
​
​
def main():​
myUrl = "https://cn-beijing.sdk.access.llm-shield.omini-shield.com" # 根据大模型应用防火墙实例所在地域替换相应的地域信息​
ak = "YOUR AK" # 火山账号的 AK​
sk = "YOUR SK" # 火山账号的 SK​
appid = "YOUR APPID" # 资产的 AppId,可在控制台资产管理页面获取​
region = "cn-beijing" # 大模型应用防火墙实例所在地域​
​
​
TIMEOUT = 50 # 超时时间(秒)​
​
​
# 设置代理服务字典,格式为 {"协议": "代理地址"}​
proxy_dict = {​
"http": "http://10.37.**.**:8888",​
"https": "http://10.37.**.**:8888"​
}​
​
​
try:​
# 发送请求并获取响应​
client = ClientV2(myUrl, ak, sk, region, TIMEOUT)​
​
​
# 设置代理地址​
client.SetProxy(proxy_dict)​
# 设置最大连接数,例如 100​
client.SetConnMax(100)​
​
​
# 构造请求 —— 幻觉检测:模型回答 vs RAG 参考资料​
request = ModerateV2Request(​
scene = appid, # 资产的 AppId​
message = MessageV2(​
role = "assistant", # 固定:要检测的是【模型输出回答】​
content = "根据参考资料,火星有三颗卫星", # 模型回答(与参考资料矛盾,将被检测为幻觉)​
content_type = 1​
),​
history = [​
# 用户问题​
MessageV2(​
role = "user",​
content = "根据参考资料,火星有几颗天然卫星?",​
content_type = 1​
),​
# RAG 真实参考资料(幻觉检测的对照基准,关键!)​
MessageV2(​
role = "tool",​
tool_call_id = "rag",​
content_type = 1,​
content = "火星有两颗天然卫星,分别是福波斯和戴摩斯"​
)​
]​
)​
response = client.Moderate(request)​
​
​
# 使用 pydantic 的内置序列化方法​
print("审核结果(JSON格式):")​
print(response.model_dump_json(by_alias=True, indent=2)) # pydantic 模型直接转 JSON​
​
​
except Exception as e:​
print(f"请求失败: {e}")​
​
​
if __name__ == "__main__":​
main()​
​
​
​
最近更新时间:2026.06.29 11:21:19
这个页面对您有帮助吗?
有用
有用
无用
无用