将ChatGPT对接到飞书或钉钉2-创建模型并对接
一、 创建Azure OpenAI模型
- 在搜索框中直接搜openai,然后点击进入,如下图所示:

- 点击上图页面上的创建Azure OpenAI按钮跳转到如下页面:

- 点击”下一步”,跳转到如下页面:这里选择所有网络即可

- 后面的都是默认的,最后点击创建:

- 部署完成后,点击”转到资源”到如下页面:记录一下终结点 和理密钥中密钥1或密钥2 ,后面会用到


- 再点击上图左侧”模型部署”进入Azure OpenAI Studio页面:这里记录一下部署名 后面要用到

- 创建完成之后点击左侧”聊天”菜单,随便输出一句话点击”发送”,然后点击”查看代码”:


- 记录一下代码中的openai.api_version的值,我这里是2023-03-15-preview
- OK,现在需要的参数都已经获取完毕!下面就是正式对接飞书或钉钉了。
二、 对接飞书
- 飞书开发者平台的操作在GitHub上已经有教程了,这里不再赘述。
- 使用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
- 全部搞定后,可以在飞书群中将机器人拉入群,然后@机器人触发。如下图所示:

- 也可以私聊。注意连续对话需要用回复的方式回复机器人,否则机器人会认为是新的对话。
- 发送帮助则可以查看一些特定指令:

三、 对接钉钉
- 同样钉钉开发者平台的操作在GitHub上已经有教程了,这里不再赘述。
- 点击这里下载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
- 同样,全部搞定后,可以在钉钉群中将机器人拉入群,然后@机器人触发或者私聊触发。如下图所示:

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Eber的小窝!
评论



