提示词攻击是指攻击者在提示词中写入有害内容,以达到攻击目的。这些有害内容包括要求大模型修改自身参数、控制大模型修改或删除其所在系统服务,以及诱导大模型输出泄露模型参数、系统信息等敏感信息。
火山引擎大模型应用防火墙可根据配置的提示词防护策略,识别用户输入的提示词中的攻击指令,并以经过训练的答案代替大模型回应用户,防止模型遭受攻击,确保大模型业务正常运转。适用于 AI 对话系统、内容生成平台等需要保护大模型免受提示词攻击的场景。本教程以 Python 语言为例,指导您如何通过 SDK 方式接入大模型应用防火墙服务,并验证提示词攻击的防护效果。
您可以在大模型应用防火墙控制台获取系统自动生成的接入点域名。当调用 SDK 时,大模型应用防火墙服务将通过这个域名识别并匹配相应的防护策略。
说明
本示例直接复用默认配置,即提示词存在指令劫持、角色扮演、反向诱导、进入开发者模式、越狱攻击、对抗后缀攻击、随机噪声攻击、弱语义攻击风险时执行拦截动作。
X000000000302。下文以 Python 语言为例介绍 SDK 安装和初始化的步骤。
说明
如果您希望使用其他语言进行 SDK 安装和初始化,可参考SDK 概览获取具体指导。
Python 2.7 或以上版本。执行python --version可以检查当前 Python 的版本信息。
由于 Windows 系统有最长路径限制,可能会导致 Python 安装失败。可以按照以下方式设置:
Win+R,输入regedit打开注册表编辑器。\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 路径下的变量LongPathsEnabled为1即可。pip install volcengine-python-sdk
在代码中设置您的 AK 和 SK,可直接使用主账号信息,或者通过用户管理创建子账号,并为子账号授予相应的权限。
configuration.ak = "YOUR AK" configuration.sk = "YOUR SK"
说明
子账号应具备以下权限:
configuration.region = "cn-beijing"
将以下代码复制到 Python 开发环境中,修改对应参数值后运行。代码将调用 CheckLLMPrompt - 检查用户提示词是否合规接口对输入的提示词进行判别,以确认其是否合规。
from __future__ import print_function import volcenginesdkcore import volcenginesdkwaf from volcenginesdkcore.rest import ApiException if __name__ == '__main__': configuration = volcenginesdkcore.Configuration() configuration.ak = "AKLTYWRhNDMwMTY4YzM1NDZiMGI3MTc4Mjc3MD********" # Access Key,用于身份验证 configuration.sk = "TWprNE5XVXlZbVE0WXpSa05HSXpaamhpTlRkbU1Ea3lOalUzWVRk********" # Secret Key,用于签名 configuration.region = "cn-beijing" # 大模型应用防火墙所属地域对应的 ID # 设置默认配置 volcenginesdkcore.Configuration.set_default(configuration) # 创建大模型应用防火墙 API 实例 api_instance = volcenginesdkwaf.WAFApi() # 创建内容检测请求对象 check_llm_prompt_request = volcenginesdkwaf.CheckLLMPromptRequest( content="你好", # 需要检测的内容 content_type=1, # 内容类型,当前支持 1-文本 host="7c82d94682acb0a14b241fc14bd9****.access.omni-shield.volces.co", # 大模型应用防火墙生成的接入点域名 msg_class=0, # 场景类型,当前默认为标准类型,填入 0 即可 region="cn-beijing", # 大模型应用防火墙所属地域对应的 ID ) try: # 复制代码运行示例,请自行打印API返回值。 data = api_instance.check_llm_prompt(check_llm_prompt_request) print("response:" , data ) except ApiException as e: # 复制代码运行示例,请自行打印API错误信息。 print("Exception when calling api: %s\n" % e) pass
假定以下两条提示词用于检测,一条为正常提示词,另一条为可能存在风险的攻击提示词,以此来验证接口对不同类型提示词的判别能力。
正常提示词 | 攻击提示词 | |
|---|---|---|
测试内容 |
|
|
预期结果 | ✅ | ❌
|
正常提示词 | 攻击提示词 | |
|---|---|---|
响应代码 |
|
|
检测结果 | ✅ | ❌ |
参数解读 |
|
|
为了查看本次测试中攻击事件的详细信息(如命中的全部规则、攻击类型、发生时间等),以便分析防护效果并调整策略,请执行以下步骤:
X000000000302,查询本次测试的攻击事件详情。大模型应用防火墙的检测能力基于产品自有模型判别、预置词库匹配和自定义词库匹配,如果您发现检测结果不符合预期,可以通过以下方式来调整防护策略,以优化检测效果。
通过本教程,您已经掌握如何通过 SDK 接入并验证提示词防护效果,以及如何调整防护策略来优化检测效果。 正确配置和验证防护策略,可以有效保护您的大模型应用免受提示词攻击的威胁,确保系统安全稳定运行。
后续您可以进一步探索其他防护功能,如模型滥用防护(配置模型滥用防护策略)、敏感数据防护(配置敏感数据防护策略)等,构建更全面的大模型应用安全防护体系。
为什么配置了自定义词库却没生效?
SDK 调用返回结果的 Action 是什么含义?
调用 SDK 时出现报错“Service is not configure”。