一、 创建Azure OpenAI模型

  1. 在搜索框中直接搜openai,然后点击进入,如下图所示:
  2. 点击上图页面上的创建Azure OpenAI按钮跳转到如下页面:
  3. 点击”下一步”,跳转到如下页面:这里选择所有网络即可
  4. 后面的都是默认的,最后点击创建:
  5. 部署完成后,点击”转到资源”到如下页面:记录一下终结点 和理密钥中密钥1或密钥2 ,后面会用到

  6. 再点击上图左侧”模型部署”进入Azure OpenAI Studio页面:这里记录一下部署名 后面要用到
  7. 创建完成之后点击左侧”聊天”菜单,随便输出一句话点击”发送”,然后点击”查看代码”:

  8. 记录一下代码中的openai.api_version的值,我这里是2023-03-15-preview
  9. OK,现在需要的参数都已经获取完毕!下面就是正式对接飞书或钉钉了。

二、 对接飞书

  1. 飞书开发者平台的操作在GitHub上已经有教程了,这里不再赘述。
  2. 使用docker方式部署ConnectAI-E/Feishu-OpenAI项目,由于作者没有打镜像,这里使用我构建的镜像即可。把{}中的内容替换成你自己的即可。
    docker run -d --name feishu-chatgpt -p 9000:9000 \
    --env APP_ID={飞书应用凭证中的 App Id} \
    --env APP_SECRET={飞书应用凭证中的 App Secret} \
    --env APP_ENCRYPT_KEY={飞书应用-事件订阅中的 Encrypt Key} \
    --env APP_VERIFICATION_TOKEN={飞书应用-事件订阅中的 Verification Token} \
    --env BOT_NAME={飞书应用-机器人的名字} \
    --env AZURE_ON=true \
    --env AZURE_API_VERSION={前面第8步获取的openai.api_version 我的是2023-03-15-preview} \
    --env AZURE_RESOURCE_NAME={前面第5步获取的终结点域名的前缀 我的是eber-test1} \
    --env AZURE_DEPLOYMENT_NAME={前面第6步获取的部署名 我的是ebervip} \
    --env AZURE_OPENAI_TOKEN={前面第5步获取的密钥1或密钥2} \
    717160040/openai:feishu.v1 # 这里镜像名默认是arm的,如果是amd64的请使用717160040/openai:feishu_amd64_v1
  • 全部搞定后,可以在飞书群中将机器人拉入群,然后@机器人触发。如下图所示:
  • 也可以私聊。注意连续对话需要用回复的方式回复机器人,否则机器人会认为是新的对话。
  • 发送帮助则可以查看一些特定指令:

三、 对接钉钉

  1. 同样钉钉开发者平台的操作在GitHub上已经有教程了,这里不再赘述。
  2. 点击这里下载docker-compose.yml,这里我们用docker-compose方式部署ConnectAI-E/Dingtalk-OpenAI项目。参照下面的描述去修改下载的yml文件,下面我只列出需要修改的配置项,特别要注意带⚠️的配置项。
    version: '3'

    services:
    chatgpt:
    container_name: chatgpt
    image: registry.cn-hangzhou.aliyuncs.com/ali_eryajf/chatgpt-dingtalk
    restart: always
    environment:
    APIKEY: # ⚠️我们用的是azure,这里直接留空
    RUN_MODE: "stream" # 运行模式,http 或者 stream ,强烈建议你使用stream模式,通过此链接了解:https://open.dingtalk.com/document/isvapp/stream
    BASE_URL: "" # ⚠️我们用的是azure,这里直接留空
    MODEL: "" # ⚠️我们用的是azure,这里直接留空
    DEFAULT_MODE: "串聊" # 指定默认的对话模式,可根据实际需求进行自定义,如果不设置,默认为单聊,即无上下文关联的对话模式
    PORT: 8090 # 指定服务启动端口,默认为 8090,容器化部署时,不需要调整,一般在二进制宿主机部署时,遇到端口冲突时使用,如果run_mode为stream模式,则可以忽略该配置项
    SERVICE_URL: "http://1.1.1.1:8090" # ⚠️服务的地址 例如你服务器IP是1.1.1.1 则为http://1.1.1.1:8090
    CHAT_TYPE: "0"
    APP_SECRETS: "{钉钉机器人在应用信息中的AppSecret}" # 钉钉机器人在应用信息中的AppSecret,为了校验回调的请求是否合法,如果留空,将会忽略校验,则该接口将会存在其他人也能随意调用的安全隐患,因此强烈建议配置正确的secret,如果你的服务对接给多个机器人,这里可以配置多个机器人的secret,比如 "xxxx,yyyy"
    SENSITIVE_WORDS: "" # 敏感词,提问时触发,则不允许提问,回答的内容中触发,则以 🚫 代替
    AZURE_ON: "true" # ⚠️是否走Azure OpenAi API, 默认false ,如果为true,则需要配置下边的四个参数
    AZURE_API_VERSION: "" # ⚠️参考上面飞书的配置说明
    AZURE_RESOURCE_NAME: "" # ⚠️参考上面飞书的配置说明
    AZURE_DEPLOYMENT_NAME: "" # ⚠️参考上面飞书的配置说明
    AZURE_OPENAI_TOKEN: "" # ⚠️参考上面飞书的配置说明
    DINGTALK_CREDENTIALS: "xxx:xxxxxxxxxxxxxx" # ⚠️ # 钉钉应用访问凭证,比如 client_id1:secret1 是需要把这俩拼一起的,中间用冒号隔开,如果你的服务对接给多个机器人,这里可以配置多个机器人的凭证,比如 "client_id1:secret1,client_id2:secret2"
    volumes:
    - ./data:/app/data
    ports:
    - "8090:8090"
    extra_hosts:
    - host.docker.internal:host-gateway
  • 同样,全部搞定后,可以在钉钉群中将机器人拉入群,然后@机器人触发或者私聊触发。如下图所示: