花一周时间写了一个 LLM-API 管理订阅的会员系统

17 天前
 chnwine

Hi, 大家好

我在做另一个产品Swiflow的,时候一直犹豫要不要做一个会员系统。我把 App 发给周围的朋友时,好多都问 Api Key 怎么获取,有时无奈只好把自己的 Key 直接发给对方。

犹豫再三,便决定接入一个会员系统,刚开始有去了解 one-api\newapi 这些,但这些更多的是 api 管理,而我期望的是像 Trae\Cursor 这样的封闭型系统,

在这个基础上于是就有了现在的《基于订阅和套餐的 LLM 会员管理系统》(llm-member),话不多说,上链接

演示地址: https://llm-member.fly.dev/

后台地址: https://llm-member.fly.dev/admin

账号密码:admin/admin123

Github: https://github.com/OptLTD/llm-member

附上 Readme, 欢迎大家吐槽拍砖


LLM Member - 支持 LLM Proxy 的会员管理系统

一个专为开发者和企业打造的 LLM 代理服务平台,提供完整的会员管理体系和灵活的模型接入管理。

🎯 产品定位

面向用户:

面向管理:

解决什么问题?

💡 核心价值

🎭 对用户完全透明的 AI 服务

您的用户只需要:

  1. 注册账号
  2. 选择套餐
  3. 开始使用

用户无需知道:

⚙️ 对管理侧可灵活调整上游模型

🔧 开箱即用,兼容 OpenAI 接口

只要是适配 OpenAI 的接口,直接接入即可使用,无需任何修改:

// 标准 OpenAI 接口调用方式
fetch('/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer user_token',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'gpt-3.5-turbo',
    messages: [{
      role: 'user',
      content: '帮我写一份产品介绍'
    }]
  })
})

🚀 快速开始

1. 部署服务

docker run -d \
   --name llm-member-app \
   -p 8080:8080 \
   -v llm_storage:/app/storage \
   -e APP_PORT=8080 \
   -e APP_MODE=test \
   -e ADMIN_USERNAME=admin \
   -e ADMIN_PASSWORD=admin123 \
   -e DEEPSEEK_API_KEY=sk-you-api-key \
   optltd/llm-member:latest

完整配置参考.env.example

2. 配置您的产品

2.1. 在您的产品中集成 LLM Member 认证服务:

增加登录注册功能,用户可以通过 LLM Member 认证服务进行注册和登录。 Authorization Url: https://your-domain.com/authorization

2.2. 在您的产品中存储用户认证信息:

在 LLM Member 认证成功后,如果设置了Callback Url,认证服务会将用户信息返回给您的产品。您需要在您的产品中存储这些信息,以便后续的 API 调用。

payload:

{
  "token": "sk-xxxxxxxxxxxxxxxx", // 临时 token
  "sign": "sn-xxxxxxxxxxxxxxxxx", // 签名信息
  "time": "2023-12-31T23:59:59Z"  // current time
}

2.2.1 Web Callback 设置: Web App Callback Url: https://your-web-app.com/auth-callback 实际回调请求为: https://your-web-app.com/auth-callback?token=sk-...&sign=...&time=...

2.2.2 Mobile App Callback 设置: Mobile App Callback Url: x-you-app://auth-callback 实际回调请求为: x-you-app://auth-callback?token=sk-...&sign=...&time=...

2.2.3 Desktop App Callback 设置: Mobile App Callback Url: x-you-app://auth-callback 实际回调请求为: x-you-app://auth-callback?token=sk-...&sign=...&time=...

2.2.4 通过token获取用户信息: 获取用户信息接口:https://your-domain.com/v1/verify-token

const resp = fetch(`https://your-domain.com/v1/verify-token`, {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer ${token}',
    'Content-Type': 'application/json'
  },
})

响应体:

{
  "email": "user@example.com",
  "username": "User Name",
  "user_plan": "basic",
  "api_token": "sk-xxxxxxxxxxxxxxxx",
  "expire_at": "2023-12-31T23:59:59Z"
}

2.3. 在您的产品中集成 LLM Member 服务:

2.3.1 请求大模型: Base Url:https://your-domain.com/v1 实例请求:

// 标准 OpenAI 接口调用方式
fetch(`${baseURL}/chat/completions`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${api_token}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'gpt-3.5-turbo',
    messages: [{
      role: 'user',
      content: '帮我写一份产品介绍'
    }]
  })
})

2.3.2 获取用户信息: 获取用户信息接口:https://your-domain.com/v1/user-profile

const resp = fetch(`https://your-domain.com/v1/user-profile`, {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${api_token}`,
    'Content-Type': 'application/json'
  },
})

响应体:

{
  "email": "user@example.com",
  "username": "User Name",
  "user_plan": "basic",
  "expire_at": "2023-12-31T23:59:59Z"
}

2.3.3 获取使用统计信息: 获取用户信息接口:https://your-domain.com/api/usage

cosnt resp = fetch(`https://your-domain.com/api/usage`, {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer user_token',
    'Content-Type': 'application/json'
  },
})

响应体:

{
  "email": "user@example.com",
  "username": "User Name",
  "user_plan": "basic",
  "expire_at": "2023-12-31T23:59:59Z"
}

3. 为用户提供服务

用户访问您的产品时:

  1. 引导用户注册/登录
  2. 展示套餐选择页面
  3. 用户选择套餐并支付
  4. 立即开始使用 AI 功能

让 AI 能力触手可及,让您专注于核心业务价值创造。

1375 次点击
所在节点    分享创造
7 条回复
chnwine
17 天前
这个好像更完善: https://v2ex.com/t/1021608
tangxiangpi325
14 天前
支持 stripe 支付么
chnwine
14 天前
@tangxiangpi325 我可以给你加上,抖抖手的事儿
tangxiangpi325
14 天前
@chnwine 刚才试用了下,支付按钮是灰色的,现在集成的是啥支付?
chnwine
14 天前
@tangxiangpi325 支付宝、微信相关的代码是加进去了,但我还在申请相关的账号,约等于验证过的都还没有。非 release 模式,有一个 mock 支付可验证下流程是否符合自己的业务
flavoury
13 天前
楼主,这玩意你写了多久啊
chnwine
13 天前
@flavoury 8.9 号开始写的,8.15 号整个糊起来带 readme 发的 github.从这个点算是一周,但中间修 token 计算、修会员限制、修统计功能又花了两三天

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1153658

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX