作者|观测云 徐季秋
现在基于 OpenAI 的 Chat+ 应用井喷,但给开发者带来了两个难点,一是因为 OpenAI 基于 tokens 的计费机制导致不容易规划消费;另一是 OpenAI 提供的调用本身不稳定,很难分辨是传参错误或是访问失败。这导致许多开发者,需要在调试时一边小心翼翼地时刻关注余额,又要担心服务质量抖动,挺让人糟心。
其实,通过简单地对 OpenAI 设置些使用监测,就能大幅提升使用体验,以下用 SaaS 监控观测平台——观测云举例。
基于观测云强大的可编程机制可以轻松实现 OpenAI 可观测,记录所有请求的输入输出内容、调用请求延迟、调用成功率、以及费用详情,而完成这些功能就是几分钟动动手的事情。观测云已预置了下文用到的所有数据采集与仪表板模板,略作配置即可使用。
展示效果图
-
仪表板视图
-
日志查看器视图
如果已经是观测云用户,也安装过 DataFlux Func 组件,可以跳过前置准备步骤,直接从第 6 步打开采集开始;
新用户请从前置准备步骤开始操作。
前置准备
1. 在观测云官网注册账号 www.guance.com。关于注册步骤和站点选择,可参考:
在观测云注册商业版 - 观测云文档
本文使用观测云-中国区1(杭州)站点,商业版账号。直接开通商业版可获得 500 元无限制代金券,实现本文观测场景每天消费仅需几分钱,可以用几十年了。
或可以选择开通体验版,每天可免费上报 100 万条增量日志,也足够用了,可参考:
公有云体验版 - 观测云文档
完成观测云账号注册后,会登录到观测云工作空间控制台,之后的数据可视化都会在这里展现。
2. 准备一台可连通公网,并能访问 OpenAI API(务必确认这条)的主机,最小规格建议 2C/4G/20GB,Ubuntu 16.04 LTS 或 CentOS 7.2 以上 OS,可参考:
系统要求 - DataFlux Func 文档库
3. 在这台主机上,安装 DataFlux Func GSE(观测云特别版)。执行以下命令即可:
-
/bin/bash -c "$(curl -fsSL t.guance.com/func-portable-download)" -- --for=GSE
-
sudo /bin/bash {安装文件所在目录}/run-portable.sh
可参考:快速开始 - DataFlux Func 文档库
安装完成后,即可通过浏览器登录 DataFlux Func 控制台,记住登录地址和账号,之后会用到。
DataFlux Func 是一款函数开发、管理、执行平台。简单易用、无需从零搭建 Web 服务,无需管理服务器等基础设施,只需编写代码并发布,简单配置即可为函数生成 HTTP API 接口。主页地址:func.guance.com
4. 仍在这台主机上,安装 DataKit 数据采集器。回到在第 1 步开通的观测云工作空间控制台,左侧功能面板选择【集成】->【DataKit】,复制 Linux 安装命令到主机上执行。由于命令行里默认注入了当前工作空间 token,所以这个 DataKit 安装后会默认上报数据到本工作空间,该 token 之后也可以修改。请参考:
主机安装 - 观测云文档
5. 将 DataFlux Func 作为数据源,和 DataKit 数据采集器绑定,实现以下数据采集和上报路径:
1)仍在这台主机上,修改 DataKit 的本地配置文件参数:
-
打开 DataKit 配置文件:sudo vim /usr/local/datakit/conf.d/datakit.conf
-
将 http_listen = "localhost:9529" 修改为 http_listen = "0.0.0.0:9529"
-
重启 DataKit 服务:sudo datakit service -R
2)进入第 3 步的 DataFlux Func 控制台,选择 【开发】->【连接器】标签页,可以看到有一个默认的 DataKit 连接器,类型:HTTP;ID:datakit;主机 IP 指向本机;端口:9529;点击右下角【保存】确认无误。
好了,至此,已完成了所有前置步骤。接下来就进入正题,如何用启动 ChatGPT 采集模板和打开观测云仪表板。
DataFlux Func 托管版预计在 2023 年 5 月 22 日发布,届时第 2 步到第 5 步可以合并为一步完成,Func 数据直接上报到观测云工作空间,省略和 DataKit 绑定步骤。
打开采集
6. 安装 ChatGPT 监测脚本。进入 DataFlux Func 控制台(见第 3 步),进入【脚本市场】->【官方脚本市场-详情】,搜索到 ChatGPT 脚本,然后点击【安装】。
安装成功后,点击菜单【开发】->【脚本库】,可以看到刚安装的 ChatGPT 监控脚本,具体实现逻辑都在里面。
7. 将 DataFlux Func 配置为和 ChatGPT 应用通讯的代理。
点击菜单【管理】->【授权链接】->【新建】 , 找到【ChatGPT 监控】函数创建一个授权链接,全部保持默认选项;
创建完成后,在授权链接列表里,可以找到这个函数。 点击这个函数右侧的【示例】;
选择【POST 简化形式(JSON)】,会看到一个链接,指向本机地址。这个链接就是魔法所在,我们称之为【魔法链接】,请把它复制下来。
8. 在 Chat+ 应用里,把 API 调用地址,替换为【魔法链接】。
以 ChatGPT 客户端举例 :
https://github.com/anse-app/chatgpt-demo
1)按照 readme 里的指引,把客户端跑起来;
2)应用【魔法链接】:
https://github.com/anse-app/chatgpt-demo/blob/main/src/pages/api/generate.ts 里的 46 行, 把调用的 url 从
https://api.openai.com/v1/chat/completions
改为【魔法链接】,比如在本次示例中为:https://func-dev.dataflux.cn/api/v1/al/auln-VbUBSOEYNxqv/simplified 。
(!!注意每人得到的【魔法链接】都不一样,不要照搬复制示例链接。)
至此,大家应该都理解原理了,通过【魔法链接】,把原来发给 Chat+ 应用向 OpenAI 的请求先发给 Func 函数,由 Func 作为代理转发,以采集过程状态指标。
3)配置更新后,在 chatgpt-demo 里,比如我这里是 http://localhost:3000, 向 ChatGPT 提问吧,生成些原始数据。
9. 最后一步了,打开观测云仪表板。
登录观测云工作空间,选择左侧功能面板【场景】->【仪表板】->【新建仪表板】;
找到 ChatGPT 仪表板模板,创建实例;
点击完成添加后,注意调整下右上角时间范围到实际的采集时间段,就能看到可视化图表了。
再选择左侧功能面板【场景】->【查看器】->【新建查看器】,创建 ChatGPT 查看器实例,就能看到所有采集到的原始日志视图。
最后,再看下效果图。
在工作空间左侧功能栏【场景】->【查看器】里可以看到本次采集到的原始日志。
对 DataFlux Func 感兴趣的同学,可以尝试自己写监测脚本,可参考:
如何开发自定义巡检
https://func.guance.com/doc/script-market-guance-monitor/
可观测性扩展
还能进一步利用观测云把 Chat+ 应用的端到端全部监控起来, 包含 RUM,APM,Log 以及 Chat+应用的运行环境,这样能带来额外两个好处,让可观测性更加完整:
1、不是所有对用户体验有影响的情况是由 OpenAI 调用引起的,有可能是前端代码,或者网络抖动,防止 OpenAI 无故背锅
2、可识别每一次 OpenAI 调用失败时,到底影响了哪些具体的用户,整个链条清晰可见
像这个客户端基于 nodejs 的,可参考:
https://docs.guance.com/integrations/rum/rum-web-h5/ https://docs.guance.com/integrations/apm/ddtrace-nodejs/
实现原理
1、原本的请求路径是 应用 -> OpenAI , 为了监控 OpenAI 的调用,我们需要使用 Func 做一层代理,请求路径变为: 应用 -> Func -> OpenAI
2、具体如何转发,采集了哪些数据,上报了哪些数据, 可以参考开启步骤第 6 步里的脚本库里的代码逻辑。
关于价格
1、DataFlux Func 开源免费, 托管版 Func 成本取决于主机成本;
2、www.guance.com 体验版可每天免费使用 100 万条增量日志,大多数情况够用了,超过的部分按 1 万条增量,保存 3 天, 收费 0.01 元。可参考:价格 - 快速实现系统可观测 - 观测云
未来规划
可以预计未来会出现更多的基于 MaaS 的应用,观测云会持续提供适用于商用或开源大模型服务的监测模板,开发者借助观测云开箱即可观测的能力,可以把这些大模型用得明明白白,更专注在应用研发上。
对于本文的任何问题或者疑惑,大家可以加入观测云官方社区随时咨询,扫码添加微信加入观测云社区。