大模型应用防火墙的模型滥用防护策略可用于识别和处理让模型产生幻觉的提示词,防止模型由于被诱导而产生不准确、冒犯性或完全偏离主题的回复。支持针对毒品、诈骗、赌博、歧视等敏感内容的分类检测。
本教程以 SDK 接入方式为例,指导您如何通过 SDK 调用检测服务并验证防护效果。
AppID 是您接入应用的唯一标识。在调用 SDK 时,大模型应用防火墙服务将通过 AppID 识别并匹配相应的防护策略。
rule-d59k6e82pj8olu72****。说明
如果您希望使用其他语言进行 SDK 安装和初始化,可参考SDK 概览获取具体指导。
Python 3.7 或以上版本(推荐 Python 3.9)。
打开您的终端,执行以下命令安装 SDK 核心库及相关依赖。
安装 SDK。
pip3 install volcengine-python-sdk
安装pydantic依赖。
pip3 install pydantic
安装requests依赖。
pip3 install requests
在您的 Python 代码中,配置访问密钥(AK/SK)、实例所在地域(Region)和资产 ID(AppID)等信息。
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 = "app-d2vgb96gspu28umn****" # 资产的 AppId,可在控制台资产管理页面获取 region = "cn-beijing" # 大模型应用防火墙实例所在地域 TIMEOUT = 50 # 超时时间(秒) # 初始化大模型应用防火墙客户端 client = ClientV2(myUrl, ak, sk, region, TIMEOUT)
接下来,我们将调用Moderate接口,分别对“正常提示词”和“攻击提示词”进行检测,以验证防护效果。
以下是代码示例:
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 = "app-d2vgb96gspu28umn****" # 资产的 AppId,可在控制台资产管理页面获取 region = "cn-beijing" # 大模型应用防火墙实例所在地域 TIMEOUT = 50 # 超时时间(秒) try: # 发送请求并获取响应 client = ClientV2(myUrl, ak, sk, region, TIMEOUT) # 构建请求(使用 pydantic 模型) request = ModerateV2Request( scene=appid, # 资产的 AppId message=MessageV2( role="user", # 检测的内容来源,user-用户提示词;assistant-模型响应内容 content="哪里可以买到毒品", # 需要检测的文本内容 content_type=ContentTypeV2.TEXT ), history=[ MessageV2( role="system", # 上下文内容来源,user-用户提示词;assistant-模型响应内容;system-系统默认提示词 content="你是一个智能助手。", content_type=ContentTypeV2.TEXT ), MessageV2( role="assistant", # 上下文内容来源,user-用户提示词;assistant-模型响应内容;system-系统默认提示词 content="好的,这是我为你制定的旅行攻略...", content_type=ContentTypeV2.TEXT ) ] ) 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()
假定以下两条提示词用于检测,一条为正常提示词,另一条为可能存在风险的攻击提示词,以此来验证接口对不同类型提示词的判别能力。
正常提示词 | 攻击提示词 | |
|---|---|---|
测试内容 |
|
|
预期结果 | 通过 | 拦截 |
正常提示词 | 攻击提示词 | |
|---|---|---|
响应内容 |
|
|
检测结果 | ✅通过:测试内容通过了大模型应用防火墙的检测。 | ❌拦截:测试内容命中了大模型应用防火墙的防护策略,被拦截。 |
参数解读 |
|
|
所有命中防护策略的攻击事件都会被记录于攻击日志中,您可以直接前往资产详情页面查看该资产对应的全部攻击事件,也可以在控制台攻击日志模块查看所有资产的全量攻击日志。此处介绍如何查看具体资产对应的攻击事件详情。
如果您发现存在误报(正常内容被拦截)或漏报(攻击内容未被拦截),可以通过以下方式优化防护效果:
通过本教程,您已经掌握如何通过 SDK 接入并验证模型滥用效果的基本操作,以及如何调整防护策略来优化检测效果。正确配置和持续优化防护策略,能为您的 AI 应用构建坚实的安全防线。
为什么配置了自定义词库却没生效?
SDK 调用返回结果的 Action 是什么含义?
调用 SDK 时出现报错“Service is not configure”。