写点什么

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

作者:Yestodorrow
  • 2023-05-18
    北京
  • 本文字数:3245 字

    阅读完需:约 11 分钟

如何用一行代码实现监测 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/


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

  2. /bin/bash -c "$(curl -fsSL t.guance.com/func-portable-download)" -- --for=GSE

  3. sudo /bin/bash {安装文件所在目录}/run-portable.sh


可参考:https://func.guance.com/doc/quick-start


安装完成后,即可通过浏览器登录 DataFlux Func 控制台,记住登录地址和账号,之后会用到。



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


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


https://docs.guance.com/datakit/datakit-install/



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

未来规划

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


对于本文的任何问题或者疑惑,大家可以加入观测云官方社区随时咨询,此处不方便放链接,大家可以在观测云官网添加小助手入群。



发布于: 刚刚阅读数: 2
用户头像

Yestodorrow

关注

还未添加个人签名 2017-10-19 加入

还未添加个人简介

评论

发布
暂无评论
如何用一行代码实现监测 OpenAI,大幅提升使用体验_可观测性_Yestodorrow_InfoQ写作社区