Files
chatgpt-dingtalk/docker-compose.yml
本光 d6c428f7fd 新增支持gpt-4o-mini,升级mod版本 (#306)
* 新增支持gpt-4o-mini
2024-07-31 09:08:09 +08:00

53 lines
11 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

version: "3"
services:
chatgpt:
container_name: chatgpt
image: registry.cn-hangzhou.aliyuncs.com/eryajf/chatgpt-dingtalk
restart: always
environment:
LOG_LEVEL: "info" # 应用的日志级别 info/debug
APIKEY: xxxxxx # 你的 api_key
RUN_MODE: "stream" # 运行模式http 或者 stream 强烈建议你使用stream模式通过此链接了解https://open.dingtalk.com/document/isvapp/stream
BASE_URL: "" # 如果你使用官方的接口地址 https://api.openai.com则留空即可如果你想指定请求url的地址可通过这个参数进行配置注意需要带上 http 协议
MODEL: "gpt-3.5-turbo" # 指定模型,默认为 gpt-3.5-turbo , 可选参数有: "gpt-4-32k-0613", "gpt-4-32k-0314", "gpt-4-32k", "gpt-4-0613", "gpt-4-0314", "gpt-4", "gpt-4o-mini", "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则该配置项可以留空或者直接忽略
IMAGE_MODEL: "dall-e-2" # 指定绘画模型,默认为 dall-e-2 , 可选参数有:"dall-e-2" "dall-e-3"
SESSION_TIMEOUT: 600 # 会话超时时间,默认600秒,在会话时间内所有发送给机器人的信息会作为上下文
MAX_QUESTION_LEN: 2048 # 最大问题长度默认4096 token正常情况默认值即可如果使用gpt4-8k或gpt4-32k可根据模型token上限修改。
MAX_ANSWER_LEN: 2048 # 最大回答长度默认4096 token正常情况默认值即可如果使用gpt4-8k或gpt4-32k可根据模型token上限修改。
MAX_TEXT: 4096 # 最大文本 = 问题 + 回答, 接口限制默认4096 token正常情况默认值即可如果使用gpt4-8k或gpt4-32k可根据模型token上限修改。
HTTP_PROXY: http://host.docker.internal:15777 # 指定请求时使用的代理,如果为空,则不使用代理,注意需要带上 http 协议 或 socks5 协议
DEFAULT_MODE: "单聊" # 指定默认的对话模式,可根据实际需求进行自定义,如果不设置,默认为单聊,即无上下文关联的对话模式
MAX_REQUEST: 0 # 单人单日请求次数上限默认为0即不限制
PORT: 8090 # 指定服务启动端口,默认为 8090容器化部署时不需要调整一般在二进制宿主机部署时遇到端口冲突时使用如果run_mode为stream模式则可以忽略该配置项
SERVICE_URL: "" # 指定服务的地址,就是当前服务可供外网访问的地址(或者直接理解为你配置在钉钉回调那里的地址),用于生成图片时给钉钉做渲染
CHAT_TYPE: "0" # 限定对话类型 0不限 1只能单聊 2只能群聊
ALLOW_GROUPS: "" # 哪些群组可以进行对话仅在CHAT_TYPE为0、2时有效如果留空则表示允许所有群组如果要限制则列表中写群IDConversationID
# 群ID可在群组中 @机器人 群ID 来查看日志获取,例如日志会输出:[🙋 企业内部机器人 在『测试』群的ConversationID为: "cidrabcdefgh1234567890AAAAA"],获取后可填写该参数并重启程序
# 如果不想支持outgoing机器人功能这里可以随意设置一个内部群组例如cidrabcdefgh1234567890AAAAA或随意一个字符串例如disabled
# 建议该功能默认关闭除非你必须要用到outgoing机器人
ALLOW_OUTGOING_GROUPS: "" # 哪些普通群使用outgoing机器人可以进行对话如果留空则表示允许所有群组如果要限制则列表中写群IDConversationID
# 以下 ALLOW_USERS、DENY_USERS、VIP_USERS、ADMIN_USERS 配置中填写的是用户的userid
# 比如 ["1301691029702722","1301691029702733"]这个信息需要在钉钉管理后台的通讯录当中获取https://oa.dingtalk.com/contacts.htm#/contacts
# 哪些用户可以进行对话如果留空则表示允许所有用户如果要限制则列表中写用户的userid
ALLOW_USERS: "" # 哪些用户可以进行对话如果留空则表示允许所有用户如果要限制则填写用户的userid
DENY_USERS: "" # 哪些用户不可以进行对话如果留空则表示允许所有用户如allow_user有配置需满足相应条件如果要限制则列表中写用户的userid黑名单优先级高于白名单
VIP_USERS: "" # 哪些用户可以进行无限对话如果留空则表示只允许管理员如max_request配置为0则允许所有人如果要针对指定VIP用户放开限制如max_request配置不为0则列表中写用户的userid
ADMIN_USERS: "" # 指定哪些人为此系统的管理员如果留空则表示没有人是管理员如果要限制则列表中写用户的userid
# 注意如果下边的app_secrets为空以及使用outgoing的方式配置机器人这两种情况下都表示没有人是管理员
APP_SECRETS: "" # 钉钉机器人在应用信息中的AppSecret为了校验回调的请求是否合法如果留空将会忽略校验则该接口将会存在其他人也能随意调用的安全隐患因此强烈建议配置正确的secret如果你的服务对接给多个机器人这里可以配置多个机器人的secret比如 "xxxx,yyyy"
SENSITIVE_WORDS: "" # 敏感词,提问时触发,则不允许提问,回答的内容中触发,则以 🚫 代替
AZURE_ON: "false" # 是否走Azure OpenAi API, 默认false ,如果为true则需要配置下边的四个参数
AZURE_API_VERSION: "" # Azure OpenAi API 版本,比如 "2023-03-15-preview"
AZURE_RESOURCE_NAME: "" # Azure OpenAi API 资源名称,比如 "openai"
AZURE_DEPLOYMENT_NAME: "" # Azure OpenAi API 部署名称,比如 "openai"
AZURE_OPENAI_TOKEN: "" # Azure token
DINGTALK_CREDENTIALS: "" # 钉钉应用访问凭证,比如 "client_id1:secret1,client_id2:secret2"
HELP: "### 发送信息\n\n若您想给机器人发送信息有如下两种方式\n\n1. **群聊:** 在机器人所在群里 **@机器人** 后边跟着要提问的内容。\n\n2. **私聊:** 点击机器人的 **头像** 后,再点击 **发消息。** \n\n### 系统指令\n\n系统指令是一些特殊的词语当您向机器人发送这些词语时会触发对应的功能。\n\n**📢 注意:系统指令,即只发指令,没有特殊标识,也没有内容。**\n\n以下是系统指令详情\n\n| 指令 | 描述 | 示例 |\n| :--------: | :------------------------------------------: | :----------------------------------------------------------: |\n| **单聊** | 每次对话都是一次新的对话,没有聊天上下文联系 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_193608.jpg'><br /></details> |\n| **串聊** | 带上下文联系的对话模式 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_193608.jpg'><br /></details> |\n| **重置** | 重置上下文模式,回归到默认模式 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_193608.jpg'><br /></details> |\n| **余额** | 查询机器人所用OpenAI账号的余额 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230304_222522.jpg'><br /></details> |\n| **模板** | 查看应用内置的prompt模板 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_193827.jpg'><br /></details> |\n| **图片** | 查看如何根据提示生成图片 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_194125.jpg'><br /></details> |\n| **查对话** | 获取指定人员的对话历史 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_193938.jpg'><br /></details> |\n| **帮助** | 获取帮助信息 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_202336.jpg'><br /></details> |\n\n\n### 功能指令\n\n除去系统指令还有一些功能指令功能指令是直接与应用交互达到交互目的的一种指令。\n\n**📢 注意:功能指令,一律以 #+关键字 为开头,通常需要在关键字后边加个空格,然后再写描述或参数。**\n\n以下是功能指令详情\n\n| 指令 | 说明 | 示例 |\n| :--: | :--: | :--: |\n| **#图片** | 根据提示咒语生成对应图片 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230323_150547.jpg'><br /></details> |\n| **#域名** | 查询域名相关信息 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_202620.jpg'><br /></details> |\n| **#证书** | 查询域名证书相关信息 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_202706.jpg'><br /></details> |\n| **#Linux命令** | 根据自然语言描述生成对应命令 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_214947.jpg'><br /></details> |\n| **#解释代码** | 分析一段代码的功能或含义 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_215242.jpg'><br /></details> |\n| **#正则** | 根据自然语言描述生成正则 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_220222.jpg'><br /></details> |\n| **#周报** | 应用周报的prompt | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_214335.jpg'><br /></details> |\n| **#生成sql** | 根据自然语言描述生成sql语句 | <details><br /><summary>预览</summary><br /><img src='https://cdn.jsdelivr.net/gh/eryajf/tu/img/image_20230404_221325.jpg'><br /></details> |\n\n如上大多数能力都是依赖prompt模板实现如果你有更好的prompt欢迎提交PR。\n\n### 友情提示\n\n使用 **串聊模式** 会显著加快机器人所用账号的余额消耗速度,因此,若无保留上下文的需求,建议使用 **单聊模式。** \n\n即使有保留上下文的需求也应适时使用 **重置** 指令来重置上下文。\n\n### 项目地址\n\n本项目已在GitHub开源[查看源代码](https://github.com/eryajf/chatgpt-dingtalk)。" # 帮助信息,放在配置文件,可供自定义
volumes:
- ./data:/app/data
ports:
- "8090:8090"
extra_hosts:
- host.docker.internal:host-gateway