From 40c4a468b66d5c1f1b967df03ab2f3362cad38e0 Mon Sep 17 00:00:00 2001 From: okxlin Date: Wed, 19 Jun 2024 00:35:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0chatgpt-on-wechat?= =?UTF-8?q?=E5=88=B0=E5=88=97=E8=A1=A8=20#1429?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/chatgpt-on-wechat/1.6.6/.env.sample | 121 +++ apps/chatgpt-on-wechat/1.6.6/data.yml | 943 ++++++++++++++++++ .../1.6.6/docker-compose.yml | 136 +++ apps/chatgpt-on-wechat/README.md | 31 + apps/chatgpt-on-wechat/data.yml | 19 + apps/chatgpt-on-wechat/latest/.env.sample | 121 +++ apps/chatgpt-on-wechat/latest/data.yml | 943 ++++++++++++++++++ .../latest/docker-compose.yml | 136 +++ apps/chatgpt-on-wechat/logo.png | Bin 0 -> 4768 bytes 9 files changed, 2450 insertions(+) create mode 100644 apps/chatgpt-on-wechat/1.6.6/.env.sample create mode 100644 apps/chatgpt-on-wechat/1.6.6/data.yml create mode 100644 apps/chatgpt-on-wechat/1.6.6/docker-compose.yml create mode 100644 apps/chatgpt-on-wechat/README.md create mode 100644 apps/chatgpt-on-wechat/data.yml create mode 100644 apps/chatgpt-on-wechat/latest/.env.sample create mode 100644 apps/chatgpt-on-wechat/latest/data.yml create mode 100644 apps/chatgpt-on-wechat/latest/docker-compose.yml create mode 100644 apps/chatgpt-on-wechat/logo.png diff --git a/apps/chatgpt-on-wechat/1.6.6/.env.sample b/apps/chatgpt-on-wechat/1.6.6/.env.sample new file mode 100644 index 00000000..c5cfde7b --- /dev/null +++ b/apps/chatgpt-on-wechat/1.6.6/.env.sample @@ -0,0 +1,121 @@ +ALWAYS_REPLY_VOICE="false" +APPDATA_DIR="" +AZURE_API_VERSION="" +AZURE_DEPLOYMENT_ID="" +AZURE_OPENAI_DALLE_API_BASE="" +AZURE_OPENAI_DALLE_API_KEY="" +AZURE_OPENAI_DALLE_DEPLOYMENT_ID="" +AZURE_VOICE_API_KEY="" +AZURE_VOICE_REGION="japaneast" +BAIDU_API_KEY="" +BAIDU_APP_ID="" +BAIDU_DEV_PID=1537 +BAIDU_SECRET_KEY="" +BAIDU_TRANSLATE_APP_ID="" +BAIDU_TRANSLATE_APP_KEY="" +BAIDU_WENXIN_API_KEY="" +BAIDU_WENXIN_MODEL="eb-instant" +BAIDU_WENXIN_SECRET_KEY="" +CHANNEL_TYPE="" +CHARACTER_DESC="你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。" +CHAT_START_TIME="00:00" +CHAT_STOP_TIME="24:00" +CHAT_TIME_MODULE="false" +CLAUDE_API_COOKIE="" +CLAUDE_API_KEY="" +CLAUDE_UUID="" +CLEAR_MEMORY_COMMANDS="#清除记忆" +CONCURRENCY_IN_SESSION=1 +CONTAINER_NAME="chatgpt-on-wechat" +CONVERSATION_MAX_TOKENS=1000 +DALLE3_IMAGE_QUALITY="hd" +DALLE3_IMAGE_STYLE="vivid" +DASHSCOPE_API_KEY="" +DEBUG="false" +DINGTALK_CARD_ENABLED="false" +DINGTALK_CLIENT_ID="" +DINGTALK_CLIENT_SECRET="" +EXPIRES_IN_SECONDS=3600 +FEISHU_APP_ID="" +FEISHU_APP_SECRET="" +FEISHU_BOT_NAME="" +FEISHU_PORT=80 +FEISHU_TOKEN="" +FREQUENCY_PENALTY="0.0" +GEMINI_API_KEY="" +GROUP_AT_OFF="false" +GROUP_CHAT_EXIT_GROUP="false" +GROUP_CHAT_IN_ONE_SESSION='["ChatGPT测试群"]' +GROUP_CHAT_KEYWORD="[]" +GROUP_CHAT_PREFIX='["@bot"]' +GROUP_CHAT_REPLY_PREFIX="" +GROUP_CHAT_REPLY_SUFFIX="" +GROUP_NAME_KEYWORD_WHITE_LIST="[]" +GROUP_NAME_WHITE_LIST='["ChatGPT测试群", "ChatGPT测试群2"]' +GROUP_SPEECH_RECOGNITION="false" +GROUP_WELCOME_MSG="" +HOT_RELOAD="false" +IMAGE_CREATE_PREFIX='["画", "看", "找"]' +IMAGE_CREATE_SIZE="256x256" +IMAGE_PROXY="true" +LINKAI_API_BASE="https://api.link-ai.tech" +LINKAI_API_KEY="" +LINKAI_APP_CODE="" +MAX_MEDIA_SEND_COUNT=3 +MEDIA_SEND_INTERVAL=1 +MODEL="gpt-3.5-turbo" +MOONSHOT_API_KEY="" +MOONSHOT_BASE_URL="https://api.moonshot.cn/v1/chat/completions" +NICK_NAME_BLACK_LIST="[]" +OPEN_AI_API_BASE="https://api.openai.com/v1" +OPEN_AI_API_KEY="" +PLUGIN_TRIGGER_PREFIX="$" +PRESENCE_PENALTY="0.0" +PROXY="" +QWEN_ACCESS_KEY_ID="" +QWEN_ACCESS_KEY_SECRET="" +QWEN_AGENT_KEY="" +QWEN_APP_ID="" +QWEN_NODE_ID="" +RATE_LIMIT_CHATGPT=20 +RATE_LIMIT_DALLE=50 +REQUEST_TIMEOUT=30 +SINGLE_CHAT_PREFIX='["bot", "@bot"]' +SINGLE_CHAT_REPLY_PREFIX="[bot] " +SINGLE_CHAT_REPLY_SUFFIX="" +SPEECH_RECOGNITION="true" +SUBSCRIBE_MSG="" +TEMPERATURE="0.9" +TEXT_TO_IMAGE="dall-e-2" +TEXT_TO_VOICE="false" +TEXT_TO_VOICE_MODEL="tts-1" +TIMEOUT=30 +TOP_P="0.9" +TRANSLATE="baidu" +TRIGGER_BY_SELF="false" +TTS_VOICE_ID="alloy" +USE_AZURE_CHATGPT="false" +USE_GLOBAL_PLUGIN_CONFIG="false" +USE_LINKAI="false" +VOICE_REPLY_VOICE="false" +VOICE_TO_TEXT="openai" +WECHATCOMAPP_AES_KEY="" +WECHATCOMAPP_AGENT_ID="" +WECHATCOMAPP_PORT=9898 +WECHATCOMAPP_SECRET="" +WECHATCOMAPP_TOKEN="" +WECHATCOM_CORP_ID="" +WECHATMP_AES_KEY="" +WECHATMP_APP_ID="" +WECHATMP_APP_SECRET="" +WECHATMP_PORT=8080 +WECHATMP_TOKEN="" +WECHATY_PUPPET_SERVICE_TOKEN="" +WEWORK_SMART="true" +XI_API_KEY="" +XI_VOICE_ID="" +XUNFEI_API_KEY="" +XUNFEI_API_SECRET="" +XUNFEI_APP_ID="" +ZHIPU_AI_API_BASE="https://open.bigmodel.cn/api/paas/v4" +ZHIPU_AI_API_KEY="" diff --git a/apps/chatgpt-on-wechat/1.6.6/data.yml b/apps/chatgpt-on-wechat/1.6.6/data.yml new file mode 100644 index 00000000..78cbb467 --- /dev/null +++ b/apps/chatgpt-on-wechat/1.6.6/data.yml @@ -0,0 +1,943 @@ +additionalProperties: + formFields: + - default: "" + edit: true + envKey: OPEN_AI_API_KEY + labelEn: OpenAI API Key + labelZh: OpenAI API 密钥 + required: false + type: text + - default: "https://api.openai.com/v1" + edit: true + envKey: OPEN_AI_API_BASE + labelEn: OpenAI API Base + labelZh: OpenAI API 基础地址 + required: false + type: text + - default: "gpt-3.5-turbo" + edit: true + envKey: MODEL + labelEn: Model + labelZh: 模型 + required: false + type: text + - default: "false" + edit: true + envKey: USE_AZURE_CHATGPT + labelEn: Use Azure ChatGPT + labelZh: 使用 Azure ChatGPT + required: false + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "" + edit: true + envKey: AZURE_DEPLOYMENT_ID + labelEn: Azure Deployment ID + labelZh: Azure 部署 ID + required: false + type: text + - default: "" + edit: true + envKey: AZURE_API_VERSION + labelEn: Azure API Version + labelZh: Azure API 版本 + required: false + type: text + - default: "" + edit: true + envKey: PROXY + labelEn: Proxy + labelZh: 代理 + required: false + type: text + - default: '["bot", "@bot"]' + edit: true + envKey: SINGLE_CHAT_PREFIX + labelEn: Single Chat Prefix + labelZh: 私聊前缀 + required: true + type: text + - default: "[bot] " + edit: true + envKey: SINGLE_CHAT_REPLY_PREFIX + labelEn: Single Chat Reply Prefix + labelZh: 私聊回复前缀 + required: true + type: text + - default: "" + edit: true + envKey: SINGLE_CHAT_REPLY_SUFFIX + labelEn: Single Chat Reply Suffix + labelZh: 私聊回复后缀 + required: false + type: text + - default: '["@bot"]' + edit: true + envKey: GROUP_CHAT_PREFIX + labelEn: Group Chat Prefix + labelZh: 群聊前缀 + required: true + type: text + - default: "" + edit: true + envKey: GROUP_CHAT_REPLY_PREFIX + labelEn: Group Chat Reply Prefix + labelZh: 群聊回复前缀 + required: false + type: text + - default: "" + edit: true + envKey: GROUP_CHAT_REPLY_SUFFIX + labelEn: Group Chat Reply Suffix + labelZh: 群聊回复后缀 + required: false + type: text + - default: '[]' + edit: true + envKey: GROUP_CHAT_KEYWORD + labelEn: Keywords for triggering replies in group chats + labelZh: 群聊触发回复的关键词 + required: false + type: text + - default: "false" + edit: true + envKey: GROUP_AT_OFF + labelEn: Group At Off + labelZh: 关闭群聊@bot触发 + required: false + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: '["ChatGPT测试群", "ChatGPT测试群2"]' + edit: true + envKey: GROUP_NAME_WHITE_LIST + labelEn: Group Name White List + labelZh: 群名称白名单 + required: false + type: text + - default: '[]' + edit: true + envKey: GROUP_NAME_KEYWORD_WHITE_LIST + labelEn: Group Name Keyword White List + labelZh: 群名称关键词白名单 + required: false + type: text + - default: '["ChatGPT测试群"]' + edit: true + envKey: GROUP_CHAT_IN_ONE_SESSION + labelEn: Group names that support session context sharing + labelZh: 支持会话上下文共享的群名称 + required: false + type: text + - default: '[]' + edit: true + envKey: NICK_NAME_BLACK_LIST + labelEn: Nickname Blacklist + labelZh: 昵称黑名单 + required: false + type: text + - default: "" + edit: true + envKey: GROUP_WELCOME_MSG + labelEn: Group Welcome Message + labelZh: 群欢迎信息 + required: false + type: text + - default: "false" + edit: true + envKey: TRIGGER_BY_SELF + labelEn: Trigger by Self + labelZh: 是否允许机器人触发 + required: false + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "dall-e-2" + edit: true + envKey: TEXT_TO_IMAGE + labelEn: Text to Image Model + labelZh: 图片生成模型 + required: false + type: select + values: + - label: "dall-e-2" + value: "dall-e-2" + - label: "dall-e-3" + value: "dall-e-3" + - default: "vivid" + edit: true + envKey: DALLE3_IMAGE_STYLE + labelEn: Dall-E 3 Image Style + labelZh: Dall-E 3 图片风格 + required: false + type: select + values: + - label: "Vivid" + value: "vivid" + - label: "Natural" + value: "natural" + - default: "hd" + edit: true + envKey: DALLE3_IMAGE_QUALITY + labelEn: Dall-E 3 Image Quality + labelZh: Dall-E 3 图片质量 + required: false + type: select + values: + - label: "Standard" + value: "standard" + - label: "HD" + value: "hd" + - default: "" + edit: true + envKey: AZURE_OPENAI_DALLE_API_BASE + labelEn: Azure OpenAI Dall-E API Base + labelZh: Azure OpenAI Dall-E API 基础地址 + required: false + type: text + - default: "" + edit: true + envKey: AZURE_OPENAI_DALLE_API_KEY + labelEn: Azure OpenAI Dall-E API Key + labelZh: Azure OpenAI Dall-E API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: AZURE_OPENAI_DALLE_DEPLOYMENT_ID + labelEn: Azure OpenAI Dall-E Deployment ID + labelZh: Azure OpenAI Dall-E 部署 ID + required: false + type: text + - default: "true" + edit: true + envKey: IMAGE_PROXY + labelEn: Image Proxy + labelZh: 图片代理 + required: false + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: '["画", "看", "找"]' + edit: true + envKey: IMAGE_CREATE_PREFIX + labelEn: Prefix when image reply needs to be enabled + labelZh: 开启图片回复的前缀 + required: false + type: text + - default: "1" + edit: true + envKey: CONCURRENCY_IN_SESSION + labelEn: Concurrency in Session + labelZh: 会话并发数 + required: false + type: number + - default: "256x256" + edit: true + envKey: IMAGE_CREATE_SIZE + labelEn: Image Create Size + labelZh: 图片生成大小 + required: false + type: select + values: + - label: "256x256" + value: "256x256" + - label: "512x512" + value: "512x512" + - label: "1024x1024" + value: "1024x1024" + - default: "false" + edit: true + envKey: GROUP_CHAT_EXIT_GROUP + labelEn: Group Chat Exit Group + labelZh: 退出群聊 + required: false + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "3600" + edit: true + envKey: EXPIRES_IN_SECONDS + labelEn: Expires in Seconds + labelZh: 会话过期时间 + required: false + type: number + - default: "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。" + edit: true + envKey: CHARACTER_DESC + labelEn: Character Description + labelZh: 人格描述 + required: false + type: text + - default: "1000" + edit: true + envKey: CONVERSATION_MAX_TOKENS + labelEn: Conversation Max Tokens + labelZh: 会话最大字符数 + required: false + type: number + - default: "20" + edit: true + envKey: RATE_LIMIT_CHATGPT + labelEn: Rate Limit ChatGPT + labelZh: ChatGPT 调用频率限制 + required: false + type: number + - default: "50" + edit: true + envKey: RATE_LIMIT_DALLE + labelEn: Rate Limit DALL-E + labelZh: DALL-E 调用频率限制 + required: false + type: number + - default: "0.9" + edit: true + envKey: TEMPERATURE + labelEn: Temperature + labelZh: 温度 + required: false + type: text + - default: "0.9" + edit: true + envKey: TOP_P + labelEn: Top P + labelZh: Top P + required: false + type: text + - default: "0.0" + edit: true + envKey: FREQUENCY_PENALTY + labelEn: Frequency Penalty + labelZh: 频率惩罚 + required: false + type: text + - default: "0.0" + edit: true + envKey: PRESENCE_PENALTY + labelEn: Presence Penalty + labelZh: 存在惩罚 + required: false + type: text + - default: "30" + edit: true + envKey: REQUEST_TIMEOUT + labelEn: Request Timeout + labelZh: 请求超时时间 + required: false + type: number + - default: "30" + edit: true + envKey: TIMEOUT + labelEn: Timeout + labelZh: 超时时间 + required: false + type: number + - default: "eb-instant" + edit: true + envKey: BAIDU_WENXIN_MODEL + labelEn: Baidu Wenxin Model + labelZh: 百度文心模型 + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_WENXIN_API_KEY + labelEn: Baidu Wenxin API Key + labelZh: 百度文心 API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_WENXIN_SECRET_KEY + labelEn: Baidu Wenxin Secret Key + labelZh: 百度文心 Secret 密钥 + required: false + type: text + - default: "" + edit: true + envKey: XUNFEI_APP_ID + labelEn: Xunfei App ID + labelZh: 讯飞 App ID + required: false + type: text + - default: "" + edit: true + envKey: XUNFEI_API_KEY + labelEn: Xunfei API Key + labelZh: 讯飞 API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: XUNFEI_API_SECRET + labelEn: Xunfei API Secret + labelZh: 讯飞 API Secret + required: false + type: text + - default: "" + edit: true + envKey: CLAUDE_API_COOKIE + labelEn: Claude API Cookie + labelZh: Claude API Cookie + required: false + type: text + - default: "" + edit: true + envKey: CLAUDE_UUID + labelEn: Claude UUID + labelZh: Claude UUID + required: false + type: text + - default: "" + edit: true + envKey: CLAUDE_API_KEY + labelEn: Claude API Key + labelZh: Claude API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: QWEN_ACCESS_KEY_ID + labelEn: Qwen Access Key ID + labelZh: 通义千问 Access Key ID + required: false + type: text + - default: "" + edit: true + envKey: QWEN_ACCESS_KEY_SECRET + labelEn: Qwen Access Key Secret + labelZh: 通义千问 Access Key Secret + required: false + type: text + - default: "" + edit: true + envKey: QWEN_AGENT_KEY + labelEn: Qwen Agent Key + labelZh: 通义千问 Agent Key + required: false + type: text + - default: "" + edit: true + envKey: QWEN_APP_ID + labelEn: Qwen App ID + labelZh: 通义千问 App ID + required: false + type: text + - default: "" + edit: true + envKey: QWEN_NODE_ID + labelEn: Qwen Node ID + labelZh: 通义千问 Node ID + required: false + type: text + - default: "" + edit: true + envKey: DASHSCOPE_API_KEY + labelEn: Dashscope API Key + labelZh: Dashscope API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: GEMINI_API_KEY + labelEn: Gemini API Key + labelZh: Gemini API 密钥 + required: false + type: text + - default: "true" + edit: true + envKey: WEWORK_SMART + labelEn: WeWork Smart + labelZh: WeWork 智能 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "true" + edit: true + envKey: SPEECH_RECOGNITION + labelEn: Speech Recognition + labelZh: 语音识别 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "false" + edit: true + envKey: GROUP_SPEECH_RECOGNITION + labelEn: Group Speech Recognition + labelZh: 群聊语音识别 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "false" + edit: true + envKey: VOICE_REPLY_VOICE + labelEn: Speech Response Speech + labelZh: 语音回复语音 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "false" + edit: true + envKey: ALWAYS_REPLY_VOICE + labelEn: Always Reply Voice + labelZh: 总是语音回复 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "openai" + edit: true + envKey: VOICE_TO_TEXT + labelEn: Speech Recognition Engines + labelZh: 语音识别引擎 + required: false + type: text + - default: "false" + edit: true + envKey: TEXT_TO_VOICE + labelEn: Speech Synthesis Engines + labelZh: 语音合成引擎 + required: false + type: text + - default: "tts-1" + edit: true + envKey: TEXT_TO_VOICE_MODEL + labelEn: Text to Voice Model + labelZh: 文字转语音模型 + required: false + type: text + - default: "alloy" + edit: true + envKey: TTS_VOICE_ID + labelEn: TTS Voice ID + labelZh: TTS 语音 ID + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_APP_ID + labelEn: Baidu App ID + labelZh: 百度 App ID + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_API_KEY + labelEn: Baidu API Key + labelZh: 百度 API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_SECRET_KEY + labelEn: Baidu Secret Key + labelZh: 百度 Secret 密钥 + required: false + type: text + - default: "1537" + edit: true + envKey: BAIDU_DEV_PID + labelZh: Baidu Dev PID + required: false + type: text + - default: "" + edit: true + envKey: AZURE_VOICE_API_KEY + labelEn: Azure Voice API Key + labelZh: Azure 语音 API 密钥 + required: false + type: text + - default: "japaneast" + edit: true + envKey: AZURE_VOICE_REGION + labelEn: Azure Voice Region + labelZh: Azure 语音区域 + required: false + type: text + - default: "" + edit: true + envKey: XI_API_KEY + labelEn: Elevenlabs API Key + labelZh: Elevenlabs API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: XI_VOICE_ID + labelEn: Elevenlabs Voice ID + labelZh: Elevenlabs 语音 ID + required: false + type: text + - default: "false" + edit: true + envKey: CHAT_TIME_MODULE + labelEn: Chat Time Module + labelZh: 服务时间限制 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "00:00" + edit: true + envKey: CHAT_START_TIME + labelEn: Chat Start Time + labelZh: 服务开始时间 + required: false + type: text + - default: "24:00" + edit: true + envKey: CHAT_STOP_TIME + labelEn: Chat Stop Time + labelZh: 服务结束时间 + required: false + type: text + - default: "baidu" + edit: true + envKey: TRANSLATE + labelEn: Translate + labelZh: 翻译引擎 + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_TRANSLATE_APP_ID + labelEn: Baidu Translate App ID + labelZh: 百度翻译 App ID + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_TRANSLATE_APP_KEY + labelEn: Baidu Translate App Key + labelZh: 百度翻译 App 密钥 + required: false + type: text + - default: "false" + edit: true + envKey: HOT_RELOAD + labelEn: Hot Reload + labelZh: 热重载 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "" + edit: true + envKey: WECHATY_PUPPET_SERVICE_TOKEN + labelEn: Wechaty Puppet Service Token + labelZh: Wechaty 机器人服务 Token + required: false + type: text + - default: "" + edit: true + envKey: WECHATMP_TOKEN + labelEn: WechatMP Token + labelZh: 微信公众平台 Token + required: false + type: text + - default: "8080" + edit: true + envKey: WECHATMP_PORT + labelEn: WechatMP Port + labelZh: 微信公众平台端口 + required: false + type: number + - default: "" + edit: true + envKey: WECHATMP_APP_ID + labelEn: WechatMP App ID + labelZh: 微信公众平台 App ID + required: false + type: text + - default: "" + edit: true + envKey: WECHATMP_APP_SECRET + labelEn: WechatMP App Secret + labelZh: 微信公众平台 App Secret + required: false + type: text + - default: "" + edit: true + envKey: WECHATMP_AES_KEY + labelEn: WechatMP AES Key + labelZh: 微信公众平台 AES Key + required: false + type: text + - default: "" + edit: true + envKey: WECHATCOM_CORP_ID + labelEn: Wechatcom Corp ID + labelZh: 企业微信公司 Corp ID + required: false + type: text + - default: "" + edit: true + envKey: WECHATCOMAPP_TOKEN + labelEn: WechatcomApp Token + labelZh: 企业微信 App Token + required: false + type: text + - default: "9898" + edit: true + envKey: WECHATCOMAPP_PORT + labelEn: WechatcomApp Port + labelZh: 企业微信 App 端口 + required: false + type: number + - default: "" + edit: true + envKey: WECHATCOMAPP_SECRET + labelEn: WechatcomApp Secret + labelZh: 企业微信 App Secret + required: false + type: text + - default: "" + edit: true + envKey: WECHATCOMAPP_AGENT_ID + labelEn: WechatcomApp Agent ID + labelZh: 企业微信 App Agent ID + required: false + type: text + - default: "" + edit: true + envKey: WECHATCOMAPP_AES_KEY + labelEn: WechatcomApp AES Key + labelZh: 企业微信 App AES Key + required: false + type: text + - default: "80" + edit: true + envKey: FEISHU_PORT + labelEn: Feishu Port + labelZh: 飞书 Bot 监听端口 + required: false + type: number + - default: "" + edit: true + envKey: FEISHU_APP_ID + labelEn: Feishu App ID + labelZh: 飞书机器人应用 App ID + required: false + type: text + - default: "" + edit: true + envKey: FEISHU_APP_SECRET + labelEn: Feishu App Secret + labelZh: 飞书机器人 App Secret + required: false + type: text + - default: "" + edit: true + envKey: FEISHU_TOKEN + labelEn: Feishu Token + labelZh: 飞书 Verification Token + required: false + type: text + - default: "" + edit: true + envKey: FEISHU_BOT_NAME + labelEn: Feishu Bot Name + labelZh: 飞书机器人名称 + required: false + type: text + - default: "" + edit: true + envKey: DINGTALK_CLIENT_ID + labelEn: Dingtalk Client ID + labelZh: 钉钉机器人 Client ID + required: false + type: text + - default: "" + edit: true + envKey: DINGTALK_CLIENT_SECRET + labelEn: Dingtalk Client Secret + labelZh: 钉钉机器人 Client Secret + required: false + type: text + - default: "false" + edit: true + envKey: DINGTALK_CARD_ENABLED + labelEn: Dingtalk Card Enabled + labelZh: 钉钉卡片开启 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: ["#清除记忆"] + edit: true + envKey: CLEAR_MEMORY_COMMANDS + labelEn: Clear Memory Commands + labelZh: 清除记忆指令 + required: false + type: text + - default: "" + edit: true + envKey: CHANNEL_TYPE + labelEn: Channel Type + labelZh: 通道类型 + required: false + type: text + - default: "" + edit: true + envKey: SUBSCRIBE_MSG + labelEn: Subscribe Message + labelZh: 订阅消息 + required: false + type: text + - default: "false" + edit: true + envKey: DEBUG + labelEn: Debug + labelZh: 调试模式 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "" + edit: true + envKey: APPDATA_DIR + labelEn: Appdata Directory + labelZh: 数据目录 + required: false + type: text + - default: "$" + edit: true + envKey: PLUGIN_TRIGGER_PREFIX + labelEn: Plugin Trigger Prefix + labelZh: 插件触发前缀 + required: false + type: text + - default: "false" + edit: true + envKey: USE_GLOBAL_PLUGIN_CONFIG + labelEn: Use Global Plugin Config + labelZh: 使用全局插件配置 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "3" + edit: true + envKey: MAX_MEDIA_SEND_COUNT + labelEn: Max Media Send Count + labelZh: 单次最大发送媒体资源数量 + required: false + type: number + - default: "1" + edit: true + envKey: MEDIA_SEND_INTERVAL + labelEn: Media Send Interval + labelZh: 发送图片事件间隔(秒) + required: false + type: number + - default: "" + edit: true + envKey: ZHIPU_AI_API_KEY + labelEn: Zhipu AI API Key + labelZh: 智谱 AI API 密钥 + required: false + type: text + - default: "https://open.bigmodel.cn/api/paas/v4" + edit: true + envKey: ZHIPU_AI_API_BASE + labelEn: Zhipu AI API Base + labelZh: 智谱 AI API 地址 + required: false + type: text + - default: "" + edit: true + envKey: MOONSHOT_API_KEY + labelEn: Moonshot API Key + labelZh: Moonshot API 密钥 + required: false + type: text + - default: "https://api.moonshot.cn/v1/chat/completions" + edit: true + envKey: MOONSHOT_BASE_URL + labelEn: Moonshot Base URL + labelZh: Moonshot API 地址 + required: false + type: text + - default: "false" + edit: true + envKey: USE_LINKAI + labelEn: Use LinkAI + labelZh: 使用 LinkAI + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "" + edit: true + envKey: LINKAI_API_KEY + labelEn: LinkAI API Key + labelZh: LinkAI API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: LINKAI_APP_CODE + labelEn: LinkAI App Code + labelZh: LinkAI App Code + required: false + type: text + - default: "https://api.link-ai.tech" + edit: true + envKey: LINKAI_API_BASE + labelEn: LinkAI API Base + labelZh: LinkAI API 地址 + required: false + type: text diff --git a/apps/chatgpt-on-wechat/1.6.6/docker-compose.yml b/apps/chatgpt-on-wechat/1.6.6/docker-compose.yml new file mode 100644 index 00000000..e39f0d27 --- /dev/null +++ b/apps/chatgpt-on-wechat/1.6.6/docker-compose.yml @@ -0,0 +1,136 @@ +services: + chatgpt-on-wechat: + image: "zhayujie/chatgpt-on-wechat:1.6.6" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + security_opt: + - seccomp:unconfined + environment: + - OPEN_AI_API_KEY=${OPEN_AI_API_KEY} + - OPEN_AI_API_BASE=${OPEN_AI_API_BASE} + - MODEL=${MODEL} + - USE_AZURE_CHATGPT=${USE_AZURE_CHATGPT} + - AZURE_DEPLOYMENT_ID=${AZURE_DEPLOYMENT_ID} + - AZURE_API_VERSION=${AZURE_API_VERSION} + - PROXY=${PROXY} + - SINGLE_CHAT_PREFIX=${SINGLE_CHAT_PREFIX} + - SINGLE_CHAT_REPLY_PREFIX=${SINGLE_CHAT_REPLY_PREFIX} + - SINGLE_CHAT_REPLY_SUFFIX=${SINGLE_CHAT_REPLY_SUFFIX} + - GROUP_CHAT_PREFIX=${GROUP_CHAT_PREFIX} + - GROUP_CHAT_REPLY_PREFIX=${GROUP_CHAT_REPLY_PREFIX} + - GROUP_CHAT_REPLY_SUFFIX=${GROUP_CHAT_REPLY_SUFFIX} + - GROUP_CHAT_KEYWORD=${GROUP_CHAT_KEYWORD} + - GROUP_AT_OFF=${GROUP_AT_OFF} + - GROUP_NAME_WHITE_LIST=${GROUP_NAME_WHITE_LIST} + - GROUP_NAME_KEYWORD_WHITE_LIST=${GROUP_NAME_KEYWORD_WHITE_LIST} + - GROUP_CHAT_IN_ONE_SESSION=${GROUP_CHAT_IN_ONE_SESSION} + - NICK_NAME_BLACK_LIST=${NICK_NAME_BLACK_LIST} + - GROUP_WELCOME_MSG=${GROUP_WELCOME_MSG} + - TRIGGER_BY_SELF=${TRIGGER_BY_SELF} + - TEXT_TO_IMAGE=${TEXT_TO_IMAGE} + - DALLE3_IMAGE_STYLE=${DALLE3_IMAGE_STYLE} + - DALLE3_IMAGE_QUALITY=${DALLE3_IMAGE_QUALITY} + - AZURE_OPENAI_DALLE_API_BASE=${AZURE_OPENAI_DALLE_API_BASE} + - AZURE_OPENAI_DALLE_API_KEY=${AZURE_OPENAI_DALLE_API_KEY} + - AZURE_OPENAI_DALLE_DEPLOYMENT_ID=${AZURE_OPENAI_DALLE_DEPLOYMENT_ID} + - IMAGE_PROXY=${IMAGE_PROXY} + - IMAGE_CREATE_PREFIX=${IMAGE_CREATE_PREFIX} + - CONCURRENCY_IN_SESSION=${CONCURRENCY_IN_SESSION} + - IMAGE_CREATE_SIZE=${IMAGE_CREATE_SIZE} + - GROUP_CHAT_EXIT_GROUP=${GROUP_CHAT_EXIT_GROUP} + - EXPIRES_IN_SECONDS=${EXPIRES_IN_SECONDS} + - CHARACTER_DESC=${CHARACTER_DESC} + - CONVERSATION_MAX_TOKENS=${CONVERSATION_MAX_TOKENS} + - RATE_LIMIT_CHATGPT=${RATE_LIMIT_CHATGPT} + - RATE_LIMIT_DALLE=${RATE_LIMIT_DALLE} + - TEMPERATURE=${TEMPERATURE} + - TOP_P=${TOP_P} + - FREQUENCY_PENALTY=${FREQUENCY_PENALTY} + - PRESENCE_PENALTY=${PRESENCE_PENALTY} + - REQUEST_TIMEOUT=${REQUEST_TIMEOUT} + - TIMEOUT=${TIMEOUT} + - BAIDU_WENXIN_MODEL=${BAIDU_WENXIN_MODEL} + - BAIDU_WENXIN_API_KEY=${BAIDU_WENXIN_API_KEY} + - BAIDU_WENXIN_SECRET_KEY=${BAIDU_WENXIN_SECRET_KEY} + - XUNFEI_APP_ID=${XUNFEI_APP_ID} + - XUNFEI_API_KEY=${XUNFEI_API_KEY} + - XUNFEI_API_SECRET=${XUNFEI_API_SECRET} + - CLAUDE_API_COOKIE=${CLAUDE_API_COOKIE} + - CLAUDE_UUID=${CLAUDE_UUID} + - CLAUDE_API_KEY=${CLAUDE_API_KEY} + - QWEN_ACCESS_KEY_ID=${QWEN_ACCESS_KEY_ID} + - QWEN_ACCESS_KEY_SECRET=${QWEN_ACCESS_KEY_SECRET} + - QWEN_AGENT_KEY=${QWEN_AGENT_KEY} + - QWEN_APP_ID=${QWEN_APP_ID} + - QWEN_NODE_ID=${QWEN_NODE_ID} + - DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY} + - GEMINI_API_KEY=${GEMINI_API_KEY} + - WEWORK_SMART=${WEWORK_SMART} + - SPEECH_RECOGNITION=${SPEECH_RECOGNITION} + - GROUP_SPEECH_RECOGNITION=${GROUP_SPEECH_RECOGNITION} + - VOICE_REPLY_VOICE=${VOICE_REPLY_VOICE} + - ALWAYS_REPLY_VOICE=${ALWAYS_REPLY_VOICE} + - VOICE_TO_TEXT=${VOICE_TO_TEXT} + - TEXT_TO_VOICE=${TEXT_TO_VOICE} + - TEXT_TO_VOICE_MODEL=${TEXT_TO_VOICE_MODEL} + - TTS_VOICE_ID=${TTS_VOICE_ID} + - BAIDU_APP_ID=${BAIDU_APP_ID} + - BAIDU_API_KEY=${BAIDU_API_KEY} + - BAIDU_SECRET_KEY=${BAIDU_SECRET_KEY} + - BAIDU_DEV_PID=${BAIDU_DEV_PID} + - AZURE_VOICE_API_KEY=${AZURE_VOICE_API_KEY} + - AZURE_VOICE_REGION=${AZURE_VOICE_REGION} + - XI_API_KEY=${XI_API_KEY} + - XI_VOICE_ID=${XI_VOICE_ID} + - CHAT_TIME_MODULE=${CHAT_TIME_MODULE} + - CHAT_START_TIME=${CHAT_START_TIME} + - CHAT_STOP_TIME=${CHAT_STOP_TIME} + - TRANSLATE=${TRANSLATE} + - BAIDU_TRANSLATE_APP_ID=${BAIDU_TRANSLATE_APP_ID} + - BAIDU_TRANSLATE_APP_KEY=${BAIDU_TRANSLATE_APP_KEY} + - HOT_RELOAD=${HOT_RELOAD} + - WECHATY_PUPPET_SERVICE_TOKEN=${WECHATY_PUPPET_SERVICE_TOKEN} + - WECHATMP_TOKEN=${WECHATMP_TOKEN} + - WECHATMP_PORT=${WECHATMP_PORT} + - WECHATMP_APP_ID=${WECHATMP_APP_ID} + - WECHATMP_APP_SECRET=${WECHATMP_APP_SECRET} + - WECHATMP_AES_KEY=${WECHATMP_AES_KEY} + - WECHATCOM_CORP_ID=${WECHATCOM_CORP_ID} + - WECHATCOMAPP_TOKEN=${WECHATCOMAPP_TOKEN} + - WECHATCOMAPP_PORT=${WECHATCOMAPP_PORT} + - WECHATCOMAPP_SECRET=${WECHATCOMAPP_SECRET} + - WECHATCOMAPP_AGENT_ID=${WECHATCOMAPP_AGENT_ID} + - WECHATCOMAPP_AES_KEY=${WECHATCOMAPP_AES_KEY} + - FEISHU_PORT=${FEISHU_PORT} + - FEISHU_APP_ID=${FEISHU_APP_ID} + - FEISHU_APP_SECRET=${FEISHU_APP_SECRET} + - FEISHU_TOKEN=${FEISHU_TOKEN} + - FEISHU_BOT_NAME=${FEISHU_BOT_NAME} + - DINGTALK_CLIENT_ID=${DINGTALK_CLIENT_ID} + - DINGTALK_CLIENT_SECRET=${DINGTALK_CLIENT_SECRET} + - DINGTALK_CARD_ENABLED=${DINGTALK_CARD_ENABLED} + - CLEAR_MEMORY_COMMANDS=${CLEAR_MEMORY_COMMANDS} + - CHANNEL_TYPE=${CHANNEL_TYPE} + - SUBSCRIBE_MSG=${SUBSCRIBE_MSG} + - DEBUG=${DEBUG} + - APPDATA_DIR=${APPDATA_DIR} + - PLUGIN_TRIGGER_PREFIX=${PLUGIN_TRIGGER_PREFIX} + - USE_GLOBAL_PLUGIN_CONFIG=${USE_GLOBAL_PLUGIN_CONFIG} + - MAX_MEDIA_SEND_COUNT=${MAX_MEDIA_SEND_COUNT} + - MEDIA_SEND_INTERVAL=${MEDIA_SEND_INTERVAL} + - ZHIPU_AI_API_KEY=${ZHIPU_AI_API_KEY} + - ZHIPU_AI_API_BASE=${ZHIPU_AI_API_BASE} + - MOONSHOT_API_KEY=${MOONSHOT_API_KEY} + - MOONSHOT_BASE_URL=${MOONSHOT_BASE_URL} + - USE_LINKAI=${USE_LINKAI} + - LINKAI_API_KEY=${LINKAI_API_KEY} + - LINKAI_APP_CODE=${LINKAI_APP_CODE} + - LINKAI_API_BASE=${LINKAI_API_BASE} + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/chatgpt-on-wechat/README.md b/apps/chatgpt-on-wechat/README.md new file mode 100644 index 00000000..07d75bae --- /dev/null +++ b/apps/chatgpt-on-wechat/README.md @@ -0,0 +1,31 @@ +# 简介 + +chatgpt-on-wechat(简称CoW)项目是基于大模型的智能对话机器人,支持微信公众号、企业微信应用、飞书、钉钉接入,可选择GPT3.5/GPT4.0/Claude/Gemini/LinkAI/ChatGLM/KIMI/文心一言/讯飞星火/通义千问/LinkAI,能处理文本、语音和图片,通过插件访问操作系统和互联网等外部资源,支持基于自有知识库定制企业AI应用。 + + +## 使用说明 + +参数相关设置与获取注意查看原始文档: + +- https://github.com/zhayujie/chatgpt-on-wechat/blob/master/config.py + +- https://docs.link-ai.tech/cow + + +**由于`1Panel`自动生成的`.env`文件里的引号为双引号,直接部署会出现异常,** + +**需要手动修改一下,将产生异常的行,最外面的双引号修改为单引号,重建应用即可。** + +如 + +``` +GROUP_CHAT_IN_ONE_SESSION='["ChatGPT测试群"]' +GROUP_NAME_WHITE_LIST='["ChatGPT测试群", "ChatGPT测试群2"]' +IMAGE_CREATE_PREFIX='["画", "看", "找"]' +SINGLE_CHAT_PREFIX='["bot", "@bot"]' +``` + +文件路径,按需修改 +``` +/opt/1panel/apps/local/chatgpt-on-wechat/chatgpt-on-wechat/.env +``` \ No newline at end of file diff --git a/apps/chatgpt-on-wechat/data.yml b/apps/chatgpt-on-wechat/data.yml new file mode 100644 index 00000000..2f467074 --- /dev/null +++ b/apps/chatgpt-on-wechat/data.yml @@ -0,0 +1,19 @@ +name: ChatGPT on WeChat +tags: + - AI / 大模型 +title: 基于大模型的智能对话机器人 +description: 基于大模型的智能对话机器人 +additionalProperties: + key: chatgpt-on-wechat + name: ChatGPT on WeChat + tags: + - AI + shortDescZh: 基于大模型的智能对话机器人 + shortDescEn: Intelligent Conversational Bots Based on Large Models + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://github.com/zhayujie/chatgpt-on-wechat + github: https://github.com/zhayujie/chatgpt-on-wechat + document: https://docs.link-ai.tech/cow diff --git a/apps/chatgpt-on-wechat/latest/.env.sample b/apps/chatgpt-on-wechat/latest/.env.sample new file mode 100644 index 00000000..c5cfde7b --- /dev/null +++ b/apps/chatgpt-on-wechat/latest/.env.sample @@ -0,0 +1,121 @@ +ALWAYS_REPLY_VOICE="false" +APPDATA_DIR="" +AZURE_API_VERSION="" +AZURE_DEPLOYMENT_ID="" +AZURE_OPENAI_DALLE_API_BASE="" +AZURE_OPENAI_DALLE_API_KEY="" +AZURE_OPENAI_DALLE_DEPLOYMENT_ID="" +AZURE_VOICE_API_KEY="" +AZURE_VOICE_REGION="japaneast" +BAIDU_API_KEY="" +BAIDU_APP_ID="" +BAIDU_DEV_PID=1537 +BAIDU_SECRET_KEY="" +BAIDU_TRANSLATE_APP_ID="" +BAIDU_TRANSLATE_APP_KEY="" +BAIDU_WENXIN_API_KEY="" +BAIDU_WENXIN_MODEL="eb-instant" +BAIDU_WENXIN_SECRET_KEY="" +CHANNEL_TYPE="" +CHARACTER_DESC="你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。" +CHAT_START_TIME="00:00" +CHAT_STOP_TIME="24:00" +CHAT_TIME_MODULE="false" +CLAUDE_API_COOKIE="" +CLAUDE_API_KEY="" +CLAUDE_UUID="" +CLEAR_MEMORY_COMMANDS="#清除记忆" +CONCURRENCY_IN_SESSION=1 +CONTAINER_NAME="chatgpt-on-wechat" +CONVERSATION_MAX_TOKENS=1000 +DALLE3_IMAGE_QUALITY="hd" +DALLE3_IMAGE_STYLE="vivid" +DASHSCOPE_API_KEY="" +DEBUG="false" +DINGTALK_CARD_ENABLED="false" +DINGTALK_CLIENT_ID="" +DINGTALK_CLIENT_SECRET="" +EXPIRES_IN_SECONDS=3600 +FEISHU_APP_ID="" +FEISHU_APP_SECRET="" +FEISHU_BOT_NAME="" +FEISHU_PORT=80 +FEISHU_TOKEN="" +FREQUENCY_PENALTY="0.0" +GEMINI_API_KEY="" +GROUP_AT_OFF="false" +GROUP_CHAT_EXIT_GROUP="false" +GROUP_CHAT_IN_ONE_SESSION='["ChatGPT测试群"]' +GROUP_CHAT_KEYWORD="[]" +GROUP_CHAT_PREFIX='["@bot"]' +GROUP_CHAT_REPLY_PREFIX="" +GROUP_CHAT_REPLY_SUFFIX="" +GROUP_NAME_KEYWORD_WHITE_LIST="[]" +GROUP_NAME_WHITE_LIST='["ChatGPT测试群", "ChatGPT测试群2"]' +GROUP_SPEECH_RECOGNITION="false" +GROUP_WELCOME_MSG="" +HOT_RELOAD="false" +IMAGE_CREATE_PREFIX='["画", "看", "找"]' +IMAGE_CREATE_SIZE="256x256" +IMAGE_PROXY="true" +LINKAI_API_BASE="https://api.link-ai.tech" +LINKAI_API_KEY="" +LINKAI_APP_CODE="" +MAX_MEDIA_SEND_COUNT=3 +MEDIA_SEND_INTERVAL=1 +MODEL="gpt-3.5-turbo" +MOONSHOT_API_KEY="" +MOONSHOT_BASE_URL="https://api.moonshot.cn/v1/chat/completions" +NICK_NAME_BLACK_LIST="[]" +OPEN_AI_API_BASE="https://api.openai.com/v1" +OPEN_AI_API_KEY="" +PLUGIN_TRIGGER_PREFIX="$" +PRESENCE_PENALTY="0.0" +PROXY="" +QWEN_ACCESS_KEY_ID="" +QWEN_ACCESS_KEY_SECRET="" +QWEN_AGENT_KEY="" +QWEN_APP_ID="" +QWEN_NODE_ID="" +RATE_LIMIT_CHATGPT=20 +RATE_LIMIT_DALLE=50 +REQUEST_TIMEOUT=30 +SINGLE_CHAT_PREFIX='["bot", "@bot"]' +SINGLE_CHAT_REPLY_PREFIX="[bot] " +SINGLE_CHAT_REPLY_SUFFIX="" +SPEECH_RECOGNITION="true" +SUBSCRIBE_MSG="" +TEMPERATURE="0.9" +TEXT_TO_IMAGE="dall-e-2" +TEXT_TO_VOICE="false" +TEXT_TO_VOICE_MODEL="tts-1" +TIMEOUT=30 +TOP_P="0.9" +TRANSLATE="baidu" +TRIGGER_BY_SELF="false" +TTS_VOICE_ID="alloy" +USE_AZURE_CHATGPT="false" +USE_GLOBAL_PLUGIN_CONFIG="false" +USE_LINKAI="false" +VOICE_REPLY_VOICE="false" +VOICE_TO_TEXT="openai" +WECHATCOMAPP_AES_KEY="" +WECHATCOMAPP_AGENT_ID="" +WECHATCOMAPP_PORT=9898 +WECHATCOMAPP_SECRET="" +WECHATCOMAPP_TOKEN="" +WECHATCOM_CORP_ID="" +WECHATMP_AES_KEY="" +WECHATMP_APP_ID="" +WECHATMP_APP_SECRET="" +WECHATMP_PORT=8080 +WECHATMP_TOKEN="" +WECHATY_PUPPET_SERVICE_TOKEN="" +WEWORK_SMART="true" +XI_API_KEY="" +XI_VOICE_ID="" +XUNFEI_API_KEY="" +XUNFEI_API_SECRET="" +XUNFEI_APP_ID="" +ZHIPU_AI_API_BASE="https://open.bigmodel.cn/api/paas/v4" +ZHIPU_AI_API_KEY="" diff --git a/apps/chatgpt-on-wechat/latest/data.yml b/apps/chatgpt-on-wechat/latest/data.yml new file mode 100644 index 00000000..78cbb467 --- /dev/null +++ b/apps/chatgpt-on-wechat/latest/data.yml @@ -0,0 +1,943 @@ +additionalProperties: + formFields: + - default: "" + edit: true + envKey: OPEN_AI_API_KEY + labelEn: OpenAI API Key + labelZh: OpenAI API 密钥 + required: false + type: text + - default: "https://api.openai.com/v1" + edit: true + envKey: OPEN_AI_API_BASE + labelEn: OpenAI API Base + labelZh: OpenAI API 基础地址 + required: false + type: text + - default: "gpt-3.5-turbo" + edit: true + envKey: MODEL + labelEn: Model + labelZh: 模型 + required: false + type: text + - default: "false" + edit: true + envKey: USE_AZURE_CHATGPT + labelEn: Use Azure ChatGPT + labelZh: 使用 Azure ChatGPT + required: false + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "" + edit: true + envKey: AZURE_DEPLOYMENT_ID + labelEn: Azure Deployment ID + labelZh: Azure 部署 ID + required: false + type: text + - default: "" + edit: true + envKey: AZURE_API_VERSION + labelEn: Azure API Version + labelZh: Azure API 版本 + required: false + type: text + - default: "" + edit: true + envKey: PROXY + labelEn: Proxy + labelZh: 代理 + required: false + type: text + - default: '["bot", "@bot"]' + edit: true + envKey: SINGLE_CHAT_PREFIX + labelEn: Single Chat Prefix + labelZh: 私聊前缀 + required: true + type: text + - default: "[bot] " + edit: true + envKey: SINGLE_CHAT_REPLY_PREFIX + labelEn: Single Chat Reply Prefix + labelZh: 私聊回复前缀 + required: true + type: text + - default: "" + edit: true + envKey: SINGLE_CHAT_REPLY_SUFFIX + labelEn: Single Chat Reply Suffix + labelZh: 私聊回复后缀 + required: false + type: text + - default: '["@bot"]' + edit: true + envKey: GROUP_CHAT_PREFIX + labelEn: Group Chat Prefix + labelZh: 群聊前缀 + required: true + type: text + - default: "" + edit: true + envKey: GROUP_CHAT_REPLY_PREFIX + labelEn: Group Chat Reply Prefix + labelZh: 群聊回复前缀 + required: false + type: text + - default: "" + edit: true + envKey: GROUP_CHAT_REPLY_SUFFIX + labelEn: Group Chat Reply Suffix + labelZh: 群聊回复后缀 + required: false + type: text + - default: '[]' + edit: true + envKey: GROUP_CHAT_KEYWORD + labelEn: Keywords for triggering replies in group chats + labelZh: 群聊触发回复的关键词 + required: false + type: text + - default: "false" + edit: true + envKey: GROUP_AT_OFF + labelEn: Group At Off + labelZh: 关闭群聊@bot触发 + required: false + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: '["ChatGPT测试群", "ChatGPT测试群2"]' + edit: true + envKey: GROUP_NAME_WHITE_LIST + labelEn: Group Name White List + labelZh: 群名称白名单 + required: false + type: text + - default: '[]' + edit: true + envKey: GROUP_NAME_KEYWORD_WHITE_LIST + labelEn: Group Name Keyword White List + labelZh: 群名称关键词白名单 + required: false + type: text + - default: '["ChatGPT测试群"]' + edit: true + envKey: GROUP_CHAT_IN_ONE_SESSION + labelEn: Group names that support session context sharing + labelZh: 支持会话上下文共享的群名称 + required: false + type: text + - default: '[]' + edit: true + envKey: NICK_NAME_BLACK_LIST + labelEn: Nickname Blacklist + labelZh: 昵称黑名单 + required: false + type: text + - default: "" + edit: true + envKey: GROUP_WELCOME_MSG + labelEn: Group Welcome Message + labelZh: 群欢迎信息 + required: false + type: text + - default: "false" + edit: true + envKey: TRIGGER_BY_SELF + labelEn: Trigger by Self + labelZh: 是否允许机器人触发 + required: false + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "dall-e-2" + edit: true + envKey: TEXT_TO_IMAGE + labelEn: Text to Image Model + labelZh: 图片生成模型 + required: false + type: select + values: + - label: "dall-e-2" + value: "dall-e-2" + - label: "dall-e-3" + value: "dall-e-3" + - default: "vivid" + edit: true + envKey: DALLE3_IMAGE_STYLE + labelEn: Dall-E 3 Image Style + labelZh: Dall-E 3 图片风格 + required: false + type: select + values: + - label: "Vivid" + value: "vivid" + - label: "Natural" + value: "natural" + - default: "hd" + edit: true + envKey: DALLE3_IMAGE_QUALITY + labelEn: Dall-E 3 Image Quality + labelZh: Dall-E 3 图片质量 + required: false + type: select + values: + - label: "Standard" + value: "standard" + - label: "HD" + value: "hd" + - default: "" + edit: true + envKey: AZURE_OPENAI_DALLE_API_BASE + labelEn: Azure OpenAI Dall-E API Base + labelZh: Azure OpenAI Dall-E API 基础地址 + required: false + type: text + - default: "" + edit: true + envKey: AZURE_OPENAI_DALLE_API_KEY + labelEn: Azure OpenAI Dall-E API Key + labelZh: Azure OpenAI Dall-E API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: AZURE_OPENAI_DALLE_DEPLOYMENT_ID + labelEn: Azure OpenAI Dall-E Deployment ID + labelZh: Azure OpenAI Dall-E 部署 ID + required: false + type: text + - default: "true" + edit: true + envKey: IMAGE_PROXY + labelEn: Image Proxy + labelZh: 图片代理 + required: false + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: '["画", "看", "找"]' + edit: true + envKey: IMAGE_CREATE_PREFIX + labelEn: Prefix when image reply needs to be enabled + labelZh: 开启图片回复的前缀 + required: false + type: text + - default: "1" + edit: true + envKey: CONCURRENCY_IN_SESSION + labelEn: Concurrency in Session + labelZh: 会话并发数 + required: false + type: number + - default: "256x256" + edit: true + envKey: IMAGE_CREATE_SIZE + labelEn: Image Create Size + labelZh: 图片生成大小 + required: false + type: select + values: + - label: "256x256" + value: "256x256" + - label: "512x512" + value: "512x512" + - label: "1024x1024" + value: "1024x1024" + - default: "false" + edit: true + envKey: GROUP_CHAT_EXIT_GROUP + labelEn: Group Chat Exit Group + labelZh: 退出群聊 + required: false + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "3600" + edit: true + envKey: EXPIRES_IN_SECONDS + labelEn: Expires in Seconds + labelZh: 会话过期时间 + required: false + type: number + - default: "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。" + edit: true + envKey: CHARACTER_DESC + labelEn: Character Description + labelZh: 人格描述 + required: false + type: text + - default: "1000" + edit: true + envKey: CONVERSATION_MAX_TOKENS + labelEn: Conversation Max Tokens + labelZh: 会话最大字符数 + required: false + type: number + - default: "20" + edit: true + envKey: RATE_LIMIT_CHATGPT + labelEn: Rate Limit ChatGPT + labelZh: ChatGPT 调用频率限制 + required: false + type: number + - default: "50" + edit: true + envKey: RATE_LIMIT_DALLE + labelEn: Rate Limit DALL-E + labelZh: DALL-E 调用频率限制 + required: false + type: number + - default: "0.9" + edit: true + envKey: TEMPERATURE + labelEn: Temperature + labelZh: 温度 + required: false + type: text + - default: "0.9" + edit: true + envKey: TOP_P + labelEn: Top P + labelZh: Top P + required: false + type: text + - default: "0.0" + edit: true + envKey: FREQUENCY_PENALTY + labelEn: Frequency Penalty + labelZh: 频率惩罚 + required: false + type: text + - default: "0.0" + edit: true + envKey: PRESENCE_PENALTY + labelEn: Presence Penalty + labelZh: 存在惩罚 + required: false + type: text + - default: "30" + edit: true + envKey: REQUEST_TIMEOUT + labelEn: Request Timeout + labelZh: 请求超时时间 + required: false + type: number + - default: "30" + edit: true + envKey: TIMEOUT + labelEn: Timeout + labelZh: 超时时间 + required: false + type: number + - default: "eb-instant" + edit: true + envKey: BAIDU_WENXIN_MODEL + labelEn: Baidu Wenxin Model + labelZh: 百度文心模型 + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_WENXIN_API_KEY + labelEn: Baidu Wenxin API Key + labelZh: 百度文心 API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_WENXIN_SECRET_KEY + labelEn: Baidu Wenxin Secret Key + labelZh: 百度文心 Secret 密钥 + required: false + type: text + - default: "" + edit: true + envKey: XUNFEI_APP_ID + labelEn: Xunfei App ID + labelZh: 讯飞 App ID + required: false + type: text + - default: "" + edit: true + envKey: XUNFEI_API_KEY + labelEn: Xunfei API Key + labelZh: 讯飞 API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: XUNFEI_API_SECRET + labelEn: Xunfei API Secret + labelZh: 讯飞 API Secret + required: false + type: text + - default: "" + edit: true + envKey: CLAUDE_API_COOKIE + labelEn: Claude API Cookie + labelZh: Claude API Cookie + required: false + type: text + - default: "" + edit: true + envKey: CLAUDE_UUID + labelEn: Claude UUID + labelZh: Claude UUID + required: false + type: text + - default: "" + edit: true + envKey: CLAUDE_API_KEY + labelEn: Claude API Key + labelZh: Claude API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: QWEN_ACCESS_KEY_ID + labelEn: Qwen Access Key ID + labelZh: 通义千问 Access Key ID + required: false + type: text + - default: "" + edit: true + envKey: QWEN_ACCESS_KEY_SECRET + labelEn: Qwen Access Key Secret + labelZh: 通义千问 Access Key Secret + required: false + type: text + - default: "" + edit: true + envKey: QWEN_AGENT_KEY + labelEn: Qwen Agent Key + labelZh: 通义千问 Agent Key + required: false + type: text + - default: "" + edit: true + envKey: QWEN_APP_ID + labelEn: Qwen App ID + labelZh: 通义千问 App ID + required: false + type: text + - default: "" + edit: true + envKey: QWEN_NODE_ID + labelEn: Qwen Node ID + labelZh: 通义千问 Node ID + required: false + type: text + - default: "" + edit: true + envKey: DASHSCOPE_API_KEY + labelEn: Dashscope API Key + labelZh: Dashscope API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: GEMINI_API_KEY + labelEn: Gemini API Key + labelZh: Gemini API 密钥 + required: false + type: text + - default: "true" + edit: true + envKey: WEWORK_SMART + labelEn: WeWork Smart + labelZh: WeWork 智能 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "true" + edit: true + envKey: SPEECH_RECOGNITION + labelEn: Speech Recognition + labelZh: 语音识别 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "false" + edit: true + envKey: GROUP_SPEECH_RECOGNITION + labelEn: Group Speech Recognition + labelZh: 群聊语音识别 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "false" + edit: true + envKey: VOICE_REPLY_VOICE + labelEn: Speech Response Speech + labelZh: 语音回复语音 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "false" + edit: true + envKey: ALWAYS_REPLY_VOICE + labelEn: Always Reply Voice + labelZh: 总是语音回复 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "openai" + edit: true + envKey: VOICE_TO_TEXT + labelEn: Speech Recognition Engines + labelZh: 语音识别引擎 + required: false + type: text + - default: "false" + edit: true + envKey: TEXT_TO_VOICE + labelEn: Speech Synthesis Engines + labelZh: 语音合成引擎 + required: false + type: text + - default: "tts-1" + edit: true + envKey: TEXT_TO_VOICE_MODEL + labelEn: Text to Voice Model + labelZh: 文字转语音模型 + required: false + type: text + - default: "alloy" + edit: true + envKey: TTS_VOICE_ID + labelEn: TTS Voice ID + labelZh: TTS 语音 ID + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_APP_ID + labelEn: Baidu App ID + labelZh: 百度 App ID + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_API_KEY + labelEn: Baidu API Key + labelZh: 百度 API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_SECRET_KEY + labelEn: Baidu Secret Key + labelZh: 百度 Secret 密钥 + required: false + type: text + - default: "1537" + edit: true + envKey: BAIDU_DEV_PID + labelZh: Baidu Dev PID + required: false + type: text + - default: "" + edit: true + envKey: AZURE_VOICE_API_KEY + labelEn: Azure Voice API Key + labelZh: Azure 语音 API 密钥 + required: false + type: text + - default: "japaneast" + edit: true + envKey: AZURE_VOICE_REGION + labelEn: Azure Voice Region + labelZh: Azure 语音区域 + required: false + type: text + - default: "" + edit: true + envKey: XI_API_KEY + labelEn: Elevenlabs API Key + labelZh: Elevenlabs API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: XI_VOICE_ID + labelEn: Elevenlabs Voice ID + labelZh: Elevenlabs 语音 ID + required: false + type: text + - default: "false" + edit: true + envKey: CHAT_TIME_MODULE + labelEn: Chat Time Module + labelZh: 服务时间限制 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "00:00" + edit: true + envKey: CHAT_START_TIME + labelEn: Chat Start Time + labelZh: 服务开始时间 + required: false + type: text + - default: "24:00" + edit: true + envKey: CHAT_STOP_TIME + labelEn: Chat Stop Time + labelZh: 服务结束时间 + required: false + type: text + - default: "baidu" + edit: true + envKey: TRANSLATE + labelEn: Translate + labelZh: 翻译引擎 + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_TRANSLATE_APP_ID + labelEn: Baidu Translate App ID + labelZh: 百度翻译 App ID + required: false + type: text + - default: "" + edit: true + envKey: BAIDU_TRANSLATE_APP_KEY + labelEn: Baidu Translate App Key + labelZh: 百度翻译 App 密钥 + required: false + type: text + - default: "false" + edit: true + envKey: HOT_RELOAD + labelEn: Hot Reload + labelZh: 热重载 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "" + edit: true + envKey: WECHATY_PUPPET_SERVICE_TOKEN + labelEn: Wechaty Puppet Service Token + labelZh: Wechaty 机器人服务 Token + required: false + type: text + - default: "" + edit: true + envKey: WECHATMP_TOKEN + labelEn: WechatMP Token + labelZh: 微信公众平台 Token + required: false + type: text + - default: "8080" + edit: true + envKey: WECHATMP_PORT + labelEn: WechatMP Port + labelZh: 微信公众平台端口 + required: false + type: number + - default: "" + edit: true + envKey: WECHATMP_APP_ID + labelEn: WechatMP App ID + labelZh: 微信公众平台 App ID + required: false + type: text + - default: "" + edit: true + envKey: WECHATMP_APP_SECRET + labelEn: WechatMP App Secret + labelZh: 微信公众平台 App Secret + required: false + type: text + - default: "" + edit: true + envKey: WECHATMP_AES_KEY + labelEn: WechatMP AES Key + labelZh: 微信公众平台 AES Key + required: false + type: text + - default: "" + edit: true + envKey: WECHATCOM_CORP_ID + labelEn: Wechatcom Corp ID + labelZh: 企业微信公司 Corp ID + required: false + type: text + - default: "" + edit: true + envKey: WECHATCOMAPP_TOKEN + labelEn: WechatcomApp Token + labelZh: 企业微信 App Token + required: false + type: text + - default: "9898" + edit: true + envKey: WECHATCOMAPP_PORT + labelEn: WechatcomApp Port + labelZh: 企业微信 App 端口 + required: false + type: number + - default: "" + edit: true + envKey: WECHATCOMAPP_SECRET + labelEn: WechatcomApp Secret + labelZh: 企业微信 App Secret + required: false + type: text + - default: "" + edit: true + envKey: WECHATCOMAPP_AGENT_ID + labelEn: WechatcomApp Agent ID + labelZh: 企业微信 App Agent ID + required: false + type: text + - default: "" + edit: true + envKey: WECHATCOMAPP_AES_KEY + labelEn: WechatcomApp AES Key + labelZh: 企业微信 App AES Key + required: false + type: text + - default: "80" + edit: true + envKey: FEISHU_PORT + labelEn: Feishu Port + labelZh: 飞书 Bot 监听端口 + required: false + type: number + - default: "" + edit: true + envKey: FEISHU_APP_ID + labelEn: Feishu App ID + labelZh: 飞书机器人应用 App ID + required: false + type: text + - default: "" + edit: true + envKey: FEISHU_APP_SECRET + labelEn: Feishu App Secret + labelZh: 飞书机器人 App Secret + required: false + type: text + - default: "" + edit: true + envKey: FEISHU_TOKEN + labelEn: Feishu Token + labelZh: 飞书 Verification Token + required: false + type: text + - default: "" + edit: true + envKey: FEISHU_BOT_NAME + labelEn: Feishu Bot Name + labelZh: 飞书机器人名称 + required: false + type: text + - default: "" + edit: true + envKey: DINGTALK_CLIENT_ID + labelEn: Dingtalk Client ID + labelZh: 钉钉机器人 Client ID + required: false + type: text + - default: "" + edit: true + envKey: DINGTALK_CLIENT_SECRET + labelEn: Dingtalk Client Secret + labelZh: 钉钉机器人 Client Secret + required: false + type: text + - default: "false" + edit: true + envKey: DINGTALK_CARD_ENABLED + labelEn: Dingtalk Card Enabled + labelZh: 钉钉卡片开启 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: ["#清除记忆"] + edit: true + envKey: CLEAR_MEMORY_COMMANDS + labelEn: Clear Memory Commands + labelZh: 清除记忆指令 + required: false + type: text + - default: "" + edit: true + envKey: CHANNEL_TYPE + labelEn: Channel Type + labelZh: 通道类型 + required: false + type: text + - default: "" + edit: true + envKey: SUBSCRIBE_MSG + labelEn: Subscribe Message + labelZh: 订阅消息 + required: false + type: text + - default: "false" + edit: true + envKey: DEBUG + labelEn: Debug + labelZh: 调试模式 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "" + edit: true + envKey: APPDATA_DIR + labelEn: Appdata Directory + labelZh: 数据目录 + required: false + type: text + - default: "$" + edit: true + envKey: PLUGIN_TRIGGER_PREFIX + labelEn: Plugin Trigger Prefix + labelZh: 插件触发前缀 + required: false + type: text + - default: "false" + edit: true + envKey: USE_GLOBAL_PLUGIN_CONFIG + labelEn: Use Global Plugin Config + labelZh: 使用全局插件配置 + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "3" + edit: true + envKey: MAX_MEDIA_SEND_COUNT + labelEn: Max Media Send Count + labelZh: 单次最大发送媒体资源数量 + required: false + type: number + - default: "1" + edit: true + envKey: MEDIA_SEND_INTERVAL + labelEn: Media Send Interval + labelZh: 发送图片事件间隔(秒) + required: false + type: number + - default: "" + edit: true + envKey: ZHIPU_AI_API_KEY + labelEn: Zhipu AI API Key + labelZh: 智谱 AI API 密钥 + required: false + type: text + - default: "https://open.bigmodel.cn/api/paas/v4" + edit: true + envKey: ZHIPU_AI_API_BASE + labelEn: Zhipu AI API Base + labelZh: 智谱 AI API 地址 + required: false + type: text + - default: "" + edit: true + envKey: MOONSHOT_API_KEY + labelEn: Moonshot API Key + labelZh: Moonshot API 密钥 + required: false + type: text + - default: "https://api.moonshot.cn/v1/chat/completions" + edit: true + envKey: MOONSHOT_BASE_URL + labelEn: Moonshot Base URL + labelZh: Moonshot API 地址 + required: false + type: text + - default: "false" + edit: true + envKey: USE_LINKAI + labelEn: Use LinkAI + labelZh: 使用 LinkAI + required: true + type: select + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "" + edit: true + envKey: LINKAI_API_KEY + labelEn: LinkAI API Key + labelZh: LinkAI API 密钥 + required: false + type: text + - default: "" + edit: true + envKey: LINKAI_APP_CODE + labelEn: LinkAI App Code + labelZh: LinkAI App Code + required: false + type: text + - default: "https://api.link-ai.tech" + edit: true + envKey: LINKAI_API_BASE + labelEn: LinkAI API Base + labelZh: LinkAI API 地址 + required: false + type: text diff --git a/apps/chatgpt-on-wechat/latest/docker-compose.yml b/apps/chatgpt-on-wechat/latest/docker-compose.yml new file mode 100644 index 00000000..ac948b8d --- /dev/null +++ b/apps/chatgpt-on-wechat/latest/docker-compose.yml @@ -0,0 +1,136 @@ +services: + chatgpt-on-wechat: + image: "zhayujie/chatgpt-on-wechat:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + security_opt: + - seccomp:unconfined + environment: + - OPEN_AI_API_KEY=${OPEN_AI_API_KEY} + - OPEN_AI_API_BASE=${OPEN_AI_API_BASE} + - MODEL=${MODEL} + - USE_AZURE_CHATGPT=${USE_AZURE_CHATGPT} + - AZURE_DEPLOYMENT_ID=${AZURE_DEPLOYMENT_ID} + - AZURE_API_VERSION=${AZURE_API_VERSION} + - PROXY=${PROXY} + - SINGLE_CHAT_PREFIX=${SINGLE_CHAT_PREFIX} + - SINGLE_CHAT_REPLY_PREFIX=${SINGLE_CHAT_REPLY_PREFIX} + - SINGLE_CHAT_REPLY_SUFFIX=${SINGLE_CHAT_REPLY_SUFFIX} + - GROUP_CHAT_PREFIX=${GROUP_CHAT_PREFIX} + - GROUP_CHAT_REPLY_PREFIX=${GROUP_CHAT_REPLY_PREFIX} + - GROUP_CHAT_REPLY_SUFFIX=${GROUP_CHAT_REPLY_SUFFIX} + - GROUP_CHAT_KEYWORD=${GROUP_CHAT_KEYWORD} + - GROUP_AT_OFF=${GROUP_AT_OFF} + - GROUP_NAME_WHITE_LIST=${GROUP_NAME_WHITE_LIST} + - GROUP_NAME_KEYWORD_WHITE_LIST=${GROUP_NAME_KEYWORD_WHITE_LIST} + - GROUP_CHAT_IN_ONE_SESSION=${GROUP_CHAT_IN_ONE_SESSION} + - NICK_NAME_BLACK_LIST=${NICK_NAME_BLACK_LIST} + - GROUP_WELCOME_MSG=${GROUP_WELCOME_MSG} + - TRIGGER_BY_SELF=${TRIGGER_BY_SELF} + - TEXT_TO_IMAGE=${TEXT_TO_IMAGE} + - DALLE3_IMAGE_STYLE=${DALLE3_IMAGE_STYLE} + - DALLE3_IMAGE_QUALITY=${DALLE3_IMAGE_QUALITY} + - AZURE_OPENAI_DALLE_API_BASE=${AZURE_OPENAI_DALLE_API_BASE} + - AZURE_OPENAI_DALLE_API_KEY=${AZURE_OPENAI_DALLE_API_KEY} + - AZURE_OPENAI_DALLE_DEPLOYMENT_ID=${AZURE_OPENAI_DALLE_DEPLOYMENT_ID} + - IMAGE_PROXY=${IMAGE_PROXY} + - IMAGE_CREATE_PREFIX=${IMAGE_CREATE_PREFIX} + - CONCURRENCY_IN_SESSION=${CONCURRENCY_IN_SESSION} + - IMAGE_CREATE_SIZE=${IMAGE_CREATE_SIZE} + - GROUP_CHAT_EXIT_GROUP=${GROUP_CHAT_EXIT_GROUP} + - EXPIRES_IN_SECONDS=${EXPIRES_IN_SECONDS} + - CHARACTER_DESC=${CHARACTER_DESC} + - CONVERSATION_MAX_TOKENS=${CONVERSATION_MAX_TOKENS} + - RATE_LIMIT_CHATGPT=${RATE_LIMIT_CHATGPT} + - RATE_LIMIT_DALLE=${RATE_LIMIT_DALLE} + - TEMPERATURE=${TEMPERATURE} + - TOP_P=${TOP_P} + - FREQUENCY_PENALTY=${FREQUENCY_PENALTY} + - PRESENCE_PENALTY=${PRESENCE_PENALTY} + - REQUEST_TIMEOUT=${REQUEST_TIMEOUT} + - TIMEOUT=${TIMEOUT} + - BAIDU_WENXIN_MODEL=${BAIDU_WENXIN_MODEL} + - BAIDU_WENXIN_API_KEY=${BAIDU_WENXIN_API_KEY} + - BAIDU_WENXIN_SECRET_KEY=${BAIDU_WENXIN_SECRET_KEY} + - XUNFEI_APP_ID=${XUNFEI_APP_ID} + - XUNFEI_API_KEY=${XUNFEI_API_KEY} + - XUNFEI_API_SECRET=${XUNFEI_API_SECRET} + - CLAUDE_API_COOKIE=${CLAUDE_API_COOKIE} + - CLAUDE_UUID=${CLAUDE_UUID} + - CLAUDE_API_KEY=${CLAUDE_API_KEY} + - QWEN_ACCESS_KEY_ID=${QWEN_ACCESS_KEY_ID} + - QWEN_ACCESS_KEY_SECRET=${QWEN_ACCESS_KEY_SECRET} + - QWEN_AGENT_KEY=${QWEN_AGENT_KEY} + - QWEN_APP_ID=${QWEN_APP_ID} + - QWEN_NODE_ID=${QWEN_NODE_ID} + - DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY} + - GEMINI_API_KEY=${GEMINI_API_KEY} + - WEWORK_SMART=${WEWORK_SMART} + - SPEECH_RECOGNITION=${SPEECH_RECOGNITION} + - GROUP_SPEECH_RECOGNITION=${GROUP_SPEECH_RECOGNITION} + - VOICE_REPLY_VOICE=${VOICE_REPLY_VOICE} + - ALWAYS_REPLY_VOICE=${ALWAYS_REPLY_VOICE} + - VOICE_TO_TEXT=${VOICE_TO_TEXT} + - TEXT_TO_VOICE=${TEXT_TO_VOICE} + - TEXT_TO_VOICE_MODEL=${TEXT_TO_VOICE_MODEL} + - TTS_VOICE_ID=${TTS_VOICE_ID} + - BAIDU_APP_ID=${BAIDU_APP_ID} + - BAIDU_API_KEY=${BAIDU_API_KEY} + - BAIDU_SECRET_KEY=${BAIDU_SECRET_KEY} + - BAIDU_DEV_PID=${BAIDU_DEV_PID} + - AZURE_VOICE_API_KEY=${AZURE_VOICE_API_KEY} + - AZURE_VOICE_REGION=${AZURE_VOICE_REGION} + - XI_API_KEY=${XI_API_KEY} + - XI_VOICE_ID=${XI_VOICE_ID} + - CHAT_TIME_MODULE=${CHAT_TIME_MODULE} + - CHAT_START_TIME=${CHAT_START_TIME} + - CHAT_STOP_TIME=${CHAT_STOP_TIME} + - TRANSLATE=${TRANSLATE} + - BAIDU_TRANSLATE_APP_ID=${BAIDU_TRANSLATE_APP_ID} + - BAIDU_TRANSLATE_APP_KEY=${BAIDU_TRANSLATE_APP_KEY} + - HOT_RELOAD=${HOT_RELOAD} + - WECHATY_PUPPET_SERVICE_TOKEN=${WECHATY_PUPPET_SERVICE_TOKEN} + - WECHATMP_TOKEN=${WECHATMP_TOKEN} + - WECHATMP_PORT=${WECHATMP_PORT} + - WECHATMP_APP_ID=${WECHATMP_APP_ID} + - WECHATMP_APP_SECRET=${WECHATMP_APP_SECRET} + - WECHATMP_AES_KEY=${WECHATMP_AES_KEY} + - WECHATCOM_CORP_ID=${WECHATCOM_CORP_ID} + - WECHATCOMAPP_TOKEN=${WECHATCOMAPP_TOKEN} + - WECHATCOMAPP_PORT=${WECHATCOMAPP_PORT} + - WECHATCOMAPP_SECRET=${WECHATCOMAPP_SECRET} + - WECHATCOMAPP_AGENT_ID=${WECHATCOMAPP_AGENT_ID} + - WECHATCOMAPP_AES_KEY=${WECHATCOMAPP_AES_KEY} + - FEISHU_PORT=${FEISHU_PORT} + - FEISHU_APP_ID=${FEISHU_APP_ID} + - FEISHU_APP_SECRET=${FEISHU_APP_SECRET} + - FEISHU_TOKEN=${FEISHU_TOKEN} + - FEISHU_BOT_NAME=${FEISHU_BOT_NAME} + - DINGTALK_CLIENT_ID=${DINGTALK_CLIENT_ID} + - DINGTALK_CLIENT_SECRET=${DINGTALK_CLIENT_SECRET} + - DINGTALK_CARD_ENABLED=${DINGTALK_CARD_ENABLED} + - CLEAR_MEMORY_COMMANDS=${CLEAR_MEMORY_COMMANDS} + - CHANNEL_TYPE=${CHANNEL_TYPE} + - SUBSCRIBE_MSG=${SUBSCRIBE_MSG} + - DEBUG=${DEBUG} + - APPDATA_DIR=${APPDATA_DIR} + - PLUGIN_TRIGGER_PREFIX=${PLUGIN_TRIGGER_PREFIX} + - USE_GLOBAL_PLUGIN_CONFIG=${USE_GLOBAL_PLUGIN_CONFIG} + - MAX_MEDIA_SEND_COUNT=${MAX_MEDIA_SEND_COUNT} + - MEDIA_SEND_INTERVAL=${MEDIA_SEND_INTERVAL} + - ZHIPU_AI_API_KEY=${ZHIPU_AI_API_KEY} + - ZHIPU_AI_API_BASE=${ZHIPU_AI_API_BASE} + - MOONSHOT_API_KEY=${MOONSHOT_API_KEY} + - MOONSHOT_BASE_URL=${MOONSHOT_BASE_URL} + - USE_LINKAI=${USE_LINKAI} + - LINKAI_API_KEY=${LINKAI_API_KEY} + - LINKAI_APP_CODE=${LINKAI_APP_CODE} + - LINKAI_API_BASE=${LINKAI_API_BASE} + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/chatgpt-on-wechat/logo.png b/apps/chatgpt-on-wechat/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9cec3e62d1817bf3fe702d0d21ccdd15beb049a2 GIT binary patch literal 4768 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

!}0k@$uIak@e=yjlY=N3BnWaKW~gk*dW)%cD3KH zwneSf(5a7)G8=QG9&G%o^pIm^L|i@bbY{D?PdIy50b`l(y!p* u)zeQLhv-{v{-Yu3Xm({aFaH6