API接口文档
ModelAssetObfuscation 类
模型资产混淆核心类,提供模型权重混淆功能。
create_model_obfuscation
创建标准模型混淆实例。
@staticmethod
def create_model_obfuscation(
model_path: str,
model_type: ModelType,
tp_num: int = None,
token_white_list: list = None,
obf_coefficient: float = None,
is_obfuscation: bool = True
) -> 'ModelAssetObfuscation'
参数:
model_path: 模型文件路径model_type: 模型类型(ModelType枚举)tp_num: 张量并行数量token_white_list: token白名单,该token不做混淆obf_coefficient: 混淆系数is_obfuscation: 是否混淆(True混淆,False不混淆)
返回值: ModelAssetObfuscation实例
create_custom_model_obfuscation
创建自定义模型混淆实例。
@staticmethod
def create_custom_model_obfuscation(
model_path: str,
custom_obf_config_path: str,
tp_num: int = None,
token_white_list: list = None,
obf_coefficient: float = None,
is_obfuscation: bool = True
) -> 'ModelAssetObfuscation'
参数:
model_path: 模型文件路径custom_obf_config_path: 配置文件路径tp_num: 张量并行数量token_white_list: token白名单,该token不做混淆obf_coefficient: 混淆系数is_obfuscation: 是否混淆(True混淆,False不混淆)
返回值: ModelAssetObfuscation实例
set_seed_content
设置混淆因子内容。
def set_seed_content(
seed_type: int = Constant.MODEL_SEED_TYPE,
seed_content: str = None,
is_local_save: bool = False,
seed_ciphertext_dir: str = None
) -> (int, str)
参数:
seed_type: 混淆因子类型(1:模型混淆因子, 2:数据混淆因子)seed_content: 混淆因子明文内容(32-112字符)is_local_save: 是否从本地获取混淆因子seed_ciphertext_dir: 密文保存路径(is_local_save为True时需要)
返回值: (错误码, 错误信息)
model_weight_obf
执行模型权重混淆。
def model_weight_obf(
obf_type: int,
precision_mode: int = None,
model_save_path: str = None,
device_type: str = 'cpu',
device_id: List[int] = None
) -> int
参数:
obf_type: 混淆类型(0:使用所有混淆因子, 1:仅使用模型混淆因子, 2:仅使用数据混淆因子)precision_mode: 精度选择(可选0,1) 0为浮点计算模式 1为量化计算模式model_save_path: 混淆后模型存储路径device_type: 使用cpu加速device_id:当device_type是cpu时,可不传;
返回值: (错误码, 错误信息)
DataAssetObfuscation 类
数据资产混淆核心类,提供推理数据混淆和解混淆功能。
set_seed_content
设置混淆因子内容。
def set_seed_content(
seed_content: str = None,
is_local_save: bool = False,
seed_ciphertext_dir: str = None
) -> (int, str)
参数:
seed_content: 混淆因子明文内容(32-112字符)is_local_save: 是否从本地获取混淆因子seed_ciphertext_dir: 密文保存路径(is_local_save为True时需要)
返回值: (错误码, 错误信息)
set_seed_safer
通过TLS/PSK安全通道设置混淆因子。
def set_seed_safer(
tls_info: tuple,
psk_info: tuple
) -> (int, str)
参数:
tls_info: TLS配置元组 (ca_file, cert_file, pri_keyfile, port, ks_path, ciphertext_path)psk_info: PSK配置元组 (psk_path, ks_path_psk, ciphertext_path_psk)
返回值: (错误码, 错误信息)
data_2d_obf
混淆二维数据。
def data_2d_obf(tokens: List[List[int]]) -> List[List[int]]
参数:
tokens: 待混淆的tokens(二维列表,内层元素为int)
返回值: 混淆后的tokens
data_1d_obf
混淆一维数据。
def data_1d_obf(tokens: List[int]) -> List[int]
参数:
tokens: 待混淆的tokens(一维列表,元素为int)
返回值: 混淆后的tokens
data_2d_deobf
解混淆二维数据。
def data_2d_deobf(tokens: List[List[int]]) -> List[List[int]]
参数:
tokens: 待解混淆的tokens(二维列表,内层元素为int)
返回值: 解混淆后的tokens
data_1d_deobf
解混淆一维数据。
def data_1d_deobf(tokens: List[int]) -> List[int]
参数:
tokens: 待解混淆的tokens(一维列表,元素为int)
返回值: 解混淆后的tokens
token_obf
混淆单个token。
def token_obf(token: int) -> int
参数:
token: 待混淆的token
返回值: 混淆后的token
token_deobf
解混淆单个token。
def token_deobf(token: int) -> int
参数:
token: 待解混淆的token
返回值: 解混淆后的token
ImageDataAssetObfuscation 类
图片数据混淆类,提供图片数据的混淆功能。
create_by_config
通过配置创建图片混淆实例。
@staticmethod
def create_by_config(config_path: str) -> 'ImageDataAssetObfuscation'
参数:
config_path: 配置文件路径
返回值: ImageDataAssetObfuscation实例
set_seed_content
设置混淆因子内容。
def set_seed_content(
seed_content: str = None,
is_local_save: bool = False,
seed_ciphertext_dir: str = None
) -> (int, str)
参数:
seed_content: 混淆因子明文内容(32-112字符)is_local_save: 是否从本地获取混淆因子seed_ciphertext_dir: 密文保存路径(is_local_save为True时需要)
返回值: (错误码, 错误信息)
image_base64_obf
混淆Base64格式图片。
def image_base64_obf(image_base64: str) -> str
参数:
image_base64: Base64格式的图片数据
返回值: 混淆后的Base64图片数据
image_bytearray_obf
混淆字节数组格式图片。
def image_bytearray_obf(image_bytearray: bytearray) -> bytearray
参数:
image_bytearray: 字节数组格式的图片数据
返回值: 混淆后的字节数组图片数据
VideoDataAssetObfuscation 类
视频数据混淆类,提供视频数据的混淆功能。
create_by_config
通过配置创建视频混淆实例。
@staticmethod
def create_by_config(config_path: str) -> 'VideoDataAssetObfuscation'
参数:
config_path: 配置文件路径
返回值: VideoDataAssetObfuscation实例
set_seed_content
设置混淆因子内容。
def set_seed_content(
seed_content: str = None,
is_local_save: bool = False,
seed_ciphertext_dir: str = None
) -> (int, str)
参数:
seed_content: 混淆因子明文内容(32-112字符)is_local_save: 是否从本地获取混淆因子seed_ciphertext_dir: 密文保存路径(is_local_save为True时需要)
返回值: (错误码, 错误信息)
video_base64_obf
混淆Base64格式视频。
def video_base64_obf(video_base64: str) -> str
参数:
video_base64: Base64格式的视频数据
返回值: 混淆后的Base64视频数据
video_bytearray_obf
混淆字节数组格式视频。
def video_bytearray_obf(video_bytearray: bytearray) -> bytearray
参数:
video_bytearray: 字节数组格式的视频数据
返回值: 混淆后的字节数组视频数据
passwd_enc 函数
对口令进行加密保护。
def passwd_enc(
ks_path: str,
passwd: str,
ciphertext_path: str
) -> (int, str)
参数:
ks_path: 加密工具路径passwd: 待加密口令(40-64字符,需包含大小写字母、数字、特殊字符中的至少2种)ciphertext_path: 加密口令保存路径
返回值: (错误码, 错误信息)
示例:
from ai_asset_obfuscate import passwd_enc, ErrorCode
result = passwd_enc(
ks_path="/path/to/ks_tool",
passwd="YourSecurePassword123!@",
ciphertext_path="/path/to/ciphertext"
)
if result == ErrorCode.SUCCESS.value:
print("口令加密成功")
distribute_obf_seed 函数
下发混淆因子到NPU设备。
def distribute_obf_seed(
seed_type: int,
tls_conf: TLSConfig,
psk_conf: PskConfig,
seed_content: str,
device_id: List[int] = None
) -> (int, str)
参数:
seed_type: 混淆因子类型(1:模型混淆因子, 2:数据混淆因子)tls_conf: TLS通信配置对象psk_conf: PSK私钥配置对象seed_content: 混淆因子明文(32-112字符)device_id: 需要下发的设备ID列表(0-15),可选
返回值: (错误码, 错误信息)
示例:
from ai_asset_obfuscate import distribute_obf_seed, ErrorCode
from ai_asset_obfuscate.model import TLSConfig, PskConfig
# 创建TLS配置
tls_conf = TLSConfig(
ca_file="/path/to/ca.pem",
cert_file="/path/to/cert.pem",
pri_keyfile="/path/to/key.pem",
ks_path="/path/to/ks_tool",
ciphertext_path="/path/to/ciphertext"
)
tls_conf.set_port(1024)
# 创建PSK配置
psk_conf = PskConfig(
psk_path="/path/to/psk",
ks_path_psk="/path/to/ks_tool",
ciphertext_path_psk="/path/to/psk_ciphertext"
)
# 下发混淆因子
result = distribute_obf_seed(
seed_type=1,
tls_conf=tls_conf,
psk_conf=psk_conf,
seed_content="your_seed_content_32_chars_min",
device_id=[0, 1]
)
if result == ErrorCode.SUCCESS.value:
print("混淆因子下发成功")
local_save_obf_seed 函数
本地保存混淆因子。
def local_save_obf_seed(
seed_type: int,
seed_ciphertext_dir: str,
seed_content: str = None
) -> (int, str)
参数:
seed_type: 混淆因子类型(1:模型混淆因子, 2:数据混淆因子)seed_ciphertext_dir: 密文保存目录路径seed_content: 混淆因子明文(32-112字符),如果为None则自动生成随机混淆因子
返回值: (错误码, 错误信息)
示例:
from ai_asset_obfuscate import local_save_obf_seed, ErrorCode
# 本地保存混淆因子(自动生成)
result = local_save_obf_seed(
seed_type=1,
seed_ciphertext_dir="/path/to/save_dir"
)
# 本地保存混淆因子(指定内容)
result = local_save_obf_seed(
seed_type=1,
seed_ciphertext_dir="/path/to/save_dir",
seed_content="your_seed_content_32_chars_min"
)
if result == ErrorCode.SUCCESS.value:
print("混淆因子保存成功")