写了个 ChatGPT 的 Teams Bot,用上了最新的 ChatGPT API - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
formulahendry
V2EX    分享创造

写了个 ChatGPT 的 Teams Bot,用上了最新的 ChatGPT API

  •  
  •   formulahendry
    formulahendry 2023-03-05 15:15:30 +08:00 3619 次点击
    这是一个创建于 1017 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前写过一个 OpenAI 的 Teams Bot ,但是当时还没有真正的 ChatGPT API 。

    不过这周,OpenAI 终于发布了 ChatGPT API 了。

    我也是第一时间基于真正的 ChatGPT API 撸了个真正的 ChatGPT Teams Bot:

    与 ChatGPT 一样,他们都是基于最新的 gpt-3.5-turbo model ,专门为聊天优化,能理解对话的上下文。

    我这个机器人的代码完全开源,而且 clone 下来之后,可以很方便地根据 README 的步骤直接 F5 玩起来。大家有兴趣的,可以围观下:

    https://github.com/formulahendry/chatgpt-teams-bot

    不过呢,目前的 ChatGPT Teams Bot 是个很初步的版本,有一些 limitations ,比如官方提供的 openai Node.js SDK 需要开发者自己拼接聊天记录。我就选择了第三方的 chatgpt Node.js SDK ,不过他也只是把聊天记录存在内存中。

    如此一来,我们会发现目前版本的一些问题:

    1. chat history 是存储在内存中的,如果 Bot 重启了,chat history 会丢失,怎么解决?

    2. 如果为了支持高并发,Bot 是部署在多个不同的 server 上的,如何保证 chat history 的一致性?

    3. gpt-3.5-turbo model 有 4000 token 的限制,而且 input 也是算进去的,如何处理 chat history 超过限制的问题?

    4. 如果 Bot 会被添加到多个 Teams 的聊天对话中,如何保证聊天 context 不相互干扰?

    4 条回复    2023-03-06 16:07:02 +08:00
    LiuJiang
        1
    LiuJiang  
       2023-03-05 21:20:27 +08:00
    接口被墙咋解决的,用国外的机器吗
    luomao
        2
    luomao  
       2023-03-06 11:25:29 +08:00
    @LiuJiang 可以加 socket 代理,在接口调用时
    LiuJiang
        3
    LiuJiang  
       2023-03-06 15:42:50 +08:00
    @luomao socket 代理嘛,代理到哪,国外机器嘛,没有国外机器,怎么白嫖,哈哈哈
    luomao
        4
    luomao  
       2023-03-06 16:07:02 +08:00
    @LiuJiang 有蛮多种申请免费 vps 的方法吧,譬如 oracle 啥的。
    我是直接用机场,再在 linux 部署的 V2RayA 等提供 socket http 等协议。
    如果有海外机器反向代理也能实现
    关于     帮助文档     自助推广系统         API     FAQ     Solana     5597 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 57ms UTC 02:30 PVG 10:30 LAX 18:30 JFK 21:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86