mirror of
https://github.com/alibaba/higress.git
synced 2026-06-09 12:47:28 +08:00
Add database configuration for plugins that use Redis. (#1814)
This commit is contained in:
@@ -20,17 +20,18 @@ description: AI 历史对话插件配置参考
|
||||
|
||||
## 配置字段
|
||||
|
||||
| 名称 | 数据类型 | 填写要求 | 默认值 | Description |
|
||||
|-------------------|---------|----------|-----------------------|---------------------------------------------------------------------------|
|
||||
| identityHeader | string | optional | "Authorization" | 身份解析对应的请求头,可用 Authorization,X-Mse-Consumer等 |
|
||||
| fillHistoryCnt | integer | optional | 3 | 默认填充历史对话轮次 |
|
||||
| cacheKeyPrefix | string | optional | "higress-ai-history:" | Redis缓存Key的前缀 |
|
||||
| cacheTTL | integer | optional | 0 | 缓存的过期时间,单位是秒,默认值为0,即永不过期 |
|
||||
| redis.serviceName | string | required | - | redis 服务名称,带服务类型的完整 FQDN 名称,例如 my-redis.dns、redis.my-ns.svc.cluster.local |
|
||||
| redis.servicePort | integer | optional | 6379 | redis 服务端口 |
|
||||
| redis.timeout | integer | optional | 1000 | 请求 redis 的超时时间,单位为毫秒 |
|
||||
| redis.username | string | optional | - | 登陆 redis 的用户名 |
|
||||
| redis.password | string | optional | - | 登陆 redis 的密码 |
|
||||
| 名称 | 数据类型 | 填写要求 | 默认值 | Description |
|
||||
|-------------------|----------|----------|-----------------------|----------------------------------------------------------------------------------------------|
|
||||
| identityHeader | string | optional | "Authorization" | 身份解析对应的请求头,可用 Authorization,X-Mse-Consumer等 |
|
||||
| fillHistoryCnt | integer | optional | 3 | 默认填充历史对话轮次 |
|
||||
| cacheKeyPrefix | string | optional | "higress-ai-history:" | Redis缓存Key的前缀 |
|
||||
| cacheTTL | integer | optional | 0 | 缓存的过期时间,单位是秒,默认值为0,即永不过期 |
|
||||
| redis.serviceName | string | required | - | redis 服务名称,带服务类型的完整 FQDN 名称,例如 my-redis.dns、redis.my-ns.svc.cluster.local |
|
||||
| redis.servicePort | integer | optional | 6379 | redis 服务端口 |
|
||||
| redis.timeout | integer | optional | 1000 | 请求 redis 的超时时间,单位为毫秒 |
|
||||
| redis.username | string | optional | - | 登陆 redis 的用户名 |
|
||||
| redis.password | string | optional | - | 登陆 redis 的密码 |
|
||||
| redis.database | int | optional | 0 | 使用的数据库id,例如配置为1,对应`SELECT 1` |
|
||||
|
||||
## 用法示例
|
||||
|
||||
|
||||
@@ -15,17 +15,19 @@ Plugin Execution Phase: `Default Phase`
|
||||
Plugin Execution Priority: `650`
|
||||
|
||||
## Configuration Fields
|
||||
| Name | Data Type | Required | Default Value | Description |
|
||||
|-------------------|---------|----------|-----------------------|---------------------------------------------------------------------------|
|
||||
| identityHeader | string | optional | "Authorization" | The request header for identity resolution, can be Authorization, X-Mse-Consumer, etc. |
|
||||
| fillHistoryCnt | integer | optional | 3 | Default number of historical dialogues to be filled. |
|
||||
| cacheKeyPrefix | string | optional | "higress-ai-history:" | Prefix for Redis cache key. |
|
||||
| cacheTTL | integer | optional | 0 | Cache expiration time in seconds, default value is 0, meaning it never expires. |
|
||||
| redis.serviceName | string | required | - | Redis service name, full FQDN name with service type, e.g., my-redis.dns, redis.my-ns.svc.cluster.local |
|
||||
| redis.servicePort | integer | optional | 6379 | Redis service port. |
|
||||
| redis.timeout | integer | optional | 1000 | Timeout for requests to Redis, in milliseconds. |
|
||||
| redis.username | string | optional | - | Username for logging into Redis. |
|
||||
| redis.password | string | optional | - | Password for logging into Redis. |
|
||||
| Name | Data Type | Required | Default Value | Description |
|
||||
|-------------------|-----------|----------|-----------------------|---------------------------------------------------------------------------------------------------------|
|
||||
| identityHeader | string | optional | "Authorization" | The request header for identity resolution, can be Authorization, X-Mse-Consumer, etc. |
|
||||
| fillHistoryCnt | integer | optional | 3 | Default number of historical dialogues to be filled. |
|
||||
| cacheKeyPrefix | string | optional | "higress-ai-history:" | Prefix for Redis cache key. |
|
||||
| cacheTTL | integer | optional | 0 | Cache expiration time in seconds, default value is 0, meaning it never expires. |
|
||||
| redis.serviceName | string | required | - | Redis service name, full FQDN name with service type, e.g., my-redis.dns, redis.my-ns.svc.cluster.local |
|
||||
| redis.servicePort | integer | optional | 6379 | Redis service port. |
|
||||
| redis.timeout | integer | optional | 1000 | Timeout for requests to Redis, in milliseconds. |
|
||||
| redis.username | string | optional | - | Username for logging into Redis. |
|
||||
| redis.password | string | optional | - | Password for logging into Redis. |
|
||||
| redis.database | int | optional | 0 | The database ID used, for example, configured as 1, corresponds to `SELECT 1`. |
|
||||
|
||||
|
||||
## Usage Example
|
||||
### Configuration Information
|
||||
|
||||
@@ -76,6 +76,9 @@ type RedisInfo struct {
|
||||
// @Title zh-CN 请求超时
|
||||
// @Description zh-CN 请求 redis 的超时时间,单位为毫秒。默认值是1000,即1秒
|
||||
Timeout int `required:"false" yaml:"timeout" json:"timeout"`
|
||||
// @Title zh-CN Database
|
||||
// @Description zh-CN redis database
|
||||
Database int `required:"false" yaml:"database" json:"database"`
|
||||
}
|
||||
|
||||
type KVExtractor struct {
|
||||
@@ -138,6 +141,7 @@ func parseConfig(json gjson.Result, c *PluginConfig, log wrapper.Log) error {
|
||||
if c.RedisInfo.Timeout == 0 {
|
||||
c.RedisInfo.Timeout = 1000
|
||||
}
|
||||
c.RedisInfo.Database = int(json.Get("redis.database").Int())
|
||||
c.QuestionFrom.RequestBody = "messages.@reverse.0.content"
|
||||
c.AnswerValueFrom.ResponseBody = "choices.0.message.content"
|
||||
c.AnswerStreamValueFrom.ResponseBody = "choices.0.delta.content"
|
||||
@@ -159,7 +163,7 @@ func parseConfig(json gjson.Result, c *PluginConfig, log wrapper.Log) error {
|
||||
FQDN: c.RedisInfo.ServiceName,
|
||||
Port: int64(c.RedisInfo.ServicePort),
|
||||
})
|
||||
return c.redisClient.Init(c.RedisInfo.Username, c.RedisInfo.Password, int64(c.RedisInfo.Timeout))
|
||||
return c.redisClient.Init(c.RedisInfo.Username, c.RedisInfo.Password, int64(c.RedisInfo.Timeout), wrapper.WithDataBase(c.RedisInfo.Database))
|
||||
}
|
||||
|
||||
func onHttpRequestHeaders(ctx wrapper.HttpContext, config PluginConfig, log wrapper.Log) types.Action {
|
||||
|
||||
Reference in New Issue
Block a user