乐于分享
好东西不私藏

Agent写软件的时代-如何把 AI 的网关做成工作台?

Agent写软件的时代-如何把 AI 的网关做成工作台?

大模型接入一开始往往很简单:拿一个 API Key,写几行 SDK 调用,然后把模型接到业务里。

但只要真正开始多人使用、长期使用,问题就会很快出现:

  • 谁在用哪个 Key?
  • 每个 Key 花了多少钱?
  • 哪些模型还能调用?
  • 预算、限速、有效期怎么管?
  • Codex、Claude Code 这类 Agent 工具怎么统一接入?
  • 调用文档、套餐、订单和用量能不能放在同一个入口?

所以我们做了一个围绕 LiteLLM 的 AI 服务门户:深度记事 AI 服务控制台

它不是单纯的聊天页面,而是把模型入口、API Key、套餐、用量、Agent 任务和调用文档整合到一个工作台里。

当前该项目已经完全开源:

https://github.com/jacksonjack001/deepnoting-portal-ui

网站首页:

https://deepnoting.cn/portal/

一句话理解

这套系统可以拆成两层:

LiteLLM 负责模型网关和预算控制。

Portal 负责用户、套餐、支付、用量展示、聊天、文档和 Agent 任务。

这样拆分的好处是:模型代理继续交给成熟的 LiteLLM,用户体验和运营流程则放在更容易定制的 Portal 里。

为什么需要一个 Portal

如果只有网关,管理员能看见模型和 Key,但用户往往看不清自己的使用状态。

如果只有聊天页面,用户能发消息,但很难知道预算、用量、订单、模型权限和 API 调用方式。

Portal 解决的是中间这一层体验:

  • 用户可以注册、登录或用已有 API Key 直接进入。
  • 购买套餐后自动激活 LiteLLM 虚拟 Key。
  • 用量按当前 API Key 统计,而不是只按邮箱统计。
  • 页面直接展示预算、余额、Token、请求数、模型分布和最近调用。
  • 聊天页支持文本、图片和常用参数。
  • Codex / Claude Code 的接入文档和 Agent 任务状态也集中展示。

用量看得清楚

总览页的目标很直接:让用户知道当前 Key 还能不能用、剩多少预算、最近消耗在哪里。

页面会展示:

  • Key 状态
  • 剩余金额
  • 累计消耗
  • 累计 Token
  • 请求额度
  • 过期时间
  • 每日/每周/每月趋势
  • 按模型统计的消耗
  • 最近调用明细

这里有一个很实用的细节:API Key 直接登录的用户,也能按当前 Key 看到用量。

有些外部导入的 Key 在 LiteLLM 里不一定绑定到门户邮箱,如果只按邮箱查询 spend logs,用量页可能是空的。现在会结合当前 Key 的 hash 去同步日志,统计口径更贴近真实使用。

聊天页不只是聊天

聊天页使用的是当前账号自己的 LiteLLM 虚拟 Key。浏览器不会直接拿完整 Key 调 LiteLLM,而是通过 Portal 中转。

这样可以统一处理:

  • 登录态
  • Key 状态
  • 模型权限
  • 余额和预算
  • 聊天历史
  • 流式输出
  • 错误提示
  • 用量记录

聊天页支持文本、多轮历史、图片上传/粘贴,以及常见生成参数,例如 temperature、top_p、max_tokens、frequency_penalty 和 presence_penalty。

如果选择的是支持视觉能力的模型,也可以直接把图谱、截图或图片粘贴进去提问。

套餐和资源状态放在一起

套餐页不仅展示价格,也展示 Claude / Codex 资源池状态。

这对用户很重要:当模型、账号池或限额窗口发生变化时,用户可以直接看到当前资源是否可用,而不是只能等调用失败后再排查。

套餐支持两类方式:

  • 预设套餐:适合快速购买。
  • 自定义组合:选择模型、预算、请求数、RPM、TPM 和有效期。

支付成功后,系统会自动把套餐规则写入 LiteLLM Key,包括模型权限、预算、有效期和限速。

订单还支持退款测算。系统会根据订单金额、通道手续费和 Token 消耗估算可退金额,再进入人工退款流程。

调用文档直接给到用户

一个 API 服务能不能被顺利用起来,文档非常关键。

所以控制台里内置了调用文档,包括:

  • OpenAI SDK 调用方式
  • Codex 配置
  • Claude Code 配置
  • Agent hooks 上报
  • 环境变量示例
  • 客户端配置示例

用户不需要到处找配置,只要登录后复制自己的 Key 和示例配置,就可以开始接入。

Agent 任务也能看见

Codex / Claude Code 这类工具经常在本地终端里运行,任务执行状态不容易集中观察。

Portal 提供了 Agent 事件上报接口,可以接收 hooks 事件,并在“当前 Agent 任务”页展示:

  • 当前会话
  • 首个问题
  • 执行状态
  • 当前工具
  • 模型
  • 已用 Token
  • 上下文窗口
  • 工作目录

这个设计不侵入 Agent 工具本身,只做状态观察和记录。

新闻更新降低沟通成本

模型上下线、套餐调整、文档更新、资源状态变化,都可以在新闻更新页集中发布。

对用户来说,这是一个低成本的变更入口;对维护者来说,也减少了重复解释。

背后的设计取舍

这套系统的核心取舍是:让专业组件做专业的事。

LiteLLM 继续负责:

  • 模型代理
  • 虚拟 Key
  • 模型权限
  • 预算
  • spend logs
  • RPM / TPM

Portal 负责:

  • 用户体验
  • 注册登录
  • 套餐订单
  • 支付回调
  • 用量聚合
  • 浏览器聊天
  • 调用文档
  • Agent 任务展示

本地数据库只保存门户业务状态,例如用户、订单、会话、聊天历史和 Agent 事件。模型调用、Key 权限和预算仍以 LiteLLM 为事实来源。

这样的边界比较清楚,后续要换支付、换邮件、调整套餐、增加模型或更新页面,都不会影响核心网关能力。

Codex/Claude代理

参考2个proxy,我们可以把codex和ClaudeCode的20美元套餐转换成API,基本上20美元换算成API调用大概能有个2000美金,国内各种流行的中转站天价的福利大抵来自于此~想发财还是得信息差,哈哈

更多详情请goto我的开源仓库:

https://github.com/jacksonjack001/deepnoting-portal-proxy

注:我这个也是基于两个开源的项目用codex魔改得到的,主要是对claude这个加了一个图形化的界面,然后提供了一个接口可以同时查两者的用户状态和窗口余量。如果有兴趣深入研究可以去看原始仓库~

在线体验

可以从这里进入控制台:

https://deepnoting.cn/portal/[1]

如果你正在做 AI 服务、内部模型网关、多模型接入、Agent 工具接入或 API Key 运营,这类门户会比单纯暴露一个网关更容易长期维护。

更进一步

如果想要进一步了解原理,需要再研究下litellm的原理和chatgpt、claude的计费体系,可以参考下面2个文章:

LiteLLM核心原理

liz+CX-CC,公众号:深度记事中转站的核心底座之—LiteLLM详细介绍

ChatGPT/Claude的计费体系

liz,公众号:深度记事Claude vs GPT 收费体系深度调研

有兴趣可以加微拉你进群深入交流: