Chatppt dingtalk
? Robot Chatgpt intégré à dingtalk basé sur le langage GO?
Table des matières
Ce projet peut vous aider à intégrer les robots GPT dans le chat de groupe Dingtalk. Le modèle par défaut actuel est gpt-3.5
, et il prend en charge gpt-4
et gpt-4o-mini
. Il soutient également Azure-Openai.
? 注意
: Le processus de déploiement et de configuration est désormais très mature, et les documents et les problèmes sont essentiellement couverts.
? 注意
: Toutes les fonctions de ce projet sont rassemblées dans le guide d'utilisation.
? Bienvenue pour suivre mes autres projets open source:
- GO-LDAP-ADMIN :? Projet de gestion du backend OpenLDAP basé sur Go + Vue.
- Apprentissage-hebdomadaire: Le contenu hebdomadaire est principalement une technologie de fonctionnement et de maintenance et des périphériques de langue GO, complétés par d'excellents projets sur Github ou l'expérience d'excellente expérience des autres.
- HowtostartOpenSource:? Guide de collaboration de maintenance du projet open source GitHub.
- Liste de lecture: La lecture est la base de l'abonnement de contenu de haute qualité
- Awesome-Github-Profile-Readme-Chinese :?
? J'ai également créé un projet Awesome-Chatgpt-Answer : enregistrez ces moments de bonnes questions et de bonnes réponses.
⚗️ Openai Office fournit une page de statut pour présenter le statut actuel du service OpenAI.
Sponsors
302.ai est une plate-forme d'application AI à guichet unique qui paie à la demande, une plate-forme ouverte et un écosystème open source.
- Cliquez pour vous inscrire: Obtenez immédiatement 1ptc (1ptc = 1 dollars américains, environ RMB 7).
- Il rassemble les modèles et marques d'IA les plus récents et les plus complets, y compris, mais sans s'y limiter, les modèles de langue, les modèles d'images, les modèles sonores et les modèles vidéo.
- Effectuer un développement d'applications approfondi sur le modèle de base afin que les novices puissent l'utiliser à un seuil zéro sans les coûts d'apprentissage.
- Zéro frais mensuels, toutes les fonctions sont payées à la demande, entièrement ouvertes, atteignant un véritable seuil bas et un plafond élevé.
- Modèle d'utilisation innovant, séparation de la gestion et de l'utilisation, destiné aux équipes et aux petites et moyennes entreprises, gérées par une seule personne et utilisées par plusieurs personnes.
- Toutes les capacités d'IA fournissent un accès API et toutes les applications prennent en charge l'auto-personnalisation (en cours).
- Une équipe de développement solide, lançant 2-3 nouvelles applications chaque semaine, et les fonctionnalités de la plate-forme sont mises à jour quotidiennement.
帮助
vous verrez la liste d'aide, voir l'exemple#图片
,?#周报
?余额
, affichez l'exemple?#查对话username:xxx
xxx, vous pouvez le prévisualiser en ligne et le télécharger dans la région.api_key
, vous pouvez vous référer à cet article pour les questions liées à l'enregistrement. Visitez ici pour demander une clé personnelle.Il est recommandé d'utiliser Docker pour exécuter ce projet rapidement.
第一种:基于环境变量运行
# 运行项目
$ docker run -itd --name chatgpt -p 8090:8090
-v ./data:/app/data --add-host="host.docker.internal:host-gateway"
-e LOG_LEVEL="info" -e APIKEY=换成你的key -e BASE_URL=""
-e MODEL="gpt-3.5-turbo" -e SESSION_TIMEOUT=600
-e MAX_QUESTION_LENL=2048 -e MAX_ANSWER_LEN=2048 -e MAX_TEXT=4096
-e HTTP_PROXY="http://host.docker.internal:15732"
-e DEFAULT_MODE="单聊" -e MAX_REQUEST=0 -e PORT=8090
-e SERVICE_URL="你当前服务外网可访问的URL" -e CHAT_TYPE="0"
-e ALLOW_GROUPS=a,b -e ALLOW_OUTGOING_GROUPS=a,b -e ALLOW_USERS=a,b -e DENY_USERS=a,b -e VIP_USERS=a,b -e ADMIN_USERS=a,b -e APP_SECRETS="xxx,yyy"
-e SENSITIVE_WORDS="aa,bb" -e RUN_MODE="http"
-e AZURE_ON="false" -e AZURE_API_VERSION="" -e AZURE_RESOURCE_NAME=""
-e AZURE_DEPLOYMENT_NAME="" -e AZURE_OPENAI_TOKEN=""
-e DINGTALK_CREDENTIALS="your_client_id1:secret1,your_client_id2:secret2"
-e HELP="欢迎使用本工具nn你可以查看:[用户指南](https://github.com/eryajf/chatgpt-dingtalk/blob/main/docs/userGuide.md)nn这是一个[开源项目](https://github.com/eryajf/chatgpt-dingtalk/)
,觉得不错你可以来波素质三连."
--restart=always registry.cn-hangzhou.aliyuncs.com/eryajf/chatgpt-dingtalk
Le fichier de configuration mappé dans la commande run est référencé ci-dessous pour la description du fichier de configuration.
? 注意:
Si elle est déployée à l'aide de Docker, aucun ajustement n'est requis pour les paramètres du port.? 注意:
Les paramètres ALLUGED_USES, Deny_USERS, VIP_USERS, les paramètres sont spécifiés par les paramètres. Les paramètres sortants ne sont pas valides en mode robot.? 注意:
Si le nœud du serveur lui-même est à l'étranger ou a personnalisé BASE_URL
, laissez HTTP_PROXY
.? 注意:
Si vous utilisez Docker pour le host.docker.internal
, l'adresse proxy peut être déployée directement dans la méthode ci-dessus. Voir: Comment les conteneurs Docker accèdent élégamment 第二种:基于配置文件挂载运行
# 复制配置文件,根据自己实际情况,调整配置里的内容
$ cp config.example.yml config.yml # 其中 config.example.yml 从项目的根目录获取
# 运行项目
$ docker run -itd --name chatgpt -p 8090:8090 -v `pwd`/config.yml:/app/config.yml --restart=always registry.cn-hangzhou.aliyuncs.com/eryajf/chatgpt-dingtalk
Le fichier de configuration est référencé à la description du fichier de configuration ci-dessous.
第三种:使用 docker compose 运行
$ wget https://raw.githubusercontent.com/eryajf/chatgpt-dingtalk/main/docker-compose.yml
$ vim docker-compose.yml # 编辑 APIKEY 等信息
$ docker compose up -d
Il y a également une étape pour configurer Nginx une fois le déploiement terminé.
Si vous souhaitez déployer directement via la ligne de commande, vous pouvez télécharger directement le package compressé dans la version.
Après le téléchargement, dézip localement et vous verrez le programme exécutable et le fichier de configuration:
$ tar xf chatgpt-dingtalk-v0.0.4-darwin-arm64.tar.gz
$ cd chatgpt-dingtalk-v0.0.4-darwin-arm64
$ cp config.example.yml config.yml
$ ./chatgpt-dingtalk # 直接运行
# 如果要守护在后台运行
$ nohup ./chatgpt-dingtalk & > run.log &
$ tail -f run.log
Dingtalk a officiellement lancé le mode Stream en mai 2023, il est donc recommandé d'utiliser ce mode directement ici.
Créer des étapes Document de référence: Application d'entreprise interne ou configurer en fonction des étapes suivantes.
Créer une application.
? 注意:
Le nom dechatgpt
peut être limité par Dingtalk lors de la création d'un robot.
Dans基础信息
->应用信息
, vous pouvez obtenir l' AppKey
et AppSecret
du robot.
Configurez le robot.
Libérez le robot.
Cliquez sur版本管理与发布
, puis cliquez上线
.
Ajoutez des robots au chat de groupe.
2023-03-08
Ajout, j'ai trouvé que je peux également discuter sans lier le robot dans le groupe, et cliquer sur le robot, puis cliquer sur l'envoi d'un message pour discuter en parlant directement au robot:
L'étudiant @RayTow a constaté qu'il est impossible de discuter avec le robot directement dans le groupe de test généré automatiquement par le robot.
Lorsque l'AITBOT envoie du contenu vide ou de l'aide, il reviendra à la liste d'aide.
Envoyez un mot-clé spécifié et vous pouvez changer différents modes.
? Remarque: En mode chat, le contexte de chat de chaque personne du groupe est indépendant. ? Remarque: Le mode de dialogue par défaut est un chat unique, vous n'avez donc pas à envoyer un chat unique pour entrer le mode de chat unique.
Lorsque le robot AIT envoie le
余额
du mot, il renverra le montant restant et la date disponible du compte correspondant à la clé actuelle.
Envoyez deux mots au modèle, qui renverra la liste d'invites de support actuellement intégrée.
Si vous trouvez une meilleure propt, bienvenue pr. Remarque: Certains utilisent des scénarios qui ne correspondent pas très bien à Dingtalk, alors ne les soumettez pas.
L'envoi
images目录
contenu à partir de#图片
déclenchera la capacité de peinture.Si vous n'avez aucune idée du dessin, vous pouvez trouver de bons propts ici ainsi qu'ici.
Si votre compte passe la liste blanche officielle, vous pouvez configurer le modèle comme: gpt-4-0314
, gpt-4
ou gpt-4o-mini
.
Ce qui suit est la différence entre GPT-3.5 et GPT-4 en termes de calculs mathématiques.
Merci à @piranhachan d'avoir fourni la clé GPT-4, qui permet au projet d'effectuer une vérification et des tests sur l'amarrage de GPT-4, et atteint l'état disponible.
# 获取项目
$ git clone https://github.com/eryajf/chatgpt-dingtalk.git
# 进入项目目录
$ cd chatgpt-dingtalk
# 复制配置文件,根据个人实际情况进行配置
$ cp config.example.yml config.yml
# 启动项目
$ go run main.go
# 应用的日志级别,info or debug
log_level : " info "
# 运行模式,http 或者 stream ,强烈建议你使用stream模式,通过此链接了解:https://open.dingtalk.com/document/isvapp/stream
run_mode : " stream "
# openai api_key,如果你是用的是azure,则该配置项可以留空或者直接忽略
api_key : " xxxxxxxxx "
# 如果你使用官方的接口地址 https://api.openai.com,则留空即可,如果你想指定请求url的地址,可通过这个参数进行配置,注意需要带上 http 协议,如果你是用的是azure,则该配置项可以留空或者直接忽略
base_url : " "
# 指定模型,默认为 gpt-3.5-turbo , 可选参数有: "gpt-4-32k-0613", "gpt-4-32k-0314", "gpt-4-32k", "gpt-4-0613", "gpt-4-0314", "gpt-4", "gpt-3.5-turbo-16k-0613", "gpt-3.5-turbo-16k", "gpt-3.5-turbo-0613", "gpt-3.5-turbo-0301", "gpt-3.5-turbo",如果使用gpt-4,请确认自己是否有接口调用白名单,如果你是用的是azure,则该配置项可以留空或者直接忽略
model : " gpt-3.5-turbo "
# 指定绘画模型,默认为 dall-e-2 , 可选参数有:"dall-e-2", "dall-e-3"
image_model : " dall-e-2 "
# 会话超时时间,默认600秒,在会话时间内所有发送给机器人的信息会作为上下文
session_timeout : 600
# 最大问题长度
max_question_len : 2048
# 最大回答长度
max_answer_len : 2048
# 最大上下文文本长度,通常该参数可设置为与模型Token限制相同
max_text : 4096
# 指定请求时使用的代理,如果为空,则不使用代理,注意需要带上 http 协议 或 socks5 协议,如果你是用的是azure,则该配置项可以留空或者直接忽略
http_proxy : " "
# 指定默认的对话模式,可根据实际需求进行自定义,如果不设置,默认为单聊,即无上下文关联的对话模式
default_mode : "单聊"
# 单人单日请求次数上限,默认为0,即不限制
max_request : 0
# 指定服务启动端口,默认为 8090,一般在二进制宿主机部署时,遇到端口冲突时使用,如果run_mode为stream模式,则可以忽略该配置项
port : " 8090 "
# 指定服务的地址,就是当前服务可供外网访问的地址(或者直接理解为你配置在钉钉回调那里的地址),用于生成图片时给钉钉做渲染,最新版本中将图片上传到了钉钉服务器,理论上你可以忽略该配置项,如果run_mode为stream模式,则可以忽略该配置项
service_url : " http://xxxxxx "
# 限定对话类型 0:不限 1:只能单聊 2:只能群聊
chat_type : " 0 "
# 哪些群组可以进行对话(仅在chat_type为0、2时有效),如果留空,则表示允许所有群组,如果要限制,则列表中写群ID(ConversationID)
# 群ID,可在群组中 @机器人 群ID 来查看日志获取,例如日志会输出:[? 企业内部机器人 在『测试』群的ConversationID为: "cidrabcdefgh1234567890AAAAA"],获取后可填写该参数并重启程序
allow_groups : []
# 哪些普通群(使用outgoing机器人)可以进行对话,如果留空,则表示允许所有群组,如果要限制,则列表中写群ID(ConversationID)
# 群ID,可在群组中 @机器人 群ID 来查看日志获取,例如日志会输出:[? outgoing机器人 在『测试』群的ConversationID为: "cidrabcdefgh1234567890AAAAA"],获取后可填写该参数并重启程序
# 如果不想支持outgoing机器人功能,这里可以随意设置一个内部群组,例如:cidrabcdefgh1234567890AAAAA;或随意一个字符串,例如:disabled
# 建议该功能默认关闭:除非你必须要用到outgoing机器人
allow_outgoing_groups : []
# 以下 allow_users、deny_users、vip_users、admin_users 配置中填写的是用户的userid,outgoing机器人模式下不适用这些配置
# 比如 ["1301691029702722","1301691029702733"],这个信息需要在钉钉管理后台的通讯录当中获取:https://oa.dingtalk.com/contacts.htm#/contacts
# 哪些用户可以进行对话,如果留空,则表示允许所有用户,如果要限制,则列表中写用户的userid
allow_users : []
# 哪些用户不可以进行对话,如果留空,则表示允许所有用户(如allow_user有配置,需满足相应条件),如果要限制,则列表中写用户的userid,黑名单优先级高于白名单
deny_users : []
# 哪些用户可以进行无限对话,如果留空,则表示只允许管理员(如max_request配置为0,则允许所有人)
# 如果要针对指定VIP用户放开限制(如max_request配置不为0),则列表中写用户的userid
vip_users : []
# 指定哪些人为此系统的管理员,如果留空,则表示没有人是管理员,如果要限制,则列表中写用户的userid
# 注意:如果下边的app_secrets为空,以及使用outgoing的方式配置机器人,这两种情况下,都表示没有人是管理员
admin_users : []
# 钉钉机器人在应用信息中的AppSecret,为了校验回调的请求是否合法,如果留空,将会忽略校验,则该接口将会存在其他人也能随意调用的安全隐患,因此强烈建议配置正确的secret,如果你的服务对接给多个机器人,这里可以配置多个机器人的secret
app_secrets : []
# 敏感词,提问时触发,则不允许提问,回答的内容中触发,则以 代替
sensitive_words : []
# 帮助信息,放在配置文件,可供自定义
help: "### 发送信息nn若您想给机器人发送信息,有如下两种方式:nn1. **群聊:** 在机器人所在群里 **@机器人** 后边跟着要提问的内容。nn2. **私聊:** 点击机器人的 **头像** 后,再点击 **发消息。** nn### 系统指令nn系统指令是一些特殊的词语,当您向机器人发送这些词语时,会触发对应的功能。nn**? 注意:系统指令,即只发指令,没有特殊标识,也没有内容。**nn以下是系统指令详情:nn| 指令 | 描述 | 示例 |n| :--------: | :------------------------------------------: | :----------------------------------------------------------: |n| **单聊** | 每次对话都是一次新的对话,没有聊天上下文联系 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_193608.jpg'><br /></details> |n| **串聊** | 带上下文联系的对话模式 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_193608.jpg'><br /></details> |n| **重置** | 重置上下文模式,回归到默认模式 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_193608.jpg'><br /></details> |n| **余额** | 查询机器人所用OpenAI账号的余额 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230304_222522.jpg'><br /></details> |n| **模板** | 查看应用内置的prompt模板 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_193827.jpg'><br /></details> |n| **图片** | 查看如何根据提示生成图片 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_194125.jpg'><br /></details> |n| **查对话** | 获取指定人员的对话历史 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_193938.jpg'><br /></details> |n| **帮助** | 获取帮助信息 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_202336.jpg'><br /></details> |nnn### 功能指令nn除去系统指令,还有一些功能指令,功能指令是直接与应用交互,达到交互目的的一种指令。nn**? 注意:功能指令,一律以 #+关键字 为开头,通常需要在关键字后边加个空格,然后再写描述或参数。**nn以下是功能指令详情nn| 指令 | 说明 | 示例 |n| :--: | :--: | :--: |n| **#图片** | 根据提示咒语生成对应图片 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230323_150547.jpg'><br /></details> |n| **#域名** | 查询域名相关信息 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_202620.jpg'><br /></details> |n| **#证书** | 查询域名证书相关信息 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_202706.jpg'><br /></details> |n| **#Linux命令** | 根据自然语言描述生成对应命令 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_214947.jpg'><br /></details> |n| **#解释代码** | 分析一段代码的功能或含义 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_215242.jpg'><br /></details> |n| **#正则** | 根据自然语言描述生成正则 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_220222.jpg'><br /></details> |n| **#周报** | 应用周报的prompt | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_214335.jpg'><br /></details> |n| **#生成sql** | 根据自然语言描述生成sql语句 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_221325.jpg'><br /></details> |nn如上大多数能力,都是依赖prompt模板实现,如果你有更好的prompt,欢迎提交PR。nn### 友情提示nn使用 **串聊模式** 会显著加快机器人所用账号的余额消耗速度,因此,若无保留上下文的需求,建议使用 **单聊模式。** nn即使有保留上下文的需求,也应适时使用 **重置** 指令来重置上下文。nn### 项目地址nn本项目已在GitHub开源,[查看源代码](https://github.com/eryajf/chatgpt-dingtalk)。"
# Azure OpenAI 配置
# 例如你的示例请求为: curl https://eryajf.openai.azure.com/openai/deployments/gpt-35-turbo/chat/completions?api-version=2023-03-15-preview 那么对应配置如下,如果配置完成之后还是无法正常使用,请新建应用,重新配置回调试试看
azure_on : false # 如果是true,则会走azure的openai接口
azure_resource_name : " eryajf " # 对应你的主个性域名
azure_deployment_name : " gpt-35-turbo " # 对应的是 /deployments/ 后边跟着的这个值
azure_api_version : " 2023-03-15-preview " # 对应的是请求中的 api-version 后边的值
azure_openai_token : " xxxxxxx "
# 钉钉应用鉴权凭据信息,支持多个应用。通过请求时候鉴权来识别是来自哪个机器人应用的消息
# 设置credentials 之后,即具备了访问钉钉平台绝大部分 OpenAPI 的能力;例如上传图片到钉钉平台,提升图片体验,结合 Stream 模式简化服务部署
# client_id 对应钉钉平台 AppKey/SuiteKey;client_secret 对应 AppSecret/SuiteSecret
credentials :
- client_id : " put-your-client-id-here "
client_secret : " put-your-client-secret-here "
Comment mieux utiliser Chatgpt: il y a de nombreux cas à référence ici.
? 重要重要
.
J'ai créé un groupe de communication Dingtalk, bienvenue pour rejoindre le groupe pour communiquer.
Ce projet peut être établi en raison de ces projets open source:
Si vous pensez que ce projet vous est utile, vous pouvez inviter l'auteur à prendre une tasse de café☕️
Ce projet était une fois 2023-03-05 | 2023-03-19 2023-03-29, de nos jours, le conseil d'administration de GitHub tendance. Et il est toujours sur la liste, qui montre la popularité d'Openai récemment.
Erya parle de fantaisie | Rivière | Nul | Finement | Frank Cheung | Ashing Zheng | Benguang | Orange épicé |
Kim hee @dingtalk | Balançoire | Nul | En pierre | Broyeur | Little_huang | Iblogc | Wangbooth |
Mao Mao | Hugh Gao | Aydenlii |