V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sh1n3zZ
V2EX  ›  程序员

比 nextweb+oneapi 更完美的 Golang AI 一站式开源项目

  •  2
     
  •   Sh1n3zZ ·
    Sh1n3zZ · 51 天前 · 2459 次点击
    这是一个创建于 51 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    前两天逛 v2 ,看到有 GPT 前端项目相关需求的朋友
    再往下看 发现各位对这俩项目吐槽的点还蛮多的
    类似于 支持 access token 、交互反应慢、数据只能存在本地、用户分组仍有局限性、不支持国产大模型或 Gemini Claude 等模型... 等等等等这些问题

    看了半天,突然反应过来自家产品有针对这些问题的解决方案
    (但是一直不敢发,怕被各大佬吊起来锤)
    遂作此篇。

    Tip 以下内容 可能过长或废话较多 ,建议您在 选取自己需要的 Part 阅读后 前往本项目的 GitHub 以查看更加详细的 README
    https://github.com/Deeptrain-Community/chatnio 下图为该项目的 实机演示图 ,您也可以 前往我们的演示站点 https://chatnio.net/ ,我们的演示站点 同时提供 GPT 系所有模型 1CNY = 1USD (即官网七折转发)和 其他模型(如:Claude 、SparkDesk 、ChatGLM 等)。具体计费标准见 https://docs.chatnio.net/

    实机演示

    项目亮点

    • 拥有 NextWeb + OneAPI全部功能 (即基础功能)
      用户管理 支持的操作比 OneAPI 更丰富、更灵活 包括用户列表、用户详情、管理操作 (修改密码、修改邮箱、封禁 / 解封用户、设为管理员、点数变更、点数设置、订阅管理、订阅等级设置、释放订阅用量 等操作)
      支持邀请码 / 兑换码 邀请码便于前期推广使用(可设置每个用户 同种类型邀请码仅可使用一次 )、兑换码使支付方式更灵活。同时兑换码支持管理操作、支持批量生成和保存为文件,便于直接导入分发系统

    • 拥有 弹性计费订阅 两种模式,收费更加灵活

    • 支持 Docker-Compose 一键部署 ,一条命令即可部署运行,也可以自行选择 是否外挂数据库

    • 可自定义性强 ,可直接在后台自定义网站名称、Logo 、文档链接,暂停注册、设置初始点数等,可自定义购买链接(配合分发系统使用)、联系方式、页脚信息等。 无需修改代码、无需代码基础

    • 基于 Go 语言开发 ,性能可观的同时 原生实现多渠道分配算法 而非 OneAPI 依靠禁用渠道实现伪“多优先级渠道切换”
      得益于 Go 语言 ,该项目性能高的同时所需配置极低,基本上 所有能够正常使用 Docker-Compose 的机器都能运行本项目

    • 前后端分离 使用 React 进行前端开发 ,使用 React 原生实现 i18n ,而非 OneAPI 使用 Python 脚本实现 i18n

    • 聊天记录全部能够存储于云数据库 ,实现多设备间同步,略领先于 NextWeb 存储于本地 ,切设备即丢失聊天记录

    • 支持 Vision 识图模型 (如 GPT-4 Vision Preview 、Gemini Pro Vision 等模型) 、支持 DALLE 3 等绘图模型 ,原生填补 NextWeb 在多模态方面的空白,同时支持 直接上传图片直链 / Base64 图片

    • 太多了,写不完了,真写完这么多也不一定有人看,所以 更多亮点等待你们去发现前往该项目 GitHub 查看 README ...

    转至项目 / 如何部署

    您可以前往 GitHub https://github.com/Deeptrain-Community/chatnio 查看本项目的开源仓库及部署方式
    部署方式 包括 Docker-Compose 、Docker 、 自行编译安装

    技术栈

    • 前端:React + Radix UI + Tailwind CSS + Shadcn + Tremor + Redux
    • 后端:Golang + Gin + Redis + MySQL
    • 应用技术:PWA + WebSocket

    实机演示

    聊天预览 计费管理 用户管理

    写在最后

    这个项目其实还有很多能够改进的地方,十分希望各位大佬能够给予批评或贡献
    在此十分感谢为该项目做出贡献的各位大佬!!

    36 条回复    2024-04-04 15:22:27 +08:00
    Sh1n3zZ
        1
    Sh1n3zZ  
    OP
       51 天前
    我看他们都是作者自己抢一楼,我也抢个一楼
    lknife
        2
    lknife  
       51 天前
    真厉害
    0o0O0o0O0o
        3
    0o0O0o0O0o  
       51 天前 via iPhone
    花里胡哨,我太喜欢了
    Sh1n3zZ
        4
    Sh1n3zZ  
    OP
       51 天前
    @lknife 感谢支持 Orz
    也欢迎给这个起步阶段的小项目提点建议来帮助我们做得更好
    在此感激不尽~
    Sh1n3zZ
        5
    Sh1n3zZ  
    OP
       51 天前
    @0o0O0o0O0o 感谢支持 我们也是觉得要做就要做点与众不同的 (≧∇≦)ノ
    agegcn
        6
    agegcn  
       51 天前
    看起来不错 我有空测一测
    yanyao233
        7
    yanyao233  
       51 天前 via Android
    太厉害了!看了看两位 contributor 的 profile ,都好牛 qaq
    Sh1n3zZ
        8
    Sh1n3zZ  
    OP
       51 天前
    @agegcn 感谢感谢 很幸运在项目起步阶段能有各位的支持
    Sh1n3zZ
        9
    Sh1n3zZ  
    OP
       51 天前
    @yanyao233 其实这个项目只有一个 contributor ,另一个是摸鱼的((
    qloog
        10
    qloog  
       51 天前
    好厉害,必须去看看,另外技术栈也是我喜欢的 😝
    Sh1n3zZ
        11
    Sh1n3zZ  
    OP
       51 天前
    @qloog
    感谢支持~
    btw golang 最近发展的势头确实很猛((
    不少大厂都入了 go 教
    sayyiku
        12
    sayyiku  
       51 天前
    很强
    Hequndev
        13
    Hequndev  
       51 天前 via iPhone
    好好好 已 star 必须去试试 真的好棒(:
    Sh1n3zZ
        14
    Sh1n3zZ  
    OP
       51 天前
    @sayyiku 感谢支持捏~
    Sh1n3zZ
        15
    Sh1n3zZ  
    OP
       51 天前
    @Hequndev 感谢支持!
    TravisMtg
        16
    TravisMtg  
       51 天前
    第一位 contributor 是 2009 年出生的?这也太猛了吧🥹(又是来人间凑数的一天)
    mightybruce
        17
    mightybruce  
       51 天前
    这些模型我都用过, 这个项目支持得挺全的,不错。
    wzw
        18
    wzw  
       51 天前 via iPhone
    支持,正式想要的。

    去买了 n 家 API ,有些有时有问题,或者慢,来个自己聚合用
    winterx
        19
    winterx  
       51 天前
    太强了 已 star
    Sh1n3zZ
        20
    Sh1n3zZ  
    OP
       51 天前 via iPhone
    @TravisMtg 是这样的 这个项目都是他一个人搓的😭
    Sh1n3zZ
        21
    Sh1n3zZ  
    OP
       51 天前 via iPhone
    @mightybruce 感谢支持!
    Sh1n3zZ
        22
    Sh1n3zZ  
    OP
       51 天前 via iPhone
    @wzw 使用中有遇到问题欢迎跟我们反馈喔
    Sh1n3zZ
        23
    Sh1n3zZ  
    OP
       51 天前 via iPhone
    @winterx 感谢支持~
    metalvest
        24
    metalvest  
       51 天前 via Android
    Gemini 不是免费的吗怎么也计费
    ProgramZmh
        25
    ProgramZmh  
       50 天前 via Android
    哇!感谢大佬的推文!感谢大家的支持!🙏
    ProgramZmh
        26
    ProgramZmh  
       50 天前 via Android
    @metalvest 是的 用 gemini 以及讯飞这些首先推荐自己部署自己填 key 可以自己设置计费规则的 chatnio 官网上计费只是为了防止滥用 :)
    chancat
        27
    chancat  
       50 天前 via Android
    打开弹出半个屏幕的公告。
    点生成 ai 项目就不停的弹令牌失效,
    点别的想试试看看就跳转到别的网站要注册要登录
    用户体验极差。
    Sh1n3zZ
        28
    Sh1n3zZ  
    OP
       50 天前 via iPhone
    @chancat
    公告可自行设置是否开启,演示站点公告用于提示使用演示站点的用户
    由于模型需要计费,而计费必须有账户管理,故必须登陆,但如果您自行搭建且将计费设置为免费、匿名用户也可以使用则不会触发登陆
    而“其他网站”则是我们的 SSO 系统,在开源版中已经实现 ALL IN ONE ,在当前站点即可实现登陆等操作

    综上,您可以自行搭建本系统并进行对应设置来满足您的以上要求,且这些设置都可以在后台直接操作、无需代码基础。如果您需要在满足以上条件的同时使用我们的转发服务并享受 1:1 的价格,您也可以在自行搭建后前往渠道管理一键同步上游直接同步我们的所有模型

    感谢您的支持与耐心阅读
    wzw
        29
    wzw  
       50 天前
    @Sh1n3zZ Star 一个, 粗略看了一下, 没看到这样一个功能.

    有 N 个 openapi 服务商, 例如 gptapi.us/钱多多/官方 三个供应商,
    1. 整体按优先级进行尝试, 因为有些时候有些接口有问题, 会自动切换.
    2. 或者某个模型可以按特定的优先级调用.

    谢谢
    ProgramZmh
        30
    ProgramZmh  
       50 天前
    @chancat
    1. 自行部署公告可以自定义。
    2. AI 生成器无效的令牌是因为没有登录。并且我在 Firefox, Chrome, Edge 中都没有复现到不停弹多次,如果方便的话请提供完整的复现步骤提出 issue 。(同时附加功能已经放弃支持,推荐您看下文档)
    3. 别的网站是指统一用户管理, 只有官网使用, 统一用户管理是常规做法, 可以获得更高的转换率和一键登录。自部署的话是没有所述“弹别的网站”的情况。
    ProgramZmh
        31
    ProgramZmh  
       50 天前
    @wzw 首先,非常感谢支持!
    我回答一下:
    1. 会自动切换,根据优先级高低,如果高优先级失败将自动向下优先级请求,没有禁用渠道是确实,是因为我认为暂时失效的渠道进行禁用和恢复渠道(需要手动恢复 即使 healthcheck 也有延时)都有弊端,之后会考虑增加“禁用渠道”这一选项。
    2. 没有对于模型的特定优先级调用,但是可以选择每个渠道的可调用模型,分开为多个渠道,之后会思考如何实现此功能。
    a707782628
        32
    a707782628  
       46 天前
    谢谢作者,使用了下很好用,就是想问下我还想使用 newbing 的渠道,但是启动 chatnio-bing-service 后回复 websocket connection failed ,改用我现在在用的 bingo 后,回复 no response 。bingo 的 openapi 好像没有密钥设置,但是这里必须设置密钥是不是这个导致的问题?
    a707782628
        33
    a707782628  
       46 天前
    还有 geminivision 发送文字加图片会回复 Multiturn chat is not enabled for models/gemini-pro-vision (code: 400, status: INVALID_ARGUMENT),发送文字回复 Add an image to use models/gemini-pro-vision, or switch your model to a text model. (code: 400, status: INVALID_ARGUMENT)。我试过 lobechat 是可以正常文字加图片回复的
    kurui
        34
    kurui  
       28 天前
    支持一个
    ProgramZmh
        35
    ProgramZmh  
       23 天前 via Android
    @a707782628 chatnio-bing-service 已被存档,bingo 回复 no response 一般是因为 bingo 无法连接 new bing ,密钥填 bunny 即可
    ProgramZmh
        36
    ProgramZmh  
       23 天前 via Android
    @a707782628 这是 Gemini 的问题,gemini pro vision 不支持多轮对话,并且如果不发送图片只有文字也会报错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   873 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:54 · PVG 04:54 · LAX 13:54 · JFK 16:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.