Patch 插件提供了强大的 JSON 请求修改功能,使用 sonic 库实现高性能 JSON 处理。它允许您基于模型类型、字段值或自定义条件自动修改 API 请求。
{{field_name}} 语法进行动态值替换插件包含几个内置补丁:
max_tokens 限制为 16000max_tokens 字段限制为最大 16000max_tokens 转换为 max_completion_tokensmax_tokens 字段max_completion_tokens 设置为 max_tokens 的值max_tokens 字段max_tokens 转换为 max_completion_tokensmax_tokens 限制为 8192max_tokens 字段限制为最大 8192stream_optionsstream_optionsstream_options 字段import (
"github.com/labring/aiproxy/core/relay/plugin/patch"
)
// 创建插件 - 配置从模型配置中加载
plugin := patch.New()
patch插件从数据库中模型的插件配置中加载配置。配置应存储在模型配置的plugin字段中,键名为"patch"。
模型配置插件配置示例:
{
"patch": {
"enable": true,
"user_patches": [
{
"name": "custom_temperature_limit",
"description": "为特定模型限制温度值",
"conditions": [
{
"key": "model",
"operator": "contains",
"value": "gpt-4"
}
],
"operations": [
{
"op": "limit",
"key": "temperature",
"value": 1.0
}
]
}
]
}
}
插件包含内置的预定义补丁,这些补丁始终启用:
max_tokens限制为16000max_tokens转换为max_completion_tokensmax_tokens限制为8192stream_options这些预定义补丁自动运行且无法禁用。
equals: 精确字符串匹配not_equals: 不等于字符串contains: 字符串包含子字符串not_contains: 字符串不包含子字符串regex: 正则表达式匹配exists: 字段存在(非空)not_exists: 字段不存在(空)set: 将字段设置为特定值delete: 从 JSON 中删除字段add: 仅当字段不存在时添加字段limit: 将数值字段限制为最大值model: 引用 meta 中的实际模型名称original_model: 引用 meta 中的原始模型名称使用 {{field_name}} 引用 JSON 数据中的值:
{
Op: patch.OpSet,
Key: "max_completion_tokens",
Value: "{{max_tokens}}", // 将被替换为实际的 max_tokens 值
}
使用点语法访问嵌套字段:
{
Key: "parameters.max_tokens", // 访问 parameters.max_tokens
// ...
}
import (
"github.com/labring/aiproxy/core/relay/plugin"
"github.com/labring/aiproxy/core/relay/plugin/patch"
)
// 创建 patch 插件
patchPlugin := patch.New()
// 用插件包装适配器
adaptor = plugin.WrapperAdaptor(adaptor, patchPlugin)
{
"name": "anthropic_max_tokens",
"description": "为 Anthropic 模型设置适当的 max_tokens",
"conditions": [
{
"key": "model",
"operator": "contains",
"value": "claude"
}
],
"operations": [
{
"op": "limit",
"key": "max_tokens",
"value": 4096
}
]
}
{
"name": "add_default_temperature",
"description": "如果未指定则添加默认温度值",
"conditions": [
{
"key": "temperature",
"operator": "not_exists",
"value": ""
}
],
"operations": [
{
"op": "add",
"key": "temperature",
"value": 0.7
}
]
}
{
"name": "streaming_optimization",
"description": "为特定模型优化流式处理",
"conditions": [
{
"key": "stream",
"operator": "equals",
"value": "true"
},
{
"key": "model",
"operator": "regex",
"value": "^gpt-4"
}
],
"operations": [
{
"op": "set",
"key": "stream_options.include_usage",
"value": true
}
]
}
这个插件设计简洁而强大,可以轻松扩展以支持新的补丁规则和操作类型。