【钉钉 & GPT-3.5 让你的工作效率直接起飞!】本项目基于GO语言实现,可以助你将GPT机器人集成到钉钉群聊当中 。当前默认模型为 gpt-3.5 。
功能介绍示例
与机器人私聊:
帮助列表:
艾特机器人发送空内容或者帮助,会返回帮助列表 。
切换模式:
发送指定关键字 , 可以切换不同的模式 。
注意:串聊模式下 , 群里每个人的聊天上下文是独立的 。注意:默认对话模式为单聊,因此不必发送单聊即可进入单聊模式,而要进入串聊,则需要发送串聊关键字进行切换接收服务器消息回调url失败,当串聊内容超过最大限制的时候,你可以发送重置,然后再次进入串聊模式 。
查询余额:
艾特机器人发送 余额 二字 , 会返回当前 key 对应的账号的剩余额度以及可用日期 。
日常问题:
通过内置prompt聊天:
发送模板两个字,会返回当前内置支持的prompt列表 。
生成图片:
发送以 #图片开头的内容,将会触发绘画能力,图片生成之后,将会保存在程序根目录下的images目录下 。
使用教程
使用前提:
1、有 Openai 账号接收服务器消息回调url失败 , 并且创建好 api_key 。
2、在钉钉开发者后台创建机器人,配置应用程序回调 。
创建步骤参考文档:https://open.dingtalk.com/document/robots/enterprise-created-chatbot
第一步,创建机器人
创建机器人:
注意1:可能现在创建机器人的时候名字为chatgpt会被钉钉限制 , 请用其他名字命名 。注意2:第四步骤点击创建应用的时候,务必选择使用旧版,从而创建旧版机器人
配置机器人回调接口:
创建完毕之后,点击机器人开发管理,然后配置将要部署的服务所在服务器的出口IP,以及将要给服务配置的域名 。
如果提示: 消息接收地址校验失败(请确保公网可访问该地址,如无有效SSL证书,可选择禁用证书校验),那么可以先输入一个 , 然后就能看到禁用https的选项了 , 选择禁用,然后再把地址改成http就好了 。
发布机器人:
点击版本管理与发布 , 然后点击上线 , 这个时候就能在钉钉的群里中添加这个机器人了 。
群聊添加机器人:
第二步,部署应用
docker部署:
可以使用docker快速运行本项目 。
第一种:基于环境变量运行# 运行项目$ docker run -itd --name chatgpt -p 8090:8090 --add-host="host.docker.internal:host-gateway" -e APIKEY=换成你的key -e BASE_URL="" -e MODEL="gpt-3.5-turbo" -e SESSION_TIMEOUT=600 -e HTTP_PROXY="http://host.docker.internal:15732" -e DEFAULT_MODE="单聊" -e MAX_REQUEST=0 -e PORT=8090 -e SERVICE_URL="你当前服务外网可访问的URL" --restart=alwaysdockerproxy.com/eryajf/chatgpt-dingtalk:latest
运行命令中映射的配置文件参考下边的配置文件说明:
第二种:基于配置文件挂载运行# 复制配置文件,根据自己实际情况,调整配置里的内容$ cp config.dev.json config.json# 其中 config.dev.json 从项目的根目录获取# 运行项目$ docker run -itd --name chatgpt -p 8090:8090-v `pwd`/config.json:/app/config.json --restart=alwaysdockerproxy.com/eryajf/chatgpt-dingtalk:latest
其中配置文件参考下边的配置文件说明 。
第三种:使用 docker compose 运行$ wget https://raw.githubusercontent.com/eryajf/chatgpt-dingtalk/main/docker-compose.yml$ nano docker-compose.yml # 编辑 APIKEY 等信息$ docker compose up -d
注意,不论通过上边哪种docker方式部署,都需要配置Nginx代理,当然你直接通过服务器外网IP也可以 。
部署完成之后,通过Nginx代理本服务:
server {listen80;server_namechat.eryajf.net;client_header_timeout 120s;client_body_timeout 120s;location / {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-For $remote_addr;proxy_pass http://localhost:8090;}}
部署完成之后,就可以在群里艾特机器人进行体验了 。
Nginx配置完毕之后,可以先手动请求一下,通过服务日志输出判断服务是否正常可用:
$ curl --location --request POST 'http://chat.eryajf.net/'--header 'Content-type: application/json'--data-raw '{"conversationId": "xxx","atUsers": [{"dingtalkId": "xxx","staffId":"xxx"}],"chatbotCorpId": "dinge8a565xxxx","chatbotUserId": "$:LWCP_v1:$Cxxxxx","msgId": "msg0xxxxx","senderNick": "eryajf","isAdmin": true,"senderStaffId": "user123","sessionWebhookExpiredTime": 1613635652738,"createAt": 1613630252678,"senderCorpId": "dinge8a565xxxx","conversationType": "2","senderId": "$:LWCP_v1:$Ff09GIxxxxx","conversationTitle": "机器人测试-TEST","isInAtList": true,"sessionWebhook": "https://oapi.dingtalk.com/robot/sendBySession?session=xxxxx","text": {"content": " 你好"},"msgtype": "text"}'
如果手动请求没有问题,那么就可以在钉钉群里与机器人进行对话了 。
二进制部署:
如果你想通过命令行直接部署,可以直接下载release中的压缩包,请根据自己系统以及架构选择合适的压缩包,下载之后直接解压运行 。
https://github.com/eryajf/chatgpt-dingtalk/releases
下载之后,在本地解压 , 即可看到可执行程序,与配置文件:
$ tar xf chatgpt-dingtalk-v0.0.4-darwin-arm64.tar.gz$ cd chatgpt-dingtalk-v0.0.4-darwin-arm64$ cp config.dev.json config.json # 然后根据情况调整配置文件内容,宿主机如遇端口冲突,可通过调整config.json中的port参数自定义服务端口$ ./chatgpt-dingtalk # 直接运行# 如果要守护在后台运行$ nohup ./chatgpt-dingtalk &> run.log &$ tail -f run.log
配置文件说明
{"api_key": "xxxxxxxxx",// openai api_key"base_url": "api.openai.com", //如果你想指定请求url的地址,可通过这个参数进行配置,默认为官方地址,不需要再添加 /v1"model": "gpt-3.5-turbo", // 指定模型,默认为 gpt-3.5-turbo , 可选参数有: "gpt-4-32k-0314", "gpt-4-32k", "gpt-4-0314", "gpt-4", "gpt-3.5-turbo-0301", "gpt-3.5-turbo", "text-davinci-003", "text-davinci-002", "text-curie-001", "text-babbage-001", "text-ada-001", "text-davinci-001", "davinci-instruct-beta", "davinci", "curie-instruct-beta", "curie", "ada", "babbage""session_timeout": 600,// 会话超时时间,默认600秒,在会话时间内所有发送给机器人的信息会作为上下文"http_proxy": "",// 指定请求时使用的代理,如果为空,则不使用代理"default_mode": "单聊",// 默认对话模式,可根据实际场景自定义 , 如果不设置,默认为单聊"max_request": 0,// 单人单日请求次数限制,默认为0,即不限制"port": "8090",// 指定服务启动端口 , 默认为 8090,一般在二进制宿主机部署时,遇到端口冲突时使用 。"service_url": "" // 指定服务的地址,就是当前服务可供外网访问的地址,用于生成图片时给钉钉渲染}
本文到此结束 , 希望对大家有所帮助!
猜你喜欢
- vue3中怎么使用路由?与vue2路由的区别?vue-router方法总结大全
- 朋友们贷款能否顺利申请成功还得看这四类关系人!
- 途游残局大全攻略破解大全 途游残局大全及答案
- 车贷还清车子就属于你的了?不存在的
- 第三章之三 一建项目管理知识要点
- 一文看懂企业微信开发简易教程
- 国家没有认可的赚钱游戏 十元可提现游戏
- 婴儿嘴唇起白点怎么办3种处理方法让妈妈们别担心
- 信用卡一直“最低还款”,征信会有影响吗?银行员工告诉你答案