目前大部分 AI 服务都采用 SSE(Server-Sent Events,服务器推送事件)进行回应,即逐字返回对于问题的响应。SSE 是一种基于 HTTP 协议的实时通信技术,常见于 LLM(大语言模型)接口功能的调试场景。 开发人员在调用 AI 应用的 API 时经常有着 SSE 事件的拼接场景,以及拼接后的 Tokens 换算及成本预估等需求。下文将以请求调试某个 AI 应用为例,演示如何在调试接口的过程中,自动将输入和输出的字符数换算为 Token 值,配合实时汇率接口,在单次调试 API 的过程中就能估算出大致成本。 前置准备# 开始在调试过程中计算问答成本前需要了解大模型厂商的计费条件。以 OpenAI 定价策略 为例,需要先统计每次问答过程中输入和输出所耗费的 Tokens 值,再将其换算为人民币。 因此想要在调试 API 过程中计算出问答成本分为以下两步: Tokens 值换算库# 将该 Node.js 脚本重命名为 gpt-tokens-counter.js
后放置于 Apifox 的其它语言文件目录 下以供调用。 在脚本的所在目录中执行以下命令,初始化脚本的运行环境。 实时汇率接口# 得到输入和输出所耗费的 Tokens 值后,还需要通过实时汇率接口预估所消耗的成本(人民币)。本文将调用 Currencylayer API 获取实时汇率,点击此处 注册账号并获取 API Key。 输入成本# 换算 Tokens 输入值# 输入值可以理解为用户在询问 AI 应用时所填写的问题和 Prompt,因此需要在前置操作 添加自定义脚本提取位于请求参数 Body
中的 query
参数,方便换算为 Tokens 值。 在「前置操作」中添加上文的 Tokens 值换算脚本,参考以下示例代码: 点击“运行”按钮后可以在控制台中看到已统计 的输入值。 换算为实际成本(人民币)# 得到输入所耗费的 Tokens 值后,还需请求实时汇率接口得到一个换算乘数,再将其与 Tokens 值相乘得到实际成本(人民币)。在前置操作中添加以下脚本: 输出成本# 拼接返回响应# 当接口返回响应中的 Content-Type 包含 text/event-stream
参数时 ,Apifox 会自动将返回的数据解析为 SSE 事件。通常情况下 SSE 事件中的每个返回中仅包含片段字符(通常是 1 个字),此时需要将所有返回内容重新拼接为完整语句。 前往接口定义中的后置操作,添加自定义脚本提取响应内容并完成拼接。 换算 Tokens 输出值# 得到完整的响应内容后,还需要通过第三方库将其换算为 Tokens 值。在后置操作中添加以下自定义脚本,使得 Apifox 能够调用外部 gpt-tokens-counter.js
脚本(脚本具体代码请参考上文 “前置准备:Tokens 值换算库”)得出 Tokens 值。 实际成本(人民币)# 与前文中的成本计算方案类似,得到输出所耗费的 Tokens 值后,将其与汇率相乘得到实际成本(人民币)。 预估总成本# 最后在后置操作中添加一个可以自动计算输入 + 输出总成本的自定义脚本。 使得在调试接口的过程中就能够预估出本次请求的大致成本。 修改于 2025-01-15 02:34:02