钉钉ampampampGPT3。5让你的工作效率直接起飞!
本项目基于GO语言实现,可以助你将GPT机器人集成到钉钉群聊当中。当前默认模型为 gpt-3.5。 功能介绍 帮助菜单:通过发送 帮助 将看到帮助列表 私聊:支持与机器人单独私聊(无需艾特) 群聊:支持在群里艾特机器人进行对话 单聊模式:每次对话都是一次新的对话,没有历史聊天上下文联系 串聊模式:带上下文理解的对话模式 图片生成:通过发送 #图片关键字开头的内容进行生成图片 角色扮演:支持场景模式,通过 #周报 的方式触发内置prompt模板 频率限制:通过配置指定,自定义单个用户单日最大对话次数 余额查询:通过发送 余额 关键字查询当前key所剩额度 自定义api域名:通过配置指定,解决国内服务器无法直接访问openai的问题 添加代理:通过配置指定,通过给应用注入代理解决国内服务器无法访问的问题 默认模式:支持自定义默认的聊天模式,通过配置化指定 示例
与机器人私聊:
帮助列表:
艾特机器人发送空内容或者帮助,会返回帮助列表。
切换模式:
发送指定关键字,可以切换不同的模式。
注意:串聊模式下,群里每个人的聊天上下文是独立的。 注意:默认对话模式为单聊,因此不必发送单聊即可进入单聊模式,而要进入串聊,则需要发送串聊关键字进行切换,当串聊内容超过最大限制的时候,你可以发送重置,然后再次进入串聊模式。
查询余额:
艾特机器人发送 余额 二字,会返回当前 key 对应的账号的剩余额度以及可用日期。
日常问题:
通过内置prompt聊天:
发送模板两个字,会返回当前内置支持的prompt列表。
生成图片:
发送以 #图片开头的内容 ,将会触发绘画能力,图片生成之后,将会保存在程序根目录下的images目录下。
使用教程使用前提:
1、有 Openai 账号,并且创建好 api_key。
2、在钉钉开发者后台创建机器人,配置应用程序回调。 创建步骤参考文档:https://open.dingtalk.com/document/robots/enterprise-created-chatbot
第一步,创建机器人
创建机器人:
注意1:可能现在创建机器人的时候名字为chatgpt会被钉钉限制,请用其他名字命名。 注意2:第四步骤点击创建应用的时候,务必选择使用旧版,从而创建旧版机器人
配置机器人回调接口:
创建完毕之后,点击机器人开发管理,然后配置将要部署的服务所在服务器的出口IP,以及将要给服务配置的域名。
如果提示: 消息接收地址校验失败(请确保公网可访问该地址,如无有效SSL证书,可选择禁用证书校验),那么可以先输入一个https://,然后就能看到禁用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=always dockerproxy.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=always dockerproxy.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 { listen 80; server_name chat.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": "" // 指定服务的地址,就是当前服务可供外网访问的地址,用于生成图片时给钉钉渲染 }
-END-
开源协议:MIT
开源地址:https://github.com/eryajf/chatgpt-dingtalk
隐入尘烟被下架,被成功和谐了?隐入尘烟被全网下架!为什么?想不通啊想不通。这部片子,为今年杀出的一匹黑马。以200万元的低成本投入,获得了上亿的票房。豆瓣评分高达8。5分,获柏林国际电影节金熊奖提名,堪称202
隐入尘烟全网下架时代抛弃一个人,连招呼都不会打这两天,备受争议的文艺片隐入尘烟突然在全网被下架了。很多人感慨之余,愈发对影片中的麦子的命运有了体会。也许,该片被下架的命运,就如同这注定被镰刀割的麦子一样,早已在冥冥中注定了。说
马步芳首次见蒋介石便闹笑话蒋经国是犬子,我的儿子是什么?开国中将罗元发曾感慨打胡宗南容易,打西北二马难。凭借着剽悍与机动性,二马的骑兵一度称雄西北。二马中的马步芳虽然姓马,但对西北百姓来说,此人是一匹不折不扣的恶狼。除此之外,不学无术的
懂事的孩子身后,一定站着懂教育的家长一位小学生因为乘车钱不够而得到了公交车司机代为刷卡的帮助。下车前,孩子主动给司机送来欠条,还在回家后和妈妈一起送来了一张百元公交卡,希望帮助更多的有困难的乘车人。央视新闻报道的这个
房间里的柔情留在房间里的柔情头条作者云开日初你走了,许多日子柔情依然,在房间里飘荡旋转你坐过的地方,也时时飘来,淡淡幽幽的清香和你一同看过的风景再次来看一遍感觉,与众不同的美是因你足迹,变美在
柔情蜜意连理枝,一生一世一双人草坪鲜花彩带掌声一对新人读着各自的结婚誓言。娓娓诉说彼此相爱的心路历程,有甜蜜的笑,有激动的泪,就那么新鲜出炉,是清晨第一缕阳光,是含苞待放的花骨朵。此时此刻的美好与浪漫,也许短暂
伤情艳舞姿我是一个在夜色中起舞的舞者,如妖娆的花盛开在暗夜的舞场。每一个黑夜来临时,便换上性感暴露的衣,在在震耳欲聋的音乐声中疯狂扭动自己的身体。台下,那些眼神空洞,没有灵魂的躯体在酒精与药
为啥你的春梦里,经常会出现陌生人?漫画告诉你真相辛辛苦苦忙碌一天,终于到了晚上躺在床上好好睡一觉,所有有关思考的按钮都渐渐被关闭,大家或许会因为白天曾想过什么事情,做一个美梦。成年人睡眠时间平均在七个小时左右,大家一般会经历几段
中国女排世锦赛开门红,赛后蔡斌再收喜讯,龚翔宇伤情曝光在今天晚上结束的世锦赛B组的一场比赛当中,中国队是相对比较轻松的战胜阿根廷队,为什么说是相对比较轻松呢?因为最终的比分是30,中国队是一局未丢的。不过在开场阶段,中国队的第一局打得
当明星与前任重逢,有人尴尬,有人偷看,还有人如同陌生人可能很多人都会有这样一个问题,在娱乐圈这个感情复杂的地方中,明星情侣们分手后到底还能不能做朋友呢?并且娱乐圈还是一个抬头不见低头见的圈子,不少网友都是在纷纷的猜测,那些明星在分手之
又被交易!4年时间,换了8支球队!29岁防守悍将,为啥总被抛弃?今天,雷霆和火箭达成了一笔涉及八名球员,一个选秀权的大交易。在这笔交易里,莫里斯哈克利斯,再次被当成筹码送到火箭。这是今年休赛期,他第三次被所在球队交易。也是过去四年时间里,第八次