From f80252bab424da80ba1ccd1e35082a628a6e9650 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BE=84=E6=BD=AD?= Date: Tue, 15 Oct 2024 11:48:27 +0800 Subject: [PATCH] Update geo-ip.md --- .../zh-cn/plugins/ai/api-o11y/geo-ip.md | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/src/content/docs/latest/zh-cn/plugins/ai/api-o11y/geo-ip.md b/src/content/docs/latest/zh-cn/plugins/ai/api-o11y/geo-ip.md index 975bc8b902..9d37b36034 100644 --- a/src/content/docs/latest/zh-cn/plugins/ai/api-o11y/geo-ip.md +++ b/src/content/docs/latest/zh-cn/plugins/ai/api-o11y/geo-ip.md @@ -40,3 +40,66 @@ go run generateCidr/ipRange2Cidr.go ## property 的使用方式 在geo-ip插件里调用proxywasm.SetProperty() 分别把country、city、province、isp设置进请求属性里,以便后续插件可以调用proxywasm.GetProperty()获取该请求的用户ip对应的地理信息。 + +## 基于geo-ip插件的能力,扩展AI提示词装饰器插件携带用户地理位置信息 +如果需要在LLM的请求前后加入用户地理位置信息,请确保同时开启geo-ip插件和AI提示词装饰器插件。并且在相同的请求处理阶段里,geo-ip插件的优先级必须高于AI提示词装饰器插件。首先geo-ip插件会根据用户ip计算出用户的地理位置信息,然后通过请求属性传递给后续插件。比如在默认阶段里,geo-ip插件的priority配置1000,ai-prompt-decorator插件的priority配置500。 + +geo-ip插件配置示例: +```yaml +ipProtocal: "ipv4" +``` + + + + +AI提示词插件的配置示例如下: +```yaml +prepend: +- role: system + content: "提问用户当前的地理位置信息是,国家:${geo-country},省份:${geo-province}, 城市:${geo-city}" +append: +- role: user + content: "每次回答完问题,尝试进行反问" +``` + +使用以上配置发起请求: + +```bash +curl http://localhost/test \ +-H "content-type: application/json" \ +-H "x-forwarded-for: 87.254.207.100,4.5.6.7" \ +-d '{ + "model": "gpt-3.5-turbo", + "messages": [ + { + "role": "user", + "content": "今天天气怎么样?" + } + ] +}' +``` + +经过插件处理后,实际请求为: + +```bash +curl http://localhost/test \ +-H "content-type: application/json" \ +-H "x-forwarded-for: 87.254.207.100,4.5.6.7" \ +-d '{ + "model": "gpt-3.5-turbo", + "messages": [ + { + "role": "system", + "content": "提问用户当前的地理位置信息是,国家:中国,省份:北京, 城市:北京" + }, + { + "role": "user", + "content": "今天天气怎么样?" + }, + { + "role": "user", + "content": "每次回答完问题,尝试进行反问" + } + ] +}' +```