V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
easychen
V2EX  ›  分享创造

也写了一个 OpenAI ChatBot —— Bot 酱,基于微信测试号+客服消息

  •  1
     
  •   easychen ·
    easychen · 2023-10-09 14:40:12 +08:00 · 3765 次点击
    这是一个创建于 407 天前的主题,其中的信息可能已经有所发展或是发生改变。

    特色:

    1. 基于微信测试号,不容易被封,可以邀请 100 人使用,适合小团队使用(当然理论上你也可以用来对接公众号)
    2. 基于客服消息,不受 5 秒超时限制
    3. 支持用户通过命令设置 API KEY 、URL
    4. 支持设置触发词

    详细说明和代码请移步 GitHub:https://github.com/easychen/botchan 欢迎 Star ⭐️

    第 1 条附言  ·  2023-10-10 22:39:10 +08:00
    更新说明:

    支持了 Azure 接口,非常适合团队使用;通过环境变量设置模型名称、超时、Max Tokens 、Temperature ;支持流模式,每生成一定的字数自动发送。
    37 条回复    2023-10-27 21:36:20 +08:00
    babaohuang
        1
    babaohuang  
       2023-10-09 14:56:34 +08:00
    请问如何设置模型名称?
    easychen
        2
    easychen  
    OP
       2023-10-09 15:30:38 +08:00
    @babaohuang 现在只能用 3.5 ,稍后我加个环境变量吧。
    Alexsen
        3
    Alexsen  
       2023-10-09 15:36:33 +08:00
    刚在微博看到,正在配置,已 Star
    Armor
        4
    Armor  
       2023-10-09 16:20:45 +08:00
    海外服务器 nginx 代理了官方的 api 接口,可以直接使用吗?试了下没反应
    babaohuang
        5
    babaohuang  
       2023-10-09 16:35:02 +08:00
    @easychen 好的,谢谢大佬!
    easychen
        6
    easychen  
    OP
       2023-10-09 16:43:40 +08:00
    @babaohuang 加上了,通过 DEFAULT_MODEL 指定,通过 setModel 命令设置,通过 LOCK_MODEL 锁定命令。

    https://github.com/easychen/botchan#%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AE
    sunnyguyu91
        7
    sunnyguyu91  
       2023-10-09 16:53:00 +08:00
    不支持 arm 架构啊,难受了
    anubu
        8
    anubu  
       2023-10-09 17:04:33 +08:00
    是否支持 Azure 的 OpenAI 服务接口?简单部署了一下,对接 Azure 的接口不成功。

    Web server started on port 9000
    remove cache
    ai ret {
    error: {
    code: 'DeploymentNotFound',
    message: 'The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again.'
    }
    }
    Unhandled Rejection at: Promise {
    <rejected> SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at llmReply (file:///app/index.js:349:48)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    } reason: SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at llmReply (file:///app/index.js:349:48)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    babaohuang
        9
    babaohuang  
       2023-10-09 17:11:32 +08:00
    @easychen 👍👍感谢!
    easychen
        10
    easychen  
    OP
       2023-10-09 17:36:02 +08:00
    @sunnyguyu91 linux/amd64,linux/arm64,linux/arm/v7 都支持了。其他架构自己拉 dockerfile 编译一下就行。
    easychen
        11
    easychen  
    OP
       2023-10-09 17:40:00 +08:00
    @anubu 应该是之前的默认 deployment 没有对应上。我更新了一下,你拉取最新镜像试试。

    模型和 deployment 映射如下:

    ```
    {
    'gpt-3.5-turbo':'gpt-35-turbo',
    'gpt-3.5-turbo-0301':'gpt-35-turbo-0301',
    'gpt-3.5-turbo-0613':'gpt-35-turbo-0613',
    'gpt-3.5-16k':'gpt-35-16k',
    'gpt-3.5-16k-0613':'gpt-35-16k-0613',
    'gpt-4':'gpt-4',
    'text-embedding-ada-002':'text-embedding-ada-002',
    }
    ```
    babaohuang
        12
    babaohuang  
       2023-10-09 17:42:06 +08:00
    大佬,还有一些问题,就是这个可以支持连续对话吗?还有,支持自定义 system content 吗?
    easychen
        13
    easychen  
    OP
       2023-10-09 17:51:15 +08:00
    @babaohuang

    ① 不支持连续对话,本来打算支持引用,但测试号里边引用不了,所以没做。
    ② 支持 system message ,文档里边有写
    Armor
        14
    Armor  
       2023-10-09 18:19:50 +08:00 via iPhone
    大佬可以看下我的问题吗?
    Darin726
        15
    Darin726  
       2023-10-09 18:30:42 +08:00
    @Armor #4 我也是没反应,db.json 没有生成
    easychen
        16
    easychen  
    OP
       2023-10-09 18:31:02 +08:00
    @Armor 只要和 openai 兼容的接口都能用,不能用可能是你配置填错了,可以在本地搭建下,用同样的参数,自己查一下报错信息。
    easychen
        17
    easychen  
    OP
       2023-10-09 18:33:21 +08:00
    @Darin726

    ① 默认触发词是 方糖,不带触发词没有响应
    ② docker 需要对当前目录有写权限,或者你把 /data 挂接到其他地方去。
    Armor
        18
    Armor  
       2023-10-09 19:43:06 +08:00
    @easychen #16 就在本地搭建的,我看映射了本机 data 目录是一个空的文件夹,是不是目录权限的问题
    easychen
        19
    easychen  
    OP
       2023-10-09 20:12:26 +08:00
    @Armor 开了台腾讯云主机实测,没有发现问题。请仔细阅读文档进行配置,核对参数和限制。

    另外可以查看 docker 日志,以确定问题。至于如何查看 docker 日志,可以问 GPT 。

    Armor
        20
    Armor  
       2023-10-09 22:05:26 +08:00
    @easychen #19
    ```
    2023-10-09 21:51:40 Web server started on port 9000
    2023-10-09 22:01:56 remove cache
    2023-10-09 22:02:01 ai ret {
    2023-10-09 22:02:01 id: 'chatcmpl-xxxxxxxxxxxx',
    2023-10-09 22:02:01 object: 'chat.completion',
    2023-10-09 22:02:01 created: 1696860117,
    2023-10-09 22:02:01 model: 'gpt-3.5-turbo-0613',
    2023-10-09 22:02:01 choices: [ { index: 0, message: [Object], finish_reason: 'stop' } ],
    2023-10-09 22:02:01 usage: { prompt_tokens: 9, completion_tokens: 18, total_tokens: 27 }
    2023-10-09 22:02:01 }
    2023-10-09 22:02:01 remove cache
    2023-10-09 22:02:01 get access token failed
    ```

    docker 看 log
    Armor
        21
    Armor  
       2023-10-09 22:07:46 +08:00
    @Armor #20
    这是我的 docker 启动命令
    docker run -itd `
    --name bot `
    -e MP_APPID=wx `
    -e MP_APPSECRET=123 `
    -e MP_TOKEN=123 `
    -e DEFAULT_API_URL=http://112.10.133.132 `
    -e DEFAULT_API_WORD= `
    -e DEFAULT_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx `
    -e LOCK_API_URL=true `
    -e LOCK_API_KEY=true `
    -e DB_TYPE=json `
    -v E:/OneDrive/docker/bot/data:/data `
    -p 12288:9000 `
    easychen/botchan:latest
    easychen
        22
    easychen  
    OP
       2023-10-09 22:26:15 +08:00
    @Armor get access token failed 是因为微信的 MP_APPID 或者 MP_APPSECRET 错了。

    话说你这反引号能运行?我记得我文档应该是写反斜杠 \ 。
    Armor
        23
    Armor  
       2023-10-09 23:47:59 +08:00
    @easychen #22 windows 是反引号,linux 是\
    Armor
        24
    Armor  
       2023-10-09 23:50:37 +08:00
    @easychen #22 还真是,为啥 MP_APPSECRET ,我会复制错,我很纳闷
    mosliu
        25
    mosliu  
       2023-10-10 11:35:01 +08:00
    @easychen 有几个问题
    1. 超时设定是否可以配置
    2. token 过长时分段返回。否则就是无返回。
    easychen
        26
    easychen  
    OP
       2023-10-10 15:05:48 +08:00
    @mosliu 我稍后加到环境变量里边吧
    mosliu
        27
    mosliu  
       2023-10-10 15:26:18 +08:00
    @easychen 谢谢 辛苦了。
    我自己改了。。代码写的丑就不提 pr 了。

    还有几个地方也可处理下
    1. 超时的提示
    2. cf 提示 503 时候的提示
    3. 返回过长时 sengMessage 分隔发送
    easychen
        28
    easychen  
    OP
       2023-10-10 16:21:05 +08:00
    @mosliu


    # 模型配置
    可以进一步指定模型参数优化需要的答复

    - MAX_TOKEN=1000 #返回的最大 token 数
    - TEMPERATURE=0.8 #模型的 temperature
    - TIMEOUT=180 #超时秒数
    - STREAM=true #是否采用流式传输

    # 截断设置
    过长文字可能导致内容无法返回,会截断为多条。

    注意:受微信平台限制,每次互动,只能最多回复五条消息,因此不要将字数设置太低,可能导致超过五条

    - REPLY_CHUNK_LENGHT=1000 #字数
    mosliu
        29
    mosliu  
       2023-10-10 17:09:38 +08:00
    @easychen 赞!!
    Silently
        30
    Silently  
       2023-10-10 17:47:55 +08:00 via iPhone
    能否增加个 azure openai 接口
    easychen
        31
    easychen  
    OP
       2023-10-10 17:53:04 +08:00
    @Silently 默认应该支持的,你试试?

    deployment 按这个创建:
    ```
    {
    'gpt-3.5-turbo':'gpt-35-turbo',
    'gpt-3.5-turbo-0301':'gpt-35-turbo-0301',
    'gpt-3.5-turbo-0613':'gpt-35-turbo-0613',
    'gpt-3.5-16k':'gpt-35-16k',
    'gpt-3.5-16k-0613':'gpt-35-16k-0613',
    'gpt-4':'gpt-4',
    'text-embedding-ada-002':'text-embedding-ada-002',
    }
    ```
    easychen
        32
    easychen  
    OP
       2023-10-10 17:55:17 +08:00
    @Armor 我好像也遇到了,有时候(尤其是刚开通时)测试号一直报错… 需要退出再重新登录
    Silently
        33
    Silently  
       2023-10-10 18:09:25 +08:00
    @easychen 我这边按照你说的创建 依旧报错 “"error":{"code":"DeploymentNotFound", "message":"The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again."” 模型名称和部署名是一致的

    ![]( https://s3.bmp.ovh/imgs/2023/10/10/a39c956e8870e80e.jpg)
    ![]( https://s3.bmp.ovh/imgs/2023/10/10/f14c9462e36d9c52.jpg)
    Silently
        34
    Silently  
       2023-10-10 18:10:30 +08:00
    环境变量为
    - DEFAULT_API_URL=https://xxxx.openai.azure.com
    - DEFAULT_API_WORD=
    - DEFAULT_API_KEY=2xxxxxx
    - DEFAULT_MODEL=gpt-35-turbo
    - LOCK_API_URL=true
    - LOCK_API_KEY=true
    - LOCK_MODEL=true
    - DB_TYPE=json
    easychen
        35
    easychen  
    OP
       2023-10-10 18:24:21 +08:00
    @Silently

    我测试没有问题。

    DEFAULT_MODEL 要用 gpt-3.5-turbo 或者不写。
    Silently
        36
    Silently  
       2023-10-10 18:39:37 +08:00
    @easychen 确实 改 gpt-3.5-turbo 或者不写就正常,感谢 OP
    DanielNg23
        37
    DanielNg23  
       2023-10-27 21:36:20 +08:00
    需要国内的 LLM 平台支持吗?可以来我们这边打一下黑客马拉松💪,有国内 LLM 厂商的支持,还有独立开发大佬作嘉宾,线上/线下均可参加😊,来线下能提供 7 天住宿顺便来大理到处玩玩⛰️🏄🎾🥏,最高有 AWS 提供的 2.5 万美金算力支持💰💰💰 https://mp.weixin.qq.com/s/MTqByjk8j_ekAMfcxgtP1g
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 05:25 · PVG 13:25 · LAX 21:25 · JFK 00:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.