如何一行代码实现 OpenAI 可观测,大幅提升使用体验

    现在基于 OpenAI 的 Chat+ 应用井喷,但给开发者带来了两个难点,一是因为 OpenAI 基于 tokens 的计费机制导致不容易规划消费;另一是 OpenAI 提供的调用本身不稳定,很难分辨是传参错误或是访问失败。这导致许多开发者,需要在调试时一边小心翼翼地时刻关注余额,又要担心服务质量抖动,挺让人糟心。

    其实,通过简单地对 OpenAI 设置些使用监测,就能大幅提升使用体验,以下用 SaaS 监控观测平台——观测云举例。

    基于观测云强大的可编程机制可以轻松实现 OpenAI 可观测,记录所有请求的输入输出内容、调用请求延迟、调用成功率、以及费用详情,而完成这些功能就是几分钟动动手的事情。观测云已预置了下文用到的所有数据采集与仪表板模板,略作配置即可使用。

    展示效果图

    仪表板视图

    日志查看器视图

    如果已经是观测云用户,也安装过 DataFlux Func 组件,可以跳过前置准备步骤,直接从第 6 步打开采集开始;

    新用户请从前置准备步骤开始操作。

    前置准备

    1. 在观测云官网注册账号 www.guance.com。关于注册步骤和站点选择,可参考:
      https://docs.guance.com/billing/commercial-register/

    本文使用观测云-中国区1(杭州)站点,商业版账号。直接开通商业版可获得 500 元无限制代金券,实现本文观测场景每天消费仅需几分钱,可以用几十年了。

    或可以选择开通体验版,每天可免费上报 100 万条增量日志,也足够用了,可参考:
    https://docs.guance.com/billing/trail/#register-trail

    完成观测云账号注册后,会登录到观测云工作空间控制台,之后的数据可视化都会在这里展现。

    1. 准备一台可连通公网,并能访问 OpenAI API(务必确认这条)的主机,最小规格建议 2C/4G/20GB,Ubuntu 16.04 LTS 或 CentOS 7.2 以上 OS,可参考:
      https://func.guance.com/doc/maintenance-guide-requirement/

    2. 在这台主机上,安装 DataFlux Func GSE(观测云特别版)。执行以下命令即可:

    DataFlux Func 是一款函数开发、管理、执行平台。简单易用、无需从零搭建 Web 服务,无需管理服务器等基础设施,只需编写代码并发布,简单配置即可为函数生成 HTTP API 接口。主页地址:func.guance.com

    1. 仍在这台主机上,安装 DataKit 数据采集器。回到在第 1 步开通的观测云工作空间控制台,左侧功能面板选择【集成】->【DataKit】,复制 Linux 安装命令到主机上执行。由于命令行里默认注入了当前工作空间 token,所以这个 DataKit 安装后会默认上报数据到本工作空间,该 token 之后也可以修改。请参考:
      https://docs.guance.com/datakit/datakit-install/

    1. 将 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 绑定步骤。

    打开采集

    1. 安装 ChatGPT 监测脚本。进入 DataFlux Func 控制台(见第 3 步),进入【脚本市场】->【官方脚本市场-详情】,搜索到 ChatGPT 脚本,然后点击【安装】。

    安装成功后,点击菜单【开发】->【脚本库】,可以看到刚安装的 ChatGPT 监控脚本,具体实现逻辑都在里面。

    1. 将 DataFlux Func 配置为和 ChatGPT 应用通讯的代理。
      点击菜单【管理】->【授权链接】->【新建】 , 找到【ChatGPT 监控】函数创建一个授权链接,全部保持默认选项;


    创建完成后,在授权链接列表里,可以找到这个函数。 点击这个函数右侧的【示例】;

    选择【POST 简化形式(JSON)】,会看到一个链接,指向本机地址。这个链接就是魔法所在,我们称之为【魔法链接】,请把它复制下来。

    1. 在 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 提问吧,生成些原始数据。

    1. 最后一步了,打开观测云仪表板。
      登录观测云工作空间,选择左侧功能面板【场景】->【仪表板】->【新建仪表板】;

    找到 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 元。可参考:https://www.guance.com/billing#business

    未来规划

    可以预计未来会出现更多的基于 MaaS 的应用,观测云会持续提供适用于商用或开源大模型服务的监测模板,开发者借助观测云开箱即可观测的能力,可以把这些大模型用得明明白白,更专注在应用研发上。

    联系我们

    加入社区

    微信扫码
    加入官方交流群

    立即体验

    在线开通,按量计费,真正的云服务!

    免费开启

    支持私有云环境部署

    代码托管平台