# 应用的日志级别,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-turbo-preview", "gpt-4-vision-preview", "gpt-4", "gpt-4o-mini", "gpt-3.5-turbo-1106", "gpt-3.5-turbo-0613", "gpt-3.5-turbo-0301", "gpt-3.5-turbo-16k", "gpt-3.5-turbo-16k-0613", "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: "600s" # 最大问题长度 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: "### 发送信息\n\n若您想给机器人发送信息,有如下两种方式:\n\n1. **群聊:** 在机器人所在群里 **@机器人** 后边跟着要提问的内容。\n\n2. **私聊:** 点击机器人的 **头像** 后,再点击 **发消息。** \n\n### 系统指令\n\n系统指令是一些特殊的词语,当您向机器人发送这些词语时,会触发对应的功能。\n\n**📢 注意:系统指令,即只发指令,没有特殊标识,也没有内容。**\n\n以下是系统指令详情:\n\n| 指令 | 描述 | 示例 |\n| :--------: | :------------------------------------------: | :----------------------------------------------------------: |\n| **单聊** | 每次对话都是一次新的对话,没有聊天上下文联系 |

预览

|\n| **串聊** | 带上下文联系的对话模式 |

预览

|\n| **重置** | 重置上下文模式,回归到默认模式 |

预览

|\n| **余额** | 查询机器人所用OpenAI账号的余额 |

预览

|\n| **模板** | 查看应用内置的prompt模板 |

预览

|\n| **图片** | 查看如何根据提示生成图片 |

预览

|\n| **查对话** | 获取指定人员的对话历史 |

预览

|\n| **帮助** | 获取帮助信息 |

预览

|\n\n\n### 功能指令\n\n除去系统指令,还有一些功能指令,功能指令是直接与应用交互,达到交互目的的一种指令。\n\n**📢 注意:功能指令,一律以 #+关键字 为开头,通常需要在关键字后边加个空格,然后再写描述或参数。**\n\n以下是功能指令详情\n\n| 指令 | 说明 | 示例 |\n| :--: | :--: | :--: |\n| **#图片** | 根据提示咒语生成对应图片 |

预览

|\n| **#域名** | 查询域名相关信息 |

预览

|\n| **#证书** | 查询域名证书相关信息 |

预览

|\n| **#Linux命令** | 根据自然语言描述生成对应命令 |

预览

|\n| **#解释代码** | 分析一段代码的功能或含义 |

预览

|\n| **#正则** | 根据自然语言描述生成正则 |

预览

|\n| **#周报** | 应用周报的prompt |

预览

|\n| **#生成sql** | 根据自然语言描述生成sql语句 |

预览

|\n\n如上大多数能力,都是依赖prompt模板实现,如果你有更好的prompt,欢迎提交PR。\n\n### 友情提示\n\n使用 **串聊模式** 会显著加快机器人所用账号的余额消耗速度,因此,若无保留上下文的需求,建议使用 **单聊模式。** \n\n即使有保留上下文的需求,也应适时使用 **重置** 指令来重置上下文。\n\n### 项目地址\n\n本项目已在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"