[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-eryajf--chatgpt-dingtalk":3,"tool-eryajf--chatgpt-dingtalk":64},[4,17,27,35,44,52],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",157379,2,"2026-04-15T23:32:42",[13,14,15],"开发框架","Agent","语言模型","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":10,"last_commit_at":23,"category_tags":24,"status":16},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[25,14,26,13],"插件","图像",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":10,"last_commit_at":33,"category_tags":34,"status":16},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[25,13],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":41,"last_commit_at":42,"category_tags":43,"status":16},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,3,"2026-04-06T11:19:32",[15,26,14,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,15],{"id":53,"name":54,"github_repo":55,"description_zh":56,"stars":57,"difficulty_score":10,"last_commit_at":58,"category_tags":59,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85092,"2026-04-10T11:13:16",[26,60,61,25,14,62,15,13,63],"数据工具","视频","其他","音频",{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":81,"owner_twitter":82,"owner_website":83,"owner_url":84,"languages":85,"stars":102,"forks":103,"last_commit_at":104,"license":105,"difficulty_score":10,"env_os":106,"env_gpu":107,"env_ram":108,"env_deps":109,"category_tags":115,"github_topics":116,"view_count":10,"oss_zip_url":126,"oss_zip_packed_at":126,"status":16,"created_at":127,"updated_at":128,"faqs":129,"releases":130},7950,"eryajf\u002Fchatgpt-dingtalk","chatgpt-dingtalk","🎒 钉钉 & 🤖 GPT-3.5 让你的工作效率直接起飞 🚀 私聊群聊方式、单聊串聊模式、角色扮演、图片创作 🚀","chatgpt-dingtalk 是一款基于 Go 语言开发的开源项目，旨在将 ChatGPT 智能机器人无缝集成到钉钉办公场景中。它解决了企业用户希望在日常沟通工具中直接调用 AI 能力的需求，让用户无需切换应用即可在钉钉私聊或群聊中获得智能助手的支持。\n\n该工具非常适合希望提升团队协作效率的企业员工、运维开发者以及需要频繁处理文本工作的普通用户。通过简单的部署，用户不仅能进行常规问答，还能体验角色扮演、上下文串联对话以及 AI 绘画等高级功能。项目默认支持 GPT-3.5 模型，并兼容 GPT-4、GPT-4o-mini 及 Azure OpenAI 服务，满足不同场景下的性能与成本需求。\n\n其技术亮点在于轻量高效的 Go 语言架构，支持 Docker 容器化部署和二进制直接运行，安装门槛低且资源占用少。此外，它还提供了内置 Prompt 模板、余额查询及灵活的模式切换功能，帮助非技术人员也能轻松上手。无论是用于自动回复群消息、辅助代码编写，还是激发创意灵感，chatgpt-dingtalk 都能让钉钉成为更智能的工作台，切实助力办公效率飞跃。","\u003Cp align='center'>\n\u003Cbr>\n    🚀 ChatGPT DingTalk 🚀\n\u003C\u002Fp>\n\n\u003Cp align='center'>🌉 基于GO语言实现的钉钉集成ChatGPT机器人 🌉\u003C\u002Fp>\n\n\u003Cdiv align=\"center\">\n\n[![Auth](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAuth-eryajf-ff69b4)](https:\u002F\u002Fgithub.com\u002Feryajf)\n[![Go Version](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fgo-mod\u002Fgo-version\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk)\n[![GitHub Pull Requests](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-pr\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fpulls)\n[![GitHub Pull Requests](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fstargazers)\n[![HitCount](https:\u002F\u002Fviews.whatilearened.today\u002Fviews\u002Fgithub\u002Feryajf\u002Fchatgpt-dingtalk.svg)](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk)\n[![Docker Image Size (latest by date)](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fimage-size\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Feryajf\u002Fchatgpt-dingtalk)\n[![Docker Pulls](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Feryajf\u002Fchatgpt-dingtalk)\n[![GitHub license](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fblob\u002Fmain\u002FLICENSE)\n\n\u003C\u002Fdiv>\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_56c48dba4100.gif\"\nwidth=\"800\"  height=\"3\">\n\n\u003C\u002Fdiv>\u003Cbr>\n\n\u003Ca href='https:\u002F\u002Fwiki.eryajf.net' target=\"_blank\" rel=\"noopener noreferrer\">\n    \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_54b88440513a.png' alt='' \u002F>\n\u003C\u002Fa>\n\n---\n\n\u003C!-- START doctoc generated TOC please keep comment here to allow auto update -->\n\u003C!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**目录**\n\n- [前言](#%E5%89%8D%E8%A8%80)\n- [功能介绍](#%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D)\n- [使用前提](#%E4%BD%BF%E7%94%A8%E5%89%8D%E6%8F%90)\n- [使用教程](#%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B)\n  - [第一步，部署应用](#%E7%AC%AC%E4%B8%80%E6%AD%A5%E9%83%A8%E7%BD%B2%E5%BA%94%E7%94%A8)\n    - [docker 部署](#docker-%E9%83%A8%E7%BD%B2)\n    - [二进制部署](#%E4%BA%8C%E8%BF%9B%E5%88%B6%E9%83%A8%E7%BD%B2)\n  - [第二步，添加应用](#%E7%AC%AC%E4%BA%8C%E6%AD%A5%E6%B7%BB%E5%8A%A0%E5%BA%94%E7%94%A8)\n- [亮点特色](#%E4%BA%AE%E7%82%B9%E7%89%B9%E8%89%B2)\n  - [与机器人私聊](#%E4%B8%8E%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%A7%81%E8%81%8A)\n  - [帮助列表](#%E5%B8%AE%E5%8A%A9%E5%88%97%E8%A1%A8)\n  - [切换模式](#%E5%88%87%E6%8D%A2%E6%A8%A1%E5%BC%8F)\n  - [查询余额](#%E6%9F%A5%E8%AF%A2%E4%BD%99%E9%A2%9D)\n  - [日常问题](#%E6%97%A5%E5%B8%B8%E9%97%AE%E9%A2%98)\n  - [通过内置 prompt 聊天](#%E9%80%9A%E8%BF%87%E5%86%85%E7%BD%AE-prompt-%E8%81%8A%E5%A4%A9)\n  - [生成图片](#%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87)\n  - [支持 gpt-4](#%E6%94%AF%E6%8C%81-gpt-4)\n- [本地开发](#%E6%9C%AC%E5%9C%B0%E5%BC%80%E5%8F%91)\n- [配置文件说明](#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%AF%B4%E6%98%8E)\n- [常见问题](#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)\n- [进群交流](#%E8%BF%9B%E7%BE%A4%E4%BA%A4%E6%B5%81)\n- [感谢](#%E6%84%9F%E8%B0%A2)\n- [赞赏](#%E8%B5%9E%E8%B5%8F)\n- [高光时刻](#%E9%AB%98%E5%85%89%E6%97%B6%E5%88%BB)\n- [Star 历史](#star-%E5%8E%86%E5%8F%B2)\n- [贡献者列表](#%E8%B4%A1%E7%8C%AE%E8%80%85%E5%88%97%E8%A1%A8)\n\n\u003C!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n## 前言\n\n本项目可以助你将 GPT 机器人集成到钉钉群聊当中。当前默认模型为`gpt-3.5`，支持`gpt-4`以及`gpt-4o-mini`。同时支持 Azure-OpenAI。\n\n> - `📢 注意`：当下部署以及配置流程都已非常成熟，文档和 issue 中基本都覆盖到了，因此不再回答任何项目安装部署与配置使用上的问题，如果完全不懂，可考虑通过 **[邮箱](mailto:eryajf@163.com)** 联系我进行付费的技术支持。\n>\n> - `📢 注意`：这个项目所有的功能，都汇聚在[使用指南](.\u002Fdocs\u002FuserGuide.md)中，请务必仔细阅读，以体验其完整精髓。\n\n🥳 **欢迎关注我的其他开源项目：**\n\n> - [Go-Ldap-Admin](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fgo-ldap-admin)：🌉 基于 Go+Vue 实现的 openLDAP 后台管理项目。\n> - [learning-weekly](https:\u002F\u002Fgithub.com\u002Feryajf\u002Flearning-weekly)：📝 周刊内容以运维技术和 Go 语言周边为主，辅以 GitHub 上优秀项目或他人优秀经验。\n> - [HowToStartOpenSource](https:\u002F\u002Fgithub.com\u002Feryajf\u002FHowToStartOpenSource)：🌈 GitHub 开源项目维护协同指南。\n> - [read-list](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fread-list)：📖 优质内容订阅，阅读方为根本\n> - [awesome-github-profile-readme-chinese](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fawesome-github-profile-readme-chinese)：🦩 优秀的中文区个人主页搜集\n\n🚜 我还创建了一个项目 **[awesome-chatgpt-answer](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fawesome-chatgpt-answer)** ：记录那些问得好，答得妙的时刻，欢迎提交你与 ChatGPT 交互过程中遇到的那些精妙对话。\n\n⚗️ openai 官方提供了一个 **[状态页](https:\u002F\u002Fstatus.openai.com\u002F)** 来呈现当前 openAI 服务的状态，同时如果有问题发布公告也会在这个页面，如果你感觉它有问题了，可以在这个页面看看。\n\n\n## 功能介绍\n\n- 🚀 帮助菜单：通过发送 `帮助` 将看到帮助列表，[🖼 查看示例](#%E5%B8%AE%E5%8A%A9%E5%88%97%E8%A1%A8)\n- 🥷 私聊：支持与机器人单独私聊(无需艾特)，[🖼 查看示例](#%E4%B8%8E%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%A7%81%E8%81%8A)\n- 💬 群聊：支持在群里艾特机器人进行对话\n- 🙋 单聊模式：每次对话都是一次新的对话，没有历史聊天上下文联系\n- 🗣 串聊模式：带上下文理解的对话模式\n- 🎨 图片生成：通过发送 `#图片`关键字开头的内容进行生成图片，[🖼 查看示例](#%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87)\n- 🎭 角色扮演：支持场景模式，通过 `#周报` 的方式触发内置 prompt 模板 [🖼 查看示例](#%E9%80%9A%E8%BF%87%E5%86%85%E7%BD%AEprompt%E8%81%8A%E5%A4%A9)\n- 🧑‍💻 频率限制：通过配置指定，自定义单个用户单日最大对话次数\n- 💵 余额查询：通过发送 `余额` 关键字查询当前 key 所剩额度，[🖼 查看示例](#%E6%9F%A5%E8%AF%A2%E4%BD%99%E9%A2%9D)\n- 🔗 自定义 api 域名：通过配置指定，解决国内服务器无法直接访问 openai 的问题\n- 🪜 添加代理：通过配置指定，通过给应用注入代理解决国内服务器无法访问的问题\n- 👐 默认模式：支持自定义默认的聊天模式，通过配置化指定\n- 📝 查询对话：通过发送`#查对话 username:xxx`查询 xxx 的对话历史，可在线预览，可下载到本地\n- 👹 白名单机制：通过配置指定，支持指定群组名称和用户名称作为白名单，从而实现可控范围与机器人对话\n- 💂‍♀️ 管理员机制：通过配置指定管理员，部分敏感操作，以及一些应用配置，管理员有权限进行操作\n- ㊙️ 敏感词过滤：通过配置指定敏感词，提问时触发，则不允许提问，回答的内容中触发，则以 🚫 代替\n- 🚇 stream 模式：指定钉钉的 stream 模式，目前钉钉已全量开放该功能，项目也默认以此模式启动\n\n## 使用前提\n\n- 有 Openai 账号，并且创建好`api_key`，注册相关事项可以参考[此文章](https:\u002F\u002Fjuejin.cn\u002Fpost\u002F7173447848292253704) 。访问[这里](https:\u002F\u002Fbeta.openai.com\u002Faccount\u002Fapi-keys)，申请个人秘钥。\n- 在钉钉开发者后台创建应用，在应用的消息推送功能块添加机器人，将消息接收模式指定为 stream 模式。\n\n## 使用教程\n\n### 第一步，部署应用\n\n#### docker 部署\n\n推荐你使用 docker 快速运行本项目。\n\n```\n第一种：基于环境变量运行\n# 运行项目\n$ docker run -itd --name chatgpt -p 8090:8090 \\\n  -v .\u002Fdata:\u002Fapp\u002Fdata --add-host=\"host.docker.internal:host-gateway\" \\\n  -e LOG_LEVEL=\"info\" -e APIKEY=换成你的key -e BASE_URL=\"\" \\\n  -e MODEL=\"gpt-3.5-turbo\" -e SESSION_TIMEOUT=600 \\\n  -e MAX_QUESTION_LENL=2048 -e MAX_ANSWER_LEN=2048 -e MAX_TEXT=4096 \\\n  -e HTTP_PROXY=\"http:\u002F\u002Fhost.docker.internal:15732\" \\\n  -e DEFAULT_MODE=\"单聊\" -e MAX_REQUEST=0 -e PORT=8090 \\\n  -e SERVICE_URL=\"你当前服务外网可访问的URL\" -e CHAT_TYPE=\"0\" \\\n  -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\" \\\n  -e SENSITIVE_WORDS=\"aa,bb\" -e RUN_MODE=\"http\" \\\n  -e AZURE_ON=\"false\" -e AZURE_API_VERSION=\"\" -e AZURE_RESOURCE_NAME=\"\" \\\n  -e AZURE_DEPLOYMENT_NAME=\"\" -e AZURE_OPENAI_TOKEN=\"\" \\\n  -e DINGTALK_CREDENTIALS=\"your_client_id1:secret1,your_client_id2:secret2\" \\\n  -e HELP=\"欢迎使用本工具\\n\\n你可以查看：[用户指南](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fblob\u002Fmain\u002Fdocs\u002FuserGuide.md)\\n\\n这是一个[开源项目](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002F)\n  ，觉得不错你可以来波素质三连.\"  \\\n  --restart=always  registry.cn-hangzhou.aliyuncs.com\u002Feryajf\u002Fchatgpt-dingtalk\n```\n\n> 运行命令中映射的配置文件参考下边的[配置文件说明](#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%AF%B4%E6%98%8E)。\n\n- `📢 注意：`如果使用 docker 部署，那么 PORT 参数不需要进行任何调整。\n- `📢 注意：`ALLOW_GROUPS,ALLOW_USERS,DENY_USERS,VIP_USERS,ADMIN_USERS 参数为数组，如果需要指定多个，可用英文逗号分割。outgoing 机器人模式下这些参数无效。\n- `📢 注意：`如果服务器节点本身就在国外或者自定义了`BASE_URL`，那么就把`HTTP_PROXY`参数留空即可。\n- `📢 注意：`如果使用 docker 部署，那么 proxy 地址可以直接使用如上方式部署，`host.docker.internal`会指向容器所在宿主机的 IP，只需要更改端口为你的代理端口即可。参见：[Docker 容器如何优雅地访问宿主机网络](https:\u002F\u002Fwiki.eryajf.net\u002Fpages\u002F674f53\u002F)\n\n```\n第二种：基于配置文件挂载运行\n# 复制配置文件，根据自己实际情况，调整配置里的内容\n$ cp config.example.yml config.yml  # 其中 config.example.yml 从项目的根目录获取\n\n# 运行项目\n$ docker run -itd --name chatgpt -p 8090:8090  -v `pwd`\u002Fconfig.yml:\u002Fapp\u002Fconfig.yml --restart=always  registry.cn-hangzhou.aliyuncs.com\u002Feryajf\u002Fchatgpt-dingtalk\n```\n\n其中配置文件参考下边的配置文件说明。\n\n```\n第三种：使用 docker compose 运行\n$ wget https:\u002F\u002Fraw.githubusercontent.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fmain\u002Fdocker-compose.yml\n\n$ vim docker-compose.yml # 编辑 APIKEY 等信息\n\n$ docker compose up -d\n```\n\n之前部署完成之后还有一个配置 Nginx 的步骤，现在将模式默认指定为 stream 模式，因此不再需要配置 Nginx。\n\n#### 二进制部署\n\n如果你想通过命令行直接部署，可以直接下载 release 中的[压缩包](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Freleases) ，请根据自己系统以及架构选择合适的压缩包，下载之后直接解压运行。\n\n下载之后，在本地解压，即可看到可执行程序，与配置文件：\n\n```sh\n$ tar xf chatgpt-dingtalk-v0.0.4-darwin-arm64.tar.gz\n$ cd chatgpt-dingtalk-v0.0.4-darwin-arm64\n$ cp config.example.yml  config.yml\n$ .\u002Fchatgpt-dingtalk  # 直接运行\n\n# 如果要守护在后台运行\n$ nohup .\u002Fchatgpt-dingtalk &> run.log &\n$ tail -f run.log\n```\n\n### 第二步，添加应用\n\n钉钉官方在 2023 年 5 月份全面推出了 stream 模式，因此这里也推荐大家直接使用这个模式，其他 HTTP 的仍旧支持，只不过不再深入研究，因此下边的文档也以 stream 模式的配置流程来介绍。\n\n创建步骤参考文档：[企业内部应用](https:\u002F\u002Fopen.dingtalk.com\u002Fdocument\u002Forgapp\u002Fcreate-orgapp)，或者根据如下步骤进行配置。\n\n1. 创建应用。\n    \u003Cdetails>\n      \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_3a1c65eb9f2e.png\">\n    \u003C\u002Fdetails>\n\n   > `📢 注意：`可能现在创建机器人的时候名字为`chatgpt`会被钉钉限制，请用其他名字命名。\n\n   在`基础信息` --> `应用信息`当中能够获取到机器人的`AppKey`和`AppSecret`。\n\n2. 配置机器人。\n\u003Cdetails>\n  \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_78bba70bc9b5.png\">\n\u003C\u002Fdetails>\n\n3. 发布机器人。\n    \u003Cdetails>\n      \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_95f2f6ab26b0.png\">\n    \u003C\u002Fdetails>\n\n   点击`版本管理与发布`，然后点击`上线`，这个时候就能在钉钉的群里中添加这个机器人了。\n\n4. 群聊添加机器人。\n\u003Cdetails>\n  \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_b29d0e45619c.png\">\n\u003C\u002Fdetails>\n\n## 亮点特色\n\n### 与机器人私聊\n\n`2023-03-08`补充，我发现也可以不在群里艾特机器人聊天，还可点击机器人，然后点击发消息，通过与机器人直接对话进行聊天：\n\n> 由 [@Raytow](https:\u002F\u002Fgithub.com\u002FRaytow) 同学发现，在机器人自动生成的测试群里无法直接私聊机器人，在其他群里单独添加这个机器人，然后再点击就可以跟它私聊了。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_54b88440513a.png\">\n\u003C\u002Fdetails>\n\n### 帮助列表\n\n> 艾特机器人发送空内容或者帮助，会返回帮助列表。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_2e5cb48e54c4.png\">\n\u003C\u002Fdetails>\n\n### 切换模式\n\n> 发送指定关键字，可以切换不同的模式。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_5a795afa4ff1.png\">\n\u003C\u002Fdetails>\n\n> 📢 注意：串聊模式下，群里每个人的聊天上下文是独立的。\n> 📢 注意：默认对话模式为单聊，因此不必发送单聊即可进入单聊模式，而要进入串聊，则需要发送串聊关键字进行切换，当串聊内容超过最大限制的时候，你可以发送重置，然后再次进入串聊模式。\n\n### 查询余额\n\n> 艾特机器人发送 `余额` 二字，会返回当前 key 对应的账号的剩余额度以及可用日期。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_ddaaa4ce6c66.jpg\">\n\u003C\u002Fdetails>\n\n### 日常问题\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_7f161e0fce4f.png\">\n\u003C\u002Fdetails>\n\n### 通过内置 prompt 聊天\n\n> 发送模板两个字，会返回当前内置支持的 prompt 列表。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_abb4692c6e1b.jpg\">\n\u003C\u002Fdetails>\n\n> 如果你发现有比较优秀的 prompt，欢迎 PR。注意：一些与钉钉使用场景不是很匹配的，就不要提交了。\n\n### 生成图片\n\n> 发送以 `#图片`开头的内容，将会触发绘画能力，图片生成之后，将会保存在程序根目录下的`images目录`下。\n>\n> 如果你绘图没有思路，可以在[这里](https:\u002F\u002Fwww.clickprompt.org\u002Fzh-CN\u002F)以及[这里](https:\u002F\u002Flexica.art\u002F)找到一些不错的 prompt。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_4f01bf207056.jpg\">\n\u003C\u002Fdetails>\n\n### 支持 gpt-4\n\n如果你的账号通过了官方的白名单，那么可以将模型配置为：`gpt-4-0314`、`gpt-4`或`gpt-4o-mini`，目前 gpt-4 的余额查询以及图片生成功能暂不可用，可能是接口限制，也可能是其他原因，等我有条件的时候，会对这些功能进行测试验证。\n\n> 以下是 gpt-3.5 与 gpt-4 对数学计算方面的区别。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_2d9d83137c0d.jpg\">\n\u003C\u002Fdetails>\n\n感谢[@PIRANHACHAN](https:\u002F\u002Fgithub.com\u002FPIRANHACHAN)同学提供的 gpt-4 的 key，使得项目在 gpt-4 的对接上能够进行验证测试，达到了可用状态。\n\n## 本地开发\n\n```sh\n# 获取项目\n$ git clone https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk.git\n\n# 进入项目目录\n$ cd chatgpt-dingtalk\n\n# 复制配置文件，根据个人实际情况进行配置\n$ cp config.example.yml config.yml\n\n# 启动项目\n$ go run main.go\n```\n\n## 配置文件说明\n\n```yaml\n# 应用的日志级别，info or debug\nlog_level: \"info\"\n# 运行模式，http 或者 stream ，强烈建议你使用stream模式，通过此链接了解：https:\u002F\u002Fopen.dingtalk.com\u002Fdocument\u002Fisvapp\u002Fstream\nrun_mode: \"stream\"\n# openai api_key,如果你是用的是azure，则该配置项可以留空或者直接忽略\napi_key: \"xxxxxxxxx\"\n# 如果你使用官方的接口地址 https:\u002F\u002Fapi.openai.com，则留空即可，如果你想指定请求url的地址，可通过这个参数进行配置，注意需要带上 http 协议，如果你是用的是azure，则该配置项可以留空或者直接忽略\nbase_url: \"\"\n# 指定模型，默认为 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，则该配置项可以留空或者直接忽略\nmodel: \"gpt-3.5-turbo\"\n# 指定绘画模型，默认为 dall-e-2 , 可选参数有：\"dall-e-2\"， \"dall-e-3\"\nimage_model: \"dall-e-2\"\n# 会话超时时间,默认600秒,在会话时间内所有发送给机器人的信息会作为上下文\nsession_timeout: 600\n# 最大问题长度\nmax_question_len: 2048\n# 最大回答长度\nmax_answer_len: 2048\n# 最大上下文文本长度，通常该参数可设置为与模型Token限制相同\nmax_text: 4096\n# 指定请求时使用的代理，如果为空，则不使用代理，注意需要带上 http 协议 或 socks5 协议，如果你是用的是azure，则该配置项可以留空或者直接忽略\nhttp_proxy: \"\"\n# 指定默认的对话模式，可根据实际需求进行自定义，如果不设置，默认为单聊，即无上下文关联的对话模式\ndefault_mode: \"单聊\"\n# 单人单日请求次数上限，默认为0，即不限制\nmax_request: 0\n# 指定服务启动端口，默认为 8090，一般在二进制宿主机部署时，遇到端口冲突时使用，如果run_mode为stream模式，则可以忽略该配置项\nport: \"8090\"\n# 指定服务的地址，就是当前服务可供外网访问的地址(或者直接理解为你配置在钉钉回调那里的地址)，用于生成图片时给钉钉做渲染，最新版本中将图片上传到了钉钉服务器，理论上你可以忽略该配置项，如果run_mode为stream模式，则可以忽略该配置项\nservice_url: \"http:\u002F\u002Fxxxxxx\"\n# 限定对话类型 0：不限 1：只能单聊 2：只能群聊\nchat_type: \"0\"\n# 哪些群组可以进行对话（仅在chat_type为0、2时有效），如果留空，则表示允许所有群组，如果要限制，则列表中写群ID（ConversationID）\n# 群ID，可在群组中 @机器人 群ID 来查看日志获取，例如日志会输出：[🙋 企业内部机器人 在『测试』群的ConversationID为: \"cidrabcdefgh1234567890AAAAA\"]，获取后可填写该参数并重启程序\nallow_groups: []\n# 哪些普通群（使用outgoing机器人）可以进行对话，如果留空，则表示允许所有群组，如果要限制，则列表中写群ID（ConversationID）\n# 群ID，可在群组中 @机器人 群ID 来查看日志获取，例如日志会输出：[🙋 outgoing机器人 在『测试』群的ConversationID为: \"cidrabcdefgh1234567890AAAAA\"]，获取后可填写该参数并重启程序\n# 如果不想支持outgoing机器人功能，这里可以随意设置一个内部群组，例如：cidrabcdefgh1234567890AAAAA；或随意一个字符串，例如：disabled\n# 建议该功能默认关闭：除非你必须要用到outgoing机器人\nallow_outgoing_groups: []\n# 以下 allow_users、deny_users、vip_users、admin_users 配置中填写的是用户的userid，outgoing机器人模式下不适用这些配置\n# 比如 [\"1301691029702722\",\"1301691029702733\"]，这个信息需要在钉钉管理后台的通讯录当中获取：https:\u002F\u002Foa.dingtalk.com\u002Fcontacts.htm#\u002Fcontacts\n# 哪些用户可以进行对话，如果留空，则表示允许所有用户，如果要限制，则列表中写用户的userid\nallow_users: []\n# 哪些用户不可以进行对话，如果留空，则表示允许所有用户（如allow_user有配置，需满足相应条件），如果要限制，则列表中写用户的userid，黑名单优先级高于白名单\ndeny_users: []\n# 哪些用户可以进行无限对话，如果留空，则表示只允许管理员（如max_request配置为0，则允许所有人）\n# 如果要针对指定VIP用户放开限制（如max_request配置不为0），则列表中写用户的userid\nvip_users: []\n# 指定哪些人为此系统的管理员，如果留空，则表示没有人是管理员，如果要限制，则列表中写用户的userid\n# 注意：如果下边的app_secrets为空，以及使用outgoing的方式配置机器人，这两种情况下，都表示没有人是管理员\nadmin_users: []\n# 钉钉机器人在应用信息中的AppSecret，为了校验回调的请求是否合法，如果留空，将会忽略校验，则该接口将会存在其他人也能随意调用的安全隐患，因此强烈建议配置正确的secret，如果你的服务对接给多个机器人，这里可以配置多个机器人的secret\napp_secrets: []\n# 敏感词，提问时触发，则不允许提问，回答的内容中触发，则以 🚫 代替\nsensitive_words: []\n# 帮助信息，放在配置文件，可供自定义\nhelp: \"### 发送信息\\n\\n若您想给机器人发送信息，有如下两种方式：\\n\\n1. **群聊：** 在机器人所在群里 **@机器人** 后边跟着要提问的内容。\\n\\n2. **私聊：** 点击机器人的 **头像** 后，再点击 **发消息。** \\n\\n### 系统指令\\n\\n系统指令是一些特殊的词语，当您向机器人发送这些词语时，会触发对应的功能。\\n\\n**📢 注意：系统指令，即只发指令，没有特殊标识，也没有内容。**\\n\\n以下是系统指令详情：\\n\\n|    指令    |                     描述                     |                             示例                             |\\n| :--------: | :------------------------------------------: | :----------------------------------------------------------: |\\n|  **单聊**  | 每次对话都是一次新的对话，没有聊天上下文联系 | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_7b281c4a7003.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **串聊**  |            带上下文联系的对话模式            | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_7b281c4a7003.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **重置**  |        重置上下文模式，回归到默认模式        | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_7b281c4a7003.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **余额**  |        查询机器人所用OpenAI账号的余额        | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_ddaaa4ce6c66.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **模板**  |           查看应用内置的prompt模板           | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_35bbc7f76d44.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **图片**  |           查看如何根据提示生成图片           | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_1ddead0c254b.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n| **查对话** |            获取指定人员的对话历史            | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_942f5e990aa9.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **帮助**  |                 获取帮助信息                 | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_2f672a902f3a.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n\\n\\n### 功能指令\\n\\n除去系统指令，还有一些功能指令，功能指令是直接与应用交互，达到交互目的的一种指令。\\n\\n**📢 注意：功能指令，一律以 #+关键字 为开头，通常需要在关键字后边加个空格，然后再写描述或参数。**\\n\\n以下是功能指令详情\\n\\n| 指令 | 说明 | 示例 |\\n| :--: | :--: | :--: |\\n|  **#图片**  |          根据提示咒语生成对应图片          | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_4f01bf207056.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n| **#域名**     | 查询域名相关信息     |  \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_a4282ea14979.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#证书**     | 查询域名证书相关信息     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_3f55ea694fa5.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#Linux命令**     | 根据自然语言描述生成对应命令     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_e681947f8fbc.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#解释代码**     | 分析一段代码的功能或含义     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_77a04291db07.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#正则**     | 根据自然语言描述生成正则     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_dd4fe29edcca.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#周报**     | 应用周报的prompt     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_9c337740c8d3.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#生成sql**     | 根据自然语言描述生成sql语句     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_606870d76626.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n\\n如上大多数能力，都是依赖prompt模板实现，如果你有更好的prompt，欢迎提交PR。\\n\\n### 友情提示\\n\\n使用 **串聊模式** 会显著加快机器人所用账号的余额消耗速度，因此，若无保留上下文的需求，建议使用 **单聊模式。** \\n\\n即使有保留上下文的需求，也应适时使用 **重置** 指令来重置上下文。\\n\\n### 项目地址\\n\\n本项目已在GitHub开源，[查看源代码](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk)。\"\n\n# Azure OpenAI 配置\n# 例如你的示例请求为： curl https:\u002F\u002Feryajf.openai.azure.com\u002Fopenai\u002Fdeployments\u002Fgpt-35-turbo\u002Fchat\u002Fcompletions?api-version=2023-03-15-preview 那么对应配置如下，如果配置完成之后还是无法正常使用，请新建应用，重新配置回调试试看\nazure_on: false # 如果是true，则会走azure的openai接口\nazure_resource_name: \"eryajf\" # 对应你的主个性域名\nazure_deployment_name: \"gpt-35-turbo\" # 对应的是 \u002Fdeployments\u002F 后边跟着的这个值\nazure_api_version: \"2023-03-15-preview\" # 对应的是请求中的 api-version 后边的值\nazure_openai_token: \"xxxxxxx\"\n\n# 钉钉应用鉴权凭据信息，支持多个应用。通过请求时候鉴权来识别是来自哪个机器人应用的消息\n# 设置credentials 之后，即具备了访问钉钉平台绝大部分 OpenAPI 的能力；例如上传图片到钉钉平台，提升图片体验，结合 Stream 模式简化服务部署\n# client_id 对应钉钉平台 AppKey\u002FSuiteKey；client_secret 对应 AppSecret\u002FSuiteSecret\ncredentials:\n  - client_id: \"put-your-client-id-here\"\n    client_secret: \"put-your-client-secret-here\"\n```\n\n## 常见问题\n\n如何更好地使用 ChatGPT：这里有[许多案例](https:\u002F\u002Fgithub.com\u002Ff\u002Fawesome-chatgpt-prompts)可供参考。\n\n`🗣 重要重要` 一些常见的问题，我单独开 issue 放在这里：[👉 点我 👈](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fissues\u002F44)，可以查看这里辅助你解决问题，如果里边没有，请对历史 issue 进行搜索(不要提交重复的 issue)，也欢迎大家补充。\n\n## 进群交流\n\n我创建了一个钉钉的交流群，欢迎进群交流。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_9f741154b9c7.jpg)\n\n## 感谢\n\n这个项目能够成立，离不开这些开源项目：\n\n- [go-resty\u002Fresty](https:\u002F\u002Fgithub.com\u002Fgo-resty\u002Fresty)\n- [patrickmn\u002Fgo-cache](https:\u002F\u002Fgithub.com\u002Fpatrickmn\u002Fgo-cache)\n- [solywsh\u002Fchatgpt](https:\u002F\u002Fgithub.com\u002Fsolywsh\u002Fchatgpt)\n- [xgfone\u002Fship](https:\u002F\u002Fgithub.com\u002Fxgfone\u002Fship)\n- [avast\u002Fretry-go](https:\u002F\u002Fgithub.com\u002Favast\u002Fretry-go)\n- [sashabaranov\u002Fgo-openapi](https:\u002F\u002Fgithub.com\u002Fsashabaranov\u002Fgo-openai)\n- [charmbracelet\u002Flog](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Flog)\n\n## 赞赏\n\n如果觉得这个项目对你有帮助，你可以请作者[喝杯咖啡 ☕️](https:\u002F\u002Fwiki.eryajf.net\u002Freward\u002F)\n\n## 高光时刻\n\n> 本项目曾在 | [2022-12-12](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2022\u002F2022-12-12.md#go) | [2022-12-18](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2022\u002F2022-12-18.md#go) | [2022-12-19](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2022\u002F2022-12-19.md#go) | [2022-12-20](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2022\u002F2022-12-20.md#go) | [2023-02-09](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-09.md#go) | [2023-02-10](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-10.md#go) | [2023-02-11](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-11.md#go) | [2023-02-12](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-12.md#go) | [2023-02-13](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-13.md#go) | [2023-02-14](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-14.md#go) | [2023-02-15](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-15.md#go) | [2023-03-04](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-04.md#go) | [2023-03-05](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-05.md#go) | [2023-03-19](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-19.md#go) | [2023-03-22](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-22.md#go) | [2023-03-25](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-25.md#go) | [2023-03-26](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-26.md#go) | [2023-03-27](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-27.md#go) | [2023-03-29](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-29.md#go), 这些天里，登上 GitHub Trending。而且还在持续登榜中，可见最近 openai 的热度。\n> ![image_20230316_114915](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_84cc7678a3ef.jpg)\n\n## Star 历史\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_0ffbcaec7723.png)](https:\u002F\u002Fstar-history.com\u002F#ConnectAI-E\u002FDingtalk-OpenAI&Date)\n\n## 贡献者列表\n\n\u003Cdiv align=\"center\">\n\u003C!-- readme: collaborators,contributors -start -->\n\u003Ctable>\n\u003Ctr>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Feryajf\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_b970f54125e8.png\" width=\"75;\" alt=\"eryajf\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>二丫讲梵\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FLeizhenpeng\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_7bacaf325781.png\" width=\"75;\" alt=\"Leizhenpeng\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>RiverRay\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDDMeaqua\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_5c5084a1f7df.png\" width=\"75;\" alt=\"DDMeaqua\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Null\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fffinly\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_e2f4b0b8e54c.png\" width=\"75;\" alt=\"ffinly\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Finly\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FFrankCheungDev\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_e760201a1f64.png\" width=\"75;\" alt=\"FrankCheungDev\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Frank Cheung\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fb3nguang\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_a9782cc7e699.png\" width=\"75;\" alt=\"b3nguang\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>本光\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fronething\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_4459e68f523c.png\" width=\"75;\" alt=\"ronething\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Ashing Zheng\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flaorange\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_54c7d33f5f15.png\" width=\"75;\" alt=\"laorange\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>辣橙\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchzealot\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_b562536a0e60.png\" width=\"75;\" alt=\"chzealot\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>金喜@DingTalk\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FWinMin\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_2be1dfcdf243.png\" width=\"75;\" alt=\"WinMin\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Swing\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsuyunkai\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_72600a4e6aad.png\" width=\"75;\" alt=\"suyunkai\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Null\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstoneflying\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_0356a83e1c82.png\" width=\"75;\" alt=\"stoneflying\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Stoneflying\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcnmill\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_aac428202d8a.png\" width=\"75;\" alt=\"cnmill\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Mill Peng\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flittle-huang\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_736456da649b.png\" width=\"75;\" alt=\"little-huang\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Little_huang\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fiblogc\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_c13a91eaecf3.png\" width=\"75;\" alt=\"iblogc\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Iblogc\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwangbooth\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_81e9e0b668a4.png\" width=\"75;\" alt=\"wangbooth\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>WangBooth\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffantasticmao\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_6342631dfc8e.png\" width=\"75;\" alt=\"fantasticmao\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Mao Mao\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fluoxufeiyan\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_66108f48eec9.png\" width=\"75;\" alt=\"luoxufeiyan\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Hugh Gao\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAydenLii\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_b3250df25dc7.png\" width=\"75;\" alt=\"AydenLii\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>AydenLii\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftable>\n\u003C!-- readme: collaborators,contributors -end -->\n\u003C\u002Fdiv>\n","\u003Cp align='center'>\n\u003Cbr>\n    🚀 ChatGPT 钉钉 🚀\n\u003C\u002Fp>\n\n\u003Cp align='center'>🌉 基于GO语言实现的钉钉集成ChatGPT机器人 🌉\u003C\u002Fp>\n\n\u003Cdiv align=\"center\">\n\n[![Auth](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAuth-eryajf-ff69b4)](https:\u002F\u002Fgithub.com\u002Feryajf)\n[![Go Version](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fgo-mod\u002Fgo-version\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk)\n[![GitHub Pull Requests](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-pr\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fpulls)\n[![GitHub Pull Requests](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fstargazers)\n[![HitCount](https:\u002F\u002Fviews.whatilearened.today\u002Fviews\u002Fgithub\u002Feryajf\u002Fchatgpt-dingtalk.svg)](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk)\n[![Docker Image Size (latest by date)](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fimage-size\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Feryajf\u002Fchatgpt-dingtalk)\n[![Docker Pulls](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Feryajf\u002Fchatgpt-dingtalk)\n[![GitHub license](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Feryajf\u002Fchatgpt-dingtalk)](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fblob\u002Fmain\u002FLICENSE)\n\n\u003C\u002Fdiv>\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_56c48dba4100.gif\"\nwidth=\"800\"  height=\"3\">\n\n\u003C\u002Fdiv>\u003Cbr>\n\n\u003Ca href='https:\u002F\u002Fwiki.eryajf.net' target=\"_blank\" rel=\"noopener noreferrer\">\n    \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_54b88440513a.png' alt='' \u002F>\n\u003C\u002Fa>\n\n---\n\n\u003C!-- START doctoc generated TOC please keep comment here to allow auto update -->\n\u003C!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**目录**\n\n- [前言](#%E5%89%8D%E8%A8%80)\n- [功能介绍](#%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D)\n- [使用前提](#%E4%BD%BF%E7%94%A8%E5%89%8D%E6%8F%90)\n- [使用教程](#%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B)\n  - [第一步，部署应用](#%E7%AC%AC%E4%B8%80%E6%AD%A5%E9%83%A8%E7%BD%B2%E5%BA%94%E7%94%A8)\n    - [docker 部署](#docker-%E9%83%A8%E7%BD%B2)\n    - [二进制部署](#%E4%BA%8C%E8%BF%9E%E5%88%B6%E9%83%A8%E7%BD%B2)\n  - [第二步，添加应用](#%E7%AC%AC%E4%BA%8C%E6%AD%A5%E6%B7%BB%E5%8A%A0%E5%BA%94%E7%94%A8)\n- [亮点特色](#%E4%BA%AE%E7%82%B9%E7%89%B9%E8%89%B2)\n  - [与机器人私聊](#%E4%B8%8E%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%A7%81%E8%81%8A)\n  - [帮助列表](#%E5%B8%AE%E5%8A%A9%E5%88%97%E8%A1%A8)\n  - [切换模式](#%E5%88%87%E6%8D%A2%E6%A8%A1%E5%BC%8F)\n  - [查询余额](#%E6%9F%A5%E8%AF%A2%E4%BD%99%E9%A2%9D)\n  - [日常问题](#%E6%97%A5%E5%B8%B8%E9%97%AE%E9%A2%98)\n  - [通过内置 prompt 聊天](#%E9%80%9A%E8%BF%87%E5%86%85%E7%BD%AE-prompt-%E8%81%8A%E5%A4%A9)\n  - [生成图片](#%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87)\n  - [支持 gpt-4](#%E6%94%AF%E6%8C%81-gpt-4)\n- [本地开发](#%E6%9C%AC%E5%9C%B0%E5%BC%80%E5%8F%91)\n- [配置文件说明](#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%AF%B4%E6%98%8E)\n- [常见问题](#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)\n- [进群交流](#%E8%BF%9B%E7%BE%A4%E4%BA%A4%E6%B5%81)\n- [感谢](#%E6%84%9F%E8%B0%A2)\n- [赞赏](#%E8%B5%9E%E8%B5%8F)\n- [高光时刻](#%E9%AB%98%E5%85%89%E6%97%B6%E5%88%BB)\n- [Star 历史](#star-%E5%8E%86%E5%8F%B2)\n- [贡献者列表](#%E8%B4%A1%E7%8C%AE%E8%80%85%E5%88%97%E8%A1%A8)\n\n\u003C!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n## 前言\n\n本项目可以助你将 GPT 机器人集成到钉钉群聊当中。当前默认模型为`gpt-3.5`，支持`gpt-4`以及`gpt-4o-mini`。同时支持 Azure-OpenAI。\n\n> - `📢 注意`：当下部署以及配置流程都已非常成熟，文档和 issue 中基本都覆盖到了，因此不再回答任何项目安装部署与配置使用上的问题，如果完全不懂，可考虑通过 **[邮箱](mailto:eryajf@163.com)** 联系我进行付费的技术支持。\n>\n> - `📢 注意`：这个项目所有的功能，都汇聚在[使用指南](.\u002Fdocs\u002FuserGuide.md)中，请务必仔细阅读，以体验其完整精髓。\n\n🥳 **欢迎关注我的其他开源项目：**\n\n> - [Go-Ldap-Admin](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fgo-ldap-admin)：🌉 基于 Go+Vue 实现的 openLDAP 后台管理项目。\n> - [learning-weekly](https:\u002F\u002Fgithub.com\u002Feryajf\u002Flearning-weekly)：📝 周刊内容以运维技术和 Go 语言周边为主，辅以 GitHub 上优秀项目或他人优秀经验。\n> - [HowToStartOpenSource](https:\u002F\u002Fgithub.com\u002Feryajf\u002FHowToStartOpenSource)：🌈 GitHub 开源项目维护协同指南。\n> - [read-list](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fread-list)：📖 优质内容订阅，阅读方为根本\n> - [awesome-github-profile-readme-chinese](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fawesome-github-profile-readme-chinese)：🦩 优秀的中文区个人主页搜集\n\n🚜 我还创建了一个项目 **[awesome-chatgpt-answer](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fawesome-chatgpt-answer)** ：记录那些问得好，答得妙的时刻，欢迎提交你与 ChatGPT 交互过程中遇到的那些精妙对话。\n\n⚗️ openai 官方提供了一个 **[状态页](https:\u002F\u002Fstatus.openai.com\u002F)** 来呈现当前 openAI 服务的状态，同时如果有问题发布公告也会在这个页面，如果你感觉它有问题了，可以在这个页面看看。\n\n\n## 功能介绍\n\n- 🚀 帮助菜单：通过发送 `帮助` 将看到帮助列表，[🖼 查看示例](#%E5%B8%AE%E5%8A%A9%E5%88%97%E8%A1%A8)\n- 🥷 私聊：支持与机器人单独私聊(无需艾特)，[🖼 查看示例](#%E4%B8%8E%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%A7%81%E8%81%8A)\n- 💬 群聊：支持在群里艾特机器人进行对话\n- 🙋 单聊模式：每次对话都是一次新的对话，没有历史聊天上下文联系\n- 🗣 串聊模式：带上下文理解的对话模式\n- 🎨 图片生成：通过发送 `#图片`关键字开头的内容进行生成图片，[🖼 查看示例](#%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87)\n- 🎭 角色扮演：支持场景模式，通过 `#周报` 的方式触发内置 prompt 模板 [🖼 查看示例](#%E9%80%9A%E8%BF%87%E5%86%85%E7%BD%AEprompt%E8%81%8A%E5%A4%A9)\n- 🧑‍💻 频率限制：通过配置指定，自定义单个用户单日最大对话次数\n- 💵 余额查询：通过发送 `余额` 关键字查询当前 key 所剩额度，[🖼 查看示例](#%E6%9F%A5%E8%AF%A2%E4%BD%99%E9%A2%9D)\n- 🔗 自定义 api 域名：通过配置指定，解决国内服务器无法直接访问 openai 的问题\n- 🪜 添加代理：通过配置指定，通过给应用注入代理解决国内服务器无法访问的问题\n- 👐 默认模式：支持自定义默认的聊天模式，通过配置化指定\n- 📝 查询对话：通过发送`#查对话 username:xxx`查询 xxx 的对话历史，可在线预览，可下载到本地\n- 👹 白名单机制：通过配置指定，支持指定群组名称和用户名称作为白名单，从而实现可控范围与机器人对话\n- 💂‍♀️ 管理员机制：通过配置指定管理员，部分敏感操作以及一些应用配置，管理员有权限进行操作\n- ㊙️ 敏感词过滤：通过配置指定敏感词，提问时触发，则不允许提问，回答的内容中触发则以 🚫 代替\n- 🚇 stream 模式：指定钉钉的 stream 模式，目前钉钉已全量开放该功能，项目也默认以此模式启动\n\n## 使用前提\n\n- 有 Openai 账号，并且创建好`api_key`，注册相关事项可以参考[此文章](https:\u002F\u002Fjuejin.cn\u002Fpost\u002F7173447848292253704) 。访问[这里](https:\u002F\u002Fbeta.openai.com\u002Faccount\u002Fapi-keys)，申请个人秘钥。\n- 在钉钉开发者后台创建应用，在应用的消息推送功能块添加机器人，将消息接收模式指定为 stream 模式。\n\n## 使用教程\n\n### 第一步，部署应用\n\n#### docker 部署\n\n推荐你使用 docker 快速运行本项目.\n\n```\n第一种：基于环境变量运行\n\n# 运行项目\n$ docker run -itd --name chatgpt -p 8090:8090 \\\n  -v .\u002Fdata:\u002Fapp\u002Fdata --add-host=\"host.docker.internal:host-gateway\" \\\n  -e LOG_LEVEL=\"info\" -e APIKEY=换成你的key -e BASE_URL=\"\" \\\n  -e MODEL=\"gpt-3.5-turbo\" -e SESSION_TIMEOUT=600 \\\n  -e MAX_QUESTION_LENL=2048 -e MAX_ANSWER_LEN=2048 -e MAX_TEXT=4096 \\\n  -e HTTP_PROXY=\"http:\u002F\u002Fhost.docker.internal:15732\" \\\n  -e DEFAULT_MODE=\"单聊\" -e MAX_REQUEST=0 -e PORT=8090 \\\n  -e SERVICE_URL=\"你当前服务外网可访问的URL\" -e CHAT_TYPE=\"0\" \\\n  -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\" \\\n  -e SENSITIVE_WORDS=\"aa,bb\" -e RUN_MODE=\"http\" \\\n  -e AZURE_ON=\"false\" -e AZURE_API_VERSION=\"\" -e AZURE_RESOURCE_NAME=\"\" \\\n  -e AZURE_DEPLOYMENT_NAME=\"\" -e AZURE_OPENAI_TOKEN=\"\" \\\n  -e DINGTALK_CREDENTIALS=\"your_client_id1:secret1,your_client_id2:secret2\" \\\n  -e HELP=\"欢迎使用本工具\\n\\n你可以查看：[用户指南](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fblob\u002Fmain\u002Fdocs\u002FuserGuide.md)\\n\\n这是一个[开源项目](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002F)\n  ，觉得不错你可以来波素质三连.\"  \\\n  --restart=always  registry.cn-hangzhou.aliyuncs.com\u002Feryajf\u002Fchatgpt-dingtalk\n```\n\n> 运行命令中映射的配置文件参考下边的[配置文件说明](#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%AF%B4%E6%98%8E)。\n\n- `📢 注意：`如果使用 docker 部署，那么 PORT 参数不需要进行任何调整。\n- `📢 注意：`ALLOW_GROUPS,ALLOW_USERS,DENY_USERS,VIP_USERS,ADMIN_USERS 参数为数组，如果需要指定多个，可用英文逗号分割。outgoing 机器人模式下这些参数无效。\n- `📢 注意：`如果服务器节点本身就在国外或者自定义了`BASE_URL`，那么就把`HTTP_PROXY`参数留空即可。\n- `📢 注意：`如果使用 docker 部署，那么 proxy 地址可以直接使用如上方式部署，`host.docker.internal`会指向容器所在宿主机的 IP，只需要更改端口为你的代理端口即可。参见：[Docker 容器如何优雅地访问宿主机网络](https:\u002F\u002Fwiki.eryajf.net\u002Fpages\u002F674f53\u002F)\n\n```\n第二种：基于配置文件挂载运行\n# 复制配置文件，根据自己实际情况，调整配置里的内容\n$ cp config.example.yml config.yml  # 其中 config.example.yml 从项目的根目录获取\n\n# 运行项目\n$ docker run -itd --name chatgpt -p 8090:8090  -v `pwd`\u002Fconfig.yml:\u002Fapp\u002Fconfig.yml --restart=always  registry.cn-hangzhou.aliyuncs.com\u002Feryajf\u002Fchatgpt-dingtalk\n```\n\n其中配置文件参考下边的配置文件说明。\n\n```\n第三种：使用 docker compose 运行\n$ wget https:\u002F\u002Fraw.githubusercontent.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fmain\u002Fdocker-compose.yml\n\n$ vim docker-compose.yml # 编辑 APIKEY 等信息\n\n$ docker compose up -d\n```\n\n之前部署完成之后还有一个配置 Nginx 的步骤，现在将模式默认指定为 stream 模式，因此不再需要配置 Nginx。\n\n#### 二进制部署\n\n如果你想通过命令行直接部署，可以直接下载 release 中的[压缩包](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Freleases) ，请根据自己系统以及架构选择合适的压缩包，下载之后直接解压运行。\n\n下载之后，在本地解压，即可看到可执行程序，与配置文件：\n\n```sh\n$ tar xf chatgpt-dingtalk-v0.0.4-darwin-arm64.tar.gz\n$ cd chatgpt-dingtalk-v0.0.4-darwin-arm64\n$ cp config.example.yml  config.yml\n$ .\u002Fchatgpt-dingtalk  # 直接运行\n\n# 如果要守护在后台运行\n$ nohup .\u002Fchatgpt-dingtalk &> run.log &\n$ tail -f run.log\n```\n\n### 第二步，添加应用\n\n钉钉官方在 2023 年 5 月份全面推出了 stream 模式，因此这里也推荐大家直接使用这个模式，其他 HTTP 的仍旧支持，只不过不再深入研究，因此下边的文档也以 stream 模式的配置流程来介绍。\n\n创建步骤参考文档：[企业内部应用](https:\u002F\u002Fopen.dingtalk.com\u002Fdocument\u002Forgapp\u002Fcreate-orgapp)，或者根据如下步骤进行配置。\n\n1. 创建应用。\n    \u003Cdetails>\n      \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_3a1c65eb9f2e.png\">\n    \u003C\u002Fdetails>\n\n   > `📢 注意：`可能现在创建机器人的时候名字为`chatgpt`会被钉钉限制，请用其他名字命名。\n\n   在`基础信息` --> `应用信息`当中能够获取到机器人的`AppKey`和`AppSecret`。\n\n2. 配置机器人。\n\u003Cdetails>\n  \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_78bba70bc9b5.png\">\n\u003C\u002Fdetails>\n\n3. 发布机器人。\n    \u003Cdetails>\n      \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_95f2f6ab26b0.png\">\n    \u003C\u002Fdetails>\n\n   点击`版本管理与发布`，然后点击`上线`，这个时候就能在钉钉的群里中添加这个机器人了。\n\n4. 群聊添加机器人。\n\u003Cdetails>\n  \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_b29d0e45619c.png\">\n\u003C\u002Fdetails>\n\n## 亮点特色\n\n### 与机器人私聊\n\n`2023-03-08`补充，我发现也可以不在群里艾特机器人聊天，还可点击机器人，然后点击发消息，通过与机器人直接对话进行聊天：\n\n> 由 [@Raytow](https:\u002F\u002Fgithub.com\u002FRaytow) 同学发现，在机器人自动生成的测试群里无法直接私聊机器人，在其他群里单独添加这个机器人，然后再点击就可以跟它私聊了。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_54b88440513a.png\">\n\u003C\u002Fdetails>\n\n### 帮助列表\n\n> 艾特机器人发送空内容或者帮助，会返回帮助列表。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_2e5cb48e54c4.png\">\n\u003C\u002Fdetails>\n\n### 切换模式\n\n> 发送指定关键字，可以切换不同的模式。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_5a795afa4ff1.png\">\n\u003C\u002Fdetails>\n\n> 📢 注意：串聊模式下，群里每个人的聊天上下文是独立的。\n> 📢 注意：默认对话模式为单聊，因此不必发送单聊即可进入单聊模式，而要进入串聊，则需要发送串聊关键字进行切换，当串聊内容超过最大限制的时候，你可以发送重置，然后再次进入串聊模式。\n\n### 查询余额\n\n> 艾特机器人发送 `余额` 二字，会返回当前 key 对应的账号的剩余额度以及可用日期。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_ddaaa4ce6c66.jpg\">\n\u003C\u002Fdetails>\n\n### 日常问题\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_7f161e0fce4f.png\">\n\u003C\u002Fdetails>\n\n### 通过内置 prompt 聊天\n\n> 发送模板两个字，会返回当前内置支持的 prompt 列表。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_abb4692c6e1b.jpg\">\n\u003C\u002Fdetails>\n\n> 如果你发现有比较优秀的 prompt，欢迎 PR。注意：一些与钉钉使用场景不是很匹配的，就不要提交了。\n\n### 生成图片\n\n> 发送以 `#图片`开头的内容，将会触发绘画能力，图片生成之后，将会保存在程序根目录下的`images目录`下。\n>\n> 如果你绘图没有思路，可以在[这里](https:\u002F\u002Fwww.clickprompt.org\u002Fzh-CN\u002F)以及[这里](https:\u002F\u002Flexica.art\u002F)找到一些不错的 prompt。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_4f01bf207056.jpg\">\n\u003C\u002Fdetails>\n\n### 支持 gpt-4\n\n如果你的账号通过了官方的白名单，那么可以将模型配置为：`gpt-4-0314`, `gpt-4`或`gpt-4o-mini`，目前 gpt-4 的余额查询以及图片生成功能暂不可用，可能是接口限制，也可能是其他原因，等我有条件的时候，会对这些功能进行测试验证。\n\n> 以下是 gpt-3.5 与 gpt-4 对数学计算方面的区别。\n\n\u003Cdetails>\n    \u003Csummary>🖼 点我查看示例图\u003C\u002Fsummary>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_2d9d83137c0d.jpg\">\n\u003C\u002Fdetails>\n\n感谢[@PIRANHACHAN](https:\u002F\u002Fgithub.com\u002FPIRANHACHAN)同学提供的 gpt-4 的 key，使得项目在 gpt-4 的对接上能够进行验证测试，达到了可用状态。\n\n## 本地开发\n\n```sh\n# 获取项目\n$ git clone https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk.git\n\n# 进入项目目录\n$ cd chatgpt-dingtalk\n\n# 复制配置文件，根据个人实际情况进行配置\n$ cp config.example.yml config.yml\n\n# 启动项目\n$ go run main.go\n```\n\n## 配置文件说明\n\n```yaml\n# 应用的日志级别，info or debug\nlog_level: \"info\"\n# 运行模式，http 或者 stream ，强烈建议你使用stream模式，通过此链接了解：https:\u002F\u002Fopen.dingtalk.com\u002Fdocument\u002Fisvapp\u002Fstream\nrun_mode: \"stream\"\n# openai api_key,如果你是用的是azure，则该配置项可以留空或者直接忽略\napi_key: \"xxxxxxxxx\"\n# 如果你使用官方的接口地址 https:\u002F\u002Fapi.openai.com，则留空即可，如果你想指定请求url的地址，可通过这个参数进行配置，注意需要带上 http 协议，如果你是用的是azure，则该配置项可以留空或者直接忽略\nbase_url: \"\"\n# 指定模型，默认为 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，则该配置项可以留空或者直接忽略\nmodel: \"gpt-3.5-turbo\"\n# 指定绘画模型，默认为 dall-e-2 , 可选参数有：\"dall-e-2\"， \"dall-e-3\"\nimage_model: \"dall-e-2\"\n# 会话超时时间,默认600秒,在会话时间内所有发送给机器人的信息会作为上下文\nsession_timeout: 600\n# 最大问题长度\nmax_question_len: 2048\n# 最大回答长度\nmax_answer_len: 2048\n# 最大上下文文本长度，通常该参数可设置为与模型Token限制相同\nmax_text: 4096\n# 指定请求时使用的代理，如果为空，则不使用代理，注意需要带上 http 协议 或 socks5 协议，如果你是用的是azure，则该配置项可以留空或者直接忽略\nhttp_proxy: \"\"\n\n# 指定默认的对话模式，可根据实际需求进行自定义，如果不设置，默认为单聊，即无上下文关联的对话模式\ndefault_mode: \"单聊\"\n# 单人单日请求次数上限，默认为0，即不限制\nmax_request: 0\n# 指定服务启动端口，默认为 8090，一般在二进制宿主机部署时，遇到端口冲突时使用，如果run_mode为stream模式，则可以忽略该配置项\nport: \"8090\"\n# 指定服务的地址，就是当前服务可供外网访问的地址(或者直接理解为你配置在钉钉回调那里的地址)，用于生成图片时给钉钉做渲染，最新版本中将图片上传到了钉钉服务器，理论上你可以忽略该配置项，如果run_mode为stream模式，则可以忽略该配置项\nservice_url: \"http:\u002F\u002Fxxxxxx\"\n# 限定对话类型 0：不限 1：只能单聊 2：只能群聊\nchat_type: \"0\"\n# 哪些群组可以进行对话（仅在chat_type为0、2时有效），如果留空，则表示允许所有群组，如果要限制，则列表中写群ID（ConversationID）\n# 群ID，可在群组中 @机器人 群ID 来查看日志获取，例如日志会输出：[🙋 企业内部机器人 在『测试』群的ConversationID为: \"cidrabcdefgh1234567890AAAAA\"]，获取后可填写该参数并重启程序\nallow_groups: []\n# 哪些普通群（使用outgoing机器人）可以进行对话，如果留空，则表示允许所有群组，如果要限制，则列表中写群ID（ConversationID）\n# 群ID，可在群组中 @机器人 群ID 来查看日志获取，例如日志会输出：[🙋 outgoing机器人 在『测试』群的ConversationID为: \"cidrabcdefgh1234567890AAAAA\"]，获取后可填写该参数并重启程序\n# 如果不想支持outgoing机器人功能，这里可以随意设置一个内部群组，例如：cidrabcdefgh1234567890AAAAA；或随意一个字符串，例如：disabled\n# 建议该功能默认关闭：除非你必须要用到outgoing机器人\nallow_outgoing_groups: []\n# 以下 allow_users、deny_users、vip_users、admin_users 配置中填写的是用户的userid，outgoing机器人模式下不适用这些配置\n# 比如 [\"1301691029702722\",\"1301691029702733\"]，这个信息需要在钉钉管理后台的通讯录当中获取：https:\u002F\u002Foa.dingtalk.com\u002Fcontacts.htm#\u002Fcontacts\n# 哪些用户可以进行对话，如果留空，则表示允许所有用户，如果要限制，则列表中写用户的userid\nallow_users: []\n# 哪些用户不可以进行对话，如果留空，则表示允许所有用户（如allow_user有配置，需满足相应条件），如果要限制，则列表中写用户的userid，黑名单优先级高于白名单\ndeny_users: []\n# 哪些用户可以进行无限对话，如果留空，则表示只允许管理员（如max_request配置为0，则允许所有人）\n# 如果要针对指定VIP用户放开限制（如max_request配置不为0），则列表中写用户的userid\nvip_users: []\n# 指定哪些人为此系统的管理员，如果留空，则表示没有人是管理员，如果要限制，则列表中写用户的userid\n# 注意：如果下边的app_secrets为空，以及使用outgoing的方式配置机器人，这两种情况下，都表示没有人是管理员\nadmin_users: []\n# 钉钉机器人在应用信息中的AppSecret，为了校验回调的请求是否合法，如果留空，将会忽略校验，则该接口将会存在其他人也能随意调用的安全隐患，因此强烈建议配置正确的secret，如果你的服务对接给多个机器人，这里可以配置多个机器人的secret\napp_secrets: []\n# 敏感词，提问时触发，则不允许提问，回答的内容中触发，则以 🚫 代替\nsensitive_words: []\n# 帮助信息，放在配置文件，可供自定义\nhelp: \"### 发送信息\\n\\n若您想给机器人发送信息，有如下两种方式：\\n\\n1. **群聊：** 在机器人所在群里 **@机器人** 后边跟着要提问的内容。\\n\\n2. **私聊：** 点击机器人的 **头像** 后，再点击 **发消息。** \\n\\n### 系统指令\\n\\n系统指令是一些特殊的词语，当您向机器人发送这些词语时，会触发对应的功能。\\n\\n**📢 注意：系统指令，即只发指令，没有特殊标识，也没有内容。**\\n\\n以下是系统指令详情：\\n\\n|    指令    |                     描述                     |                             示例                             |\\n| :--------: | :------------------------------------------: | :----------------------------------------------------------: |\\n|  **单聊**  | 每次对话都是一次新的对话，没有聊天上下文联系 | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_7b281c4a7003.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **串聊**  |            带上下文联系的对话模式            | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_35bbc7f76d44.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **重置**  |        重置上下文模式，回归到默认模式        | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_942f5e990aa9.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **余额**  |        查询机器人所用OpenAI账号的余额        | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_2f672a902f3a.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **模板**  |           查看应用内置的prompt模板           | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_1ddead0c254b.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **图片**  |           查看如何根据提示生成图片           | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_1ddead0c254b.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n| **查对话** |            获取指定人员的对话历史            | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_942f5e990aa9.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n|  **帮助**  |                 获取帮助信息                 | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_2f672a902f3a.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n\\n\\n### 功能指令\\n\\n除去系统指令，还有一些功能指令，功能指令是直接与应用交互，达到交互目的的一种指令。\\n\\n**📢 注意：功能指令，一律以 #+关键字 为开头，通常需要在关键字后边加个空格，然后再写描述或参数。**\\n\\n以下是功能指令详情\\n\\n| 指令 | 说明 | 示例 |\\n| :--: | :--: | :--: |\\n|  **#图片**  |          根据提示咒语生成对应图片          | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_4f01bf207056.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails> |\\n| **#域名**     | 查询域名相关信息     |  \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_a4282ea14979.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#证书**     | 查询域名证书相关信息     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_3f55ea694fa5.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#Linux命令**     | 根据自然语言描述生成对应命令     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_e681947f8fbc.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#解释代码**     | 分析一段代码的功能或含义     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_77a04291db07.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#正则**     | 根据自然语言描述生成正则     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_dd4fe29edcca.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#周报**     | 应用周报的prompt     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_9c337740c8d3.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n| **#生成sql**     | 根据自然语言描述生成sql语句     | \u003Cdetails>\u003Cbr \u002F>\u003Csummary>预览\u003C\u002Fsummary>\u003Cbr \u002F>\u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_606870d76626.jpg'>\u003Cbr \u002F>\u003C\u002Fdetails>    |\\n\\n如上大多数能力，都是依赖prompt模板实现，如果你有更好的prompt，欢迎提交PR.\\n\\n### 友情提示\\n\\n使用 **串聊模式** 会显著加快机器人所用账号的余额消耗速度，因此，若无保留上下文的需求，建议使用 **单聊模式。** \\n\\n即使有保留上下文的需求，也应适时使用 **重置** 指令来重置上下文.\\n\\n### 项目地址\\n\\n本项目已在GitHub开源，[查看源代码](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk)。\"\n\n# Azure OpenAI 配置\n# 例如你的示例请求为： curl https:\u002F\u002Feryajf.openai.azure.com\u002Fopenai\u002Fdeployments\u002Fgpt-35-turbo\u002Fchat\u002Fcompletions?api-version=2023-03-15-preview 那么对应配置如下，如果配置完成之后还是无法正常使用，请新建应用，重新配置回调试试看\nazure_on: false # 如果是true，则会走azure的openai接口\nazure_resource_name: \"eryajf\" # 对应你的主个性域名\nazure_deployment_name: \"gpt-35-turbo\" # 对应的是 \u002Fdeployments\u002F 后边跟着的这个值\nazure_api_version: \"2023-03-15-preview\" # 对应的是请求中的 api-version 后边的值\nazure_openai_token: \"xxxxxxx\"\n\n# 钉钉应用鉴权凭据信息，支持多个应用。通过请求时候鉴权来识别是来自哪个机器人应用的消息\n# 设置credentials 之后，即具备了访问钉钉平台绝大部分 OpenAPI 的能力；例如上传图片到钉钉平台，提升图片体验，结合 Stream 模式简化服务部署\n# client_id 对应钉钉平台 AppKey\u002FSuiteKey；client_secret 对应 AppSecret\u002FSuiteSecret\ncredentials:\n  - client_id: \"put-your-client-id-here\"\n    client_secret: \"put-your-client-secret-here\"\n```\n\n## 常见问题\n\n如何更好地使用 ChatGPT：这里有[许多案例](https:\u002F\u002Fgithub.com\u002Ff\u002Fawesome-chatgpt-prompts)可供参考。\n\n`🗣 重要重要` 一些常见的问题，我单独开 issue 放在这里：[👉 点我 👈](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fissues\u002F44)，可以查看这里辅助你解决问题，如果里边没有，请对历史 issue 进行搜索(不要提交重复的 issue)，也欢迎大家补充。\n\n## 进群交流\n\n我创建了一个钉钉的交流群，欢迎进群交流。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_9f741154b9c7.jpg)\n\n## 感谢\n\n这个项目能够成立，离不开这些开源项目：\n\n- [go-resty\u002Fresty](https:\u002F\u002Fgithub.com\u002Fgo-resty\u002Fresty)\n- [patrickmn\u002Fgo-cache](https:\u002F\u002Fgithub.com\u002Fpatrickmn\u002Fgo-cache)\n- [solywsh\u002Fchatgpt](https:\u002F\u002Fgithub.com\u002Fsolywsh\u002Fchatgpt)\n- [xgfone\u002Fship](https:\u002F\u002Fgithub.com\u002Fxgfone\u002Fship)\n- [avast\u002Fretry-go](https:\u002F\u002Fgithub.com\u002Favast\u002Fretry-go)\n- [sashabaranov\u002Fgo-openapi](https:\u002F\u002Fgithub.com\u002Fsashabaranov\u002Fgo-openai)\n- [charmbracelet\u002Flog](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Flog)\n\n## 赞赏\n\n如果觉得这个项目对你有帮助，你可以请作者[喝杯咖啡 ☕️](https:\u002F\u002Fwiki.eryajf.net\u002Freward\u002F)\n\n## 高光时刻\n\n> 本项目曾在 | [2022-12-12](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2022\u002F2022-12-12.md#go) | [2022-12-18](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2022\u002F2022-12-18.md#go) | [2022-12-19](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2022\u002F2022-12-19.md#go) | [2022-12-20](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2022\u002F2022-12-20.md#go) | [2023-02-09](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-09.md#go) | [2023-02-10](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-10.md#go) | [2023-02-11](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-11.md#go) | [2023-02-12](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-12.md#go) | [2023-02-13](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-13.md#go) | [2023-02-14](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-14.md#go) | [2023-02-15](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-02-15.md#go) | [2023-03-04](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-04.md#go) | [2023-03-05](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-05.md#go) | [2023-03-19](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-19.md#go) | [2023-03-22](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-22.md#go) | [2023-03-25](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-25.md#go) | [2023-03-26](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-26.md#go) | [2023-03-27](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-27.md#go) | [2023-03-29](https:\u002F\u002Fgithub.com\u002Fbonfy\u002Fgithub-trending\u002Fblob\u002Fmaster\u002F2023-03-29.md#go), 这些天里，登上 GitHub Trending。而且还在持续登榜中，可见最近 openai 的热度。\n> ![image_20230316_114915](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_84cc7678a3ef.jpg)\n\n## Star 历史\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_0ffbcaec7723.png)](https:\u002F\u002Fstar-history.com\u002F#ConnectAI-E\u002FDingtalk-OpenAI&Date)\n\n## 贡献者列表\n\n\u003Cdiv align=\"center\">\n\u003C!-- readme: collaborators,contributors -start -->\n\u003Ctable>\n\u003Ctr>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Feryajf\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_b970f54125e8.png\" width=\"75;\" alt=\"eryajf\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>二丫讲梵\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FLeizhenpeng\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_7bacaf325781.png\" width=\"75;\" alt=\"Leizhenpeng\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>RiverRay\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDDMeaqua\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_5c5084a1f7df.png\" width=\"75;\" alt=\"DDMeaqua\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Null\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fffinly\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_e2f4b0b8e54c.png\" width=\"75;\" alt=\"ffinly\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Finly\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FFrankCheungDev\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_e760201a1f64.png\" width=\"75;\" alt=\"FrankCheungDev\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Frank Cheung\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fb3nguang\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_a9782cc7e699.png\" width=\"75;\" alt=\"b3nguang\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>本光\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fronething\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_4459e68f523c.png\" width=\"75;\" alt=\"ronething\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Ashing Zheng\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flaorange\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_54c7d33f5f15.png\" width=\"75;\" alt=\"laorange\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>辣橙\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchzealot\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_b562536a0e60.png\" width=\"75;\" alt=\"chzealot\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>金喜@DingTalk\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FWinMin\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_2be1dfcdf243.png\" width=\"75;\" alt=\"WinMin\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Swing\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsuyunkai\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_72600a4e6aad.png\" width=\"75;\" alt=\"suyunkai\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Null\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstoneflying\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_0356a83e1c82.png\" width=\"75;\" alt=\"stoneflying\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Stoneflying\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcnmill\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_aac428202d8a.png\" width=\"75;\" alt=\"cnmill\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Mill Peng\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flittle-huang\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_736456da649b.png\" width=\"75;\" alt=\"little-huang\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Little_huang\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fiblogc\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_c13a91eaecf3.png\" width=\"75;\" alt=\"iblogc\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Iblogc\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwangbooth\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_81e9e0b668a4.png\" width=\"75;\" alt=\"wangbooth\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>WangBooth\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffantasticmao\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_6342631dfc8e.png\" width=\"75;\" alt=\"fantasticmao\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Mao Mao\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fluoxufeiyan\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_66108f48eec9.png\" width=\"75;\" alt=\"luoxufeiyan\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>Hugh Gao\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n        \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAydenLii\">\n            \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_readme_b3250df25dc7.png\" width=\"75;\" alt=\"AydenLii\"\u002F>\n            \u003Cbr \u002F>\n            \u003Csub>\u003Cb>AydenLii\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftable>\n\u003C!-- readme: collaborators,contributors -end -->\n\u003C\u002Fdiv>","# ChatGPT DingTalk 快速上手指南\n\n本项目是一个基于 Go 语言开发的钉钉机器人，可将 ChatGPT（支持 GPT-3.5\u002F4\u002F4o-mini 及 Azure OpenAI）集成到钉钉群聊或私聊中。\n\n## 环境准备\n\n在开始之前，请确保你已具备以下条件：\n\n1.  **OpenAI 账号**：拥有有效的 `API_KEY`。\n    *   若在国内服务器部署，需准备代理地址或自定义 API 域名（Base URL）。\n2.  **钉钉开发者账号**：\n    *   已创建企业内部应用。\n    *   获取应用的 `AppKey` (Client ID) 和 `AppSecret`。\n    *   **重要**：在钉钉后台将机器人的消息接收模式配置为 **Stream 模式**（钉钉已于 2023 年 5 月全面开放此模式，无需再配置 Nginx 反向代理）。\n3.  **运行环境**：\n    *   推荐：**Docker** 或 **Docker Compose**。\n    *   可选：直接运行二进制文件（需对应系统架构）。\n\n## 安装步骤\n\n推荐使用 Docker 进行部署，简单且易于维护。以下提供两种常用方式。\n\n### 方式一：使用 Docker 命令快速启动（环境变量版）\n\n复制以下命令，替换其中的 `你的 KEY`、`你的 ClientID:Secret` 以及 `服务外网 URL` 后执行：\n\n```bash\ndocker run -itd --name chatgpt-dingtalk -p 8090:8090 \\\n  -v .\u002Fdata:\u002Fapp\u002Fdata --add-host=\"host.docker.internal:host-gateway\" \\\n  -e LOG_LEVEL=\"info\" \\\n  -e APIKEY=\"替换为你的 OpenAI API_KEY\" \\\n  -e BASE_URL=\"\" \\\n  -e MODEL=\"gpt-3.5-turbo\" \\\n  -e SESSION_TIMEOUT=600 \\\n  -e HTTP_PROXY=\"http:\u002F\u002Fhost.docker.internal:15732\" \\\n  -e DEFAULT_MODE=\"单聊\" \\\n  -e SERVICE_URL=\"替换为你当前服务外网可访问的 URL\" \\\n  -e DINGTALK_CREDENTIALS=\"替换为你的 ClientID1:Secret1,ClientID2:Secret2\" \\\n  -e HELP=\"欢迎使用本工具\\n\\n你可以查看：[用户指南](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fblob\u002Fmain\u002Fdocs\u002FuserGuide.md)\" \\\n  --restart=always \\\n  registry.cn-hangzhou.aliyuncs.com\u002Feryajf\u002Fchatgpt-dingtalk\n```\n\n> **注意**：\n> *   `HTTP_PROXY`：如果你的服务器在国外或已配置 `BASE_URL` 直连，可将此参数留空。\n> *   `DINGTALK_CREDENTIALS`：格式为 `ClientID:Secret`，多个凭证用英文逗号分隔。\n> *   `SERVICE_URL`：必须填写钉钉回调能访问到的公网地址。\n\n### 方式二：使用配置文件挂载（推荐生产环境）\n\n1.  **下载配置文件模板**：\n    ```bash\n    wget https:\u002F\u002Fraw.githubusercontent.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Fmain\u002Fconfig.example.yml -O config.yml\n    ```\n\n2.  **编辑配置文件**：\n    使用编辑器修改 `config.yml`，填入 `api_key`、钉钉凭证 (`dingtalk_credentials`) 等关键信息。\n\n3.  **启动容器**：\n    ```bash\n    docker run -itd --name chatgpt-dingtalk -p 8090:8090 \\\n      -v $(pwd)\u002Fconfig.yml:\u002Fapp\u002Fconfig.yml \\\n      --restart=always \\\n      registry.cn-hangzhou.aliyuncs.com\u002Feryajf\u002Fchatgpt-dingtalk\n    ```\n\n### 备选：二进制部署\n\n1.  前往 [Releases 页面](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk\u002Freleases) 下载对应系统的压缩包。\n2.  解压并复制配置文件：\n    ```bash\n    tar xf chatgpt-dingtalk-linux-amd64.tar.gz\n    cd chatgpt-dingtalk-linux-amd64\n    cp config.example.yml config.yml\n    ```\n3.  编辑 `config.yml` 后运行：\n    ```bash\n    .\u002Fchatgpt-dingtalk\n    # 后台运行\n    nohup .\u002Fchatgpt-dingtalk &> run.log &\n    ```\n\n## 基本使用\n\n部署完成后，请在钉钉开发者后台发布应用，并将机器人添加到群聊中。\n\n### 1. 触发帮助菜单\n在群聊中 **@机器人** 并发送 `帮助` 或空内容，机器人将返回功能列表和使用说明。\n\n### 2. 私聊模式\n点击机器人头像进入对话框，直接发送消息即可对话（无需 @），默认采用“单聊模式”（无上下文）。\n\n### 3. 群聊对话\n*   **单聊模式（默认）**：每次提问都是独立的，不记忆上下文。\n*   **串聊模式（带上下文）**：在群内发送 `串聊` 指令切换模式。此后在该群内的对话将保留上下文记忆。\n    *   *注：不同用户的上下文是隔离的。*\n    *   *重置上下文：* 发送 `重置` 指令。\n\n### 4. 特色功能示例\n\n*   **查询余额**：\n    @机器人 发送 `余额`，查看当前 API Key 的剩余额度和有效期。\n\n*   **生成图片**：\n    发送以 `#图片` 开头的内容，例如：\n    ```text\n    #图片 一只在太空漫步的猫\n    ```\n\n*   **使用内置 Prompt 模板**：\n    发送 `模板` 查看支持的场景（如周报生成、翻译等）。\n    使用时通过 `#关键词` 触发，例如：\n    ```text\n    #周报 本周完成了项目上线，修复了 3 个 Bug...\n    ```\n\n*   **切换模型**：\n    若在配置文件中开启了 GPT-4 支持，可通过指令或在配置中指定 `MODEL=\"gpt-4\"` 来使用更强大的模型。","某互联网公司的运维团队在日常工作中，需要频繁处理服务器报警、编写脚本及解答同事的基础技术疑问。\n\n### 没有 chatgpt-dingtalk 时\n- **响应滞后**：深夜收到服务器报警时，工程师必须离开钉钉界面，切换浏览器登录网页版 ChatGPT 查询解决方案，错失黄金排查时间。\n- **协作断层**：群内讨论技术方案时，无法直接调用 AI 辅助分析，只能由一人离线查询后再复制粘贴回群聊，打断沟通流。\n- **功能单一**：遇到需要生成监控图表或架构示意图的需求时，因缺乏集成绘图能力，需额外打开其他设计工具，流程繁琐。\n- **上下文丢失**：在网页端多轮对话后，难以将完整的调试逻辑无缝同步给钉钉群内的其他成员，导致信息传递碎片化。\n\n### 使用 chatgpt-dingtalk 后\n- **即时响应**：工程师直接在钉钉私聊或群聊中 @机器人，秒级获取故障排查建议，无需切换应用，大幅缩短 MTTR（平均修复时间）。\n- **无缝协作**：团队成员在群聊中直接触发“角色扮演”模式，让机器人模拟资深架构师参与讨论，实时输出优化方案，提升决策效率。\n- **一站式创作**：通过简单的指令即可在群内直接生成技术架构图或数据可视化图片，满足文档编写与汇报需求，无需跳转第三方平台。\n- **连贯交互**：支持单聊串聊模式，机器人自动记忆上下文，可将完整的调试过程与结论直接保留在钉钉聊天记录中，便于后续追溯与共享。\n\nchatgpt-dingtalk 通过将大模型能力原生植入企业沟通流，消除了应用切换的成本，让智能辅助真正成为了团队协同的“隐形引擎”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feryajf_chatgpt-dingtalk_54b88440.png","eryajf","二丫讲梵","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Feryajf_b970f541.jpg","悟已往之不谏，知来者之可追。实迷途其未远，觉今是而昨非。","Thank you follow me","HangZhou","eryajf@163.com","eryajf_net","https:\u002F\u002Fwiki.eryajf.net","https:\u002F\u002Fgithub.com\u002Feryajf",[86,90,94,98],{"name":87,"color":88,"percentage":89},"Go","#00ADD8",98.8,{"name":91,"color":92,"percentage":93},"Dockerfile","#384d54",0.5,{"name":95,"color":96,"percentage":97},"Makefile","#427819",0.4,{"name":99,"color":100,"percentage":101},"Shell","#89e051",0.3,2116,376,"2026-04-11T05:57:38","MIT","Linux, macOS, Windows","无 GPU 需求","未说明",{"notes":110,"python":111,"dependencies":112},"该项目基于 Go 语言开发，无需 Python 环境。支持通过 Docker 容器部署或直接下载二进制文件运行。需要配置 OpenAI API Key 和钉钉应用凭证（AppKey\u002FAppSecret）。若在中国大陆服务器部署且无法直连 OpenAI，需配置 HTTP 代理或自定义 BASE_URL。","不需要 Python (基于 Go 语言)",[113,114],"Go 1.20+","Docker (可选)",[25,15],[117,118,119,120,121,122,123,124,125],"chatgpt","chatgpt-api","dingtalk","dingtalk-robot","openai","go-gpt","connect-ai","go","golang",null,"2026-03-27T02:49:30.150509","2026-04-16T08:12:33.618523",[],[131,136,141,146,151,156,161,166,171,176,181,186,191,196,201,206,211,216,221,226],{"id":132,"version":133,"summary_zh":134,"released_at":135},280768,"v1.1.6","## 变更内容\n## 🐛 Bug 修复\n\n* 修复：在 stream 模式下，http_url 可以留空 (#280) @eryajf\n","2023-07-26T01:49:01",{"id":137,"version":138,"summary_zh":139,"released_at":140},280769,"v1.1.5","## 变更内容\n## 🐛 Bug 修复\n\n* 修复：修复升级 go-openai 版本后 Azure 不可用的问题 (#275) @eryajf\n","2023-07-08T15:02:20",{"id":142,"version":143,"summary_zh":144,"released_at":145},280770,"v1.1.3","## 变更内容\n\n* 修复：当回复消息类型为Markdown时，@功能不生效 (#272) @wangbooth\n* 撤销 “特性：同步OpenAI更新，更新0613模型及3.5 16K模型，并修复stream模式引入的两个bug” (#256) @eryajf\n\n## 🚀 特性\n\n* 特性：将go-openai版本升级至最新版，支持gpt-3.5-turbo-0613 (#268) @eryajf\n* 特性：同时将镜像推送至国内阿里云仓库，解决镜像下载问题 (#258) @eryajf\n\n## 🐛 Bug修复\n\n* 修复：解决使用Docker运行时获取密钥异常的问题 (#263) @eryajf\n\n## 📝 文档更新\n\n* 文档：在说明文档中将镜像更换为阿里云仓库，解决拉取镜像困难的问题 (#261) @eryajf\n","2023-07-07T12:55:57",{"id":147,"version":148,"summary_zh":149,"released_at":150},280771,"v1.1.2","## 变更内容\n\n## 🚀 功能\n\n* feat: 同步OpenAI更新，更新0613模型及3.5 16K模型 及 修复stream模式引入的两个bug (#249) @ffinly\n* 如果上下文超过最大Token，删除最早的对话，而不是直接报错重置。并且将上下文最大长度参数作为变量引出。 (#247) @suyunkai\n\n## 📝 文档更新\n\n* doc: 调整密钥的配置说明信息 (#245) @eryajf\n","2023-06-16T10:33:41",{"id":152,"version":153,"summary_zh":154,"released_at":155},280772,"v1.1.1","## 变更内容\n## 🚀 功能\n\n* chore: ⬆️ 升级 dingtalk-stream-sdk-go 的依赖版本 (#242) @eryajf\n","2023-06-11T08:19:50",{"id":157,"version":158,"summary_zh":159,"released_at":160},280773,"v1.1.0","## 变更内容\n\n* 修复：当请求 Azure 时携带 userId 参数会导致 500 错误。（#234）@little-huang\n\n## 🚀 功能\n\n* 修改配置，使默认启动模式为 stream。（#231）@eryajf\n\n## 📝 文档更新\n\n* 文档：添加 stream 模式的配置步骤。（#238）@eryajf\n","2023-06-04T11:43:02",{"id":162,"version":163,"summary_zh":164,"released_at":165},280774,"v1.0.21","## 🚀 功能特性\n\n* feat: 添加stream模式的支持 (#230) @eryajf\n","2023-05-24T11:30:24",{"id":167,"version":168,"summary_zh":169,"released_at":170},280775,"v1.0.20","## 变更内容\n* docs: 在 README.md 中新增了 Star 历史 (#215) @ffinly\n* fix: 修复钉钉 Markdown 消息中不支持显示 HTML 代码的 bug，对 HTML 标签进行转义 (#213) @ffinly\n\n## 🚀 新特性\n\n* feat: 支持将图片上传至钉钉平台，并在图片生成流程中使用钉钉的图片 CDN 能力 (#225) @chzealot\n\n## 🐛 Bug 修复\n\n* fix: HTML 转义 (#222) @stoneflying\n* fix: 修复敏感词替换显示问题（由于钉钉回复的消息格式已改为 Markdown 格式，原替换为 * 的逻辑会出现语法冲突）(#220) @ffinly\n* fix: 将 docker-compose 的 outgoing 配置留空 (#217) @eryajf\n","2023-05-22T13:18:23",{"id":172,"version":173,"summary_zh":174,"released_at":175},280776,"v1.0.19","## 变更内容\n## 🐛 Bug 修复\n\n* 修复：请求超时 (#212) @eryajf\n","2023-04-15T05:40:49",{"id":177,"version":178,"summary_zh":179,"released_at":180},280777,"v1.0.18","## 变更内容\n* fix: 修复 `session_timeout` 配置项不生效的 bug，优化相关缓存逻辑，同时对余额、查对话功能权限进行优化 (#210) @ffinly\n\n## 🚀 新特性\n\n* feat: 将 Web 框架切换为 Gin 框架 (#211) @eryajf\n* feat: 将回复消息格式修改为 Markdown，支持代码块的展示（仅 PC 端支持），如返回消息是 Markdown 格式将直接渲染 (#209) @ffinly\n","2023-04-15T03:23:49",{"id":182,"version":183,"summary_zh":184,"released_at":185},280778,"v1.0.17","## What’s Changed\r\n## 🚀 Features\r\n\r\n* perf: 用户提问含有敏感词，新增相关日志输出（userid及用户提问内容） (#205) @ffinly\r\n* feat: 增加敏感词功能 (#204) @eryajf\r\n","2023-04-14T07:13:31",{"id":187,"version":188,"summary_zh":189,"released_at":190},280779,"v1.0.16","## What’s Changed\r\n## 🚀 Features\r\n\r\n* feat: 新增Tokenizer，实现tokens的精确计算，让机器人支持更长的输入（特别是英文）及上下文，同时更新依赖库 (#199) @ffinly\r\n\r\n## 🐛 Bug Fixes\r\n\r\n* perf: 优化群聊时@机器人的消息回复逻辑，直接@机器人返回帮助信息 (#201) @ffinly\r\n* fix: 修复在配置了ALLOW_GROUPS的情况下，用户无法进行单聊的BUG，相关代码条件里面新增ConversationType == \"2\"的限制 (#198) @ffinly\r\n\r\n感谢 @ffinly  的热情贡献。\r\n","2023-04-13T11:31:04",{"id":192,"version":193,"summary_zh":194,"released_at":195},280780,"v1.0.15","## What’s Changed\r\n* feat: 新增普通群outgoing机器人限制逻辑，提升安全性；同时修改allow_groups配置为群ID，群ID获取方法请见配置文件说明 (#191) @ffinly\r\n\r\n## 🐛 Bug Fixes\r\n\r\n* fix: 默认的示例配置应该留空，以保留最大权限 (#196) @eryajf\r\n* fix: 修复docker镜像名称的取值问题 (#195) @eryajf\r\n* fix: 更新用户请求次数缓存失效时间为第二天零点，修复max_request配置达不到预期的问题 (#192) @ffinly\r\n\r\n## 📝 Documentation updates\r\n\r\n* docs: 修复一些GPT的拼写错误 (#194) @ffinly\r\n","2023-04-11T06:20:26",{"id":197,"version":198,"summary_zh":199,"released_at":200},280781,"v1.0.14","## What’s Changed\r\n\r\n* perf:优化&修复机器人回复内容 (#188) @AydenLii\r\n\r\n## 🚀 Features\r\n\r\n* feat: 新增黑名单用户及VIP用户处理逻辑，同时修改ALLOW_USERS的校验为userid（SenderStaffId），将用户相关校验统一为userid (#190) @ffinly\r\n* perf: log add time (#186) @cnmill\r\n","2023-04-09T13:03:41",{"id":202,"version":203,"summary_zh":204,"released_at":205},280782,"v1.0.13","## What’s Changed\r\n\r\n## 🐛 Bug Fixes\r\n\r\n* fix: 修复余额查询的接口 (#185) @eryajf\r\n* fix: 修复chatgpt.go中处理AzureOn相关逻辑时重新定义变量config导致程序崩溃的问题 (#183) @ffinly\r\n","2023-04-07T03:36:49",{"id":207,"version":208,"summary_zh":209,"released_at":210},280783,"v1.0.12","## What’s Changed\r\n\r\n## 🚀 Features\r\n\r\n* feat:support azure openai (#180) @Leizhenpeng\r\n\r\n## 🐛 Bug Fixes\r\n\r\n* perf: 新增outgoing类型机器人下使用的放通逻辑 (#177) @ffinly\r\n\r\n## 📝 Documentation updates\r\n\r\n* docs: 增加贡献者指南文档 (#181) @eryajf\r\n* perf: 优化一些回复信息及信息记录，移除不再使用的欢迎代码 (#179) @ffinly\r\n","2023-04-06T16:34:43",{"id":212,"version":213,"summary_zh":214,"released_at":215},280784,"v1.0.11","## What’s Changed\r\n## 🚀 Features\r\n\r\n* feat: 添加默认路径的GET路由并提醒用户服务器状态 (#174) @Leizhenpeng\r\n* perf: 将管理员校验的字段改为userid,从而解决普通用户绕过校验的问题 (#175) @eryajf\r\n* perf: 优化添加secret的逻辑,支持配置多个 (#173) @eryajf\r\n\r\n- `📢 注意：`无论任何时候升级，你都应该看看最新的[配置文件说明](https:\u002F\u002Fgithub.com\u002Feryajf\u002Fchatgpt-dingtalk#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%AF%B4%E6%98%8E)，如果有新的内容，我都会在这里进行更新。你也应该仔细阅读，并且正确配置，以确保完整地体验到新的功能特性。\r\n- `📢 注意：`另外我创建了一个钉钉的交流群，欢迎进群交流。\r\n    ![](https:\u002F\u002Fcdn.staticaly.com\u002Fgh\u002Feryajf\u002Ftu\u002Fmain\u002Fimg\u002Fimage_20230405_191425.jpg)","2023-04-05T08:55:08",{"id":217,"version":218,"summary_zh":219,"released_at":220},280785,"v1.0.10","## What’s Changed\r\n## 🚀 Features\r\n\r\n* feat: 支持help自定义,将用户指南单独成文，便于整合以及内容呈现 (#172) @eryajf\r\n* feat: 添加对回调请求校验的能力,解决可被其他人调用的安全隐患 (#171) @eryajf\r\n* feat: 增加域名以及证书信息的查询能力 (#170) @eryajf\r\n\r\n## 🐛 Bug Fixes\r\n\r\n* fix: 修复配置指向的错误 (#168) @eryajf\r\n","2023-04-04T14:44:18",{"id":222,"version":223,"summary_zh":224,"released_at":225},280786,"v1.0.9","## What’s Changed\r\n## 🐛 Bug Fixes\r\n\r\n* fix: 解决请求信息通过伪造绕过校验的问题 (#166) @eryajf\r\n* fix: 将示例配置的配置信息调整为空 (#163) @eryajf\r\n","2023-04-03T09:28:16",{"id":227,"version":228,"summary_zh":229,"released_at":230},280787,"v1.0.8","## What’s Changed\r\n## 🐛 Bug Fixes\r\n\r\n* fix: 初始化时没有data目录的问题,暂时注释余额功能及其他修复 (#162) @eryajf\r\n* fix: 信息查询时的错漏 (#160) @eryajf\r\n","2023-04-03T00:27:59"]