diff --git a/config.py b/config.py index 348ba9f..c17360e 100644 --- a/config.py +++ b/config.py @@ -4,7 +4,7 @@ import json import os from common.log import logger -# 将所有可用的配置项写在字典里 +# 将所有可用的配置项写在字典里, 请使用小写字母 available_setting ={ #openai api配置 "open_ai_api_key": "", # openai api key @@ -106,9 +106,13 @@ def load_config(): # override config with environment variables. # Some online deployment platforms (e.g. Railway) deploy project from github directly. So you shouldn't put your secrets like api key in a config file, instead use environment variables to override the default config. for name, value in os.environ.items(): + name = name.lower() if name in available_setting: logger.info("[INIT] override config by environ args: {}={}".format(name, value)) - config[name] = value + try: + config[name] = eval(value) + except: + config[name] = value logger.info("[INIT] load config: {}".format(config)) diff --git a/docker/Dockerfile.latest b/docker/Dockerfile.latest index fed4011..2f415e5 100644 --- a/docker/Dockerfile.latest +++ b/docker/Dockerfile.latest @@ -28,7 +28,7 @@ ADD ./entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh \ && adduser -D -h /home/noroot -u 1000 -s /bin/bash noroot \ - && chown noroot:noroot ${BUILD_PREFIX} + && chown -R noroot:noroot ${BUILD_PREFIX} USER noroot diff --git a/docker/build.latest.sh b/docker/build.latest.sh index d80e84c..3d41a4c 100644 --- a/docker/build.latest.sh +++ b/docker/build.latest.sh @@ -4,5 +4,5 @@ tar -zcf chatgpt-on-wechat.tar.gz --exclude=../../chatgpt-on-wechat/docker ../../chatgpt-on-wechat # build image -docker build -f Dockerfile.alpine \ +docker build -f Dockerfile.latest \ -t zhayujie/chatgpt-on-wechat . \ No newline at end of file diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index e8be4ea..51ff2b9 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -15,6 +15,6 @@ services: GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]' IMAGE_CREATE_PREFIX: '["画", "看", "找"]' CONVERSATION_MAX_TOKENS: 1000 - SPEECH_RECOGNITION: 'false' + SPEECH_RECOGNITION: "False" CHARACTER_DESC: '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。' EXPIRES_IN_SECONDS: 3600 \ No newline at end of file diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 3c12ab3..adc6624 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -8,17 +8,19 @@ CHATGPT_ON_WECHAT_CONFIG_PATH=${CHATGPT_ON_WECHAT_CONFIG_PATH:-""} # execution command line CHATGPT_ON_WECHAT_EXEC=${CHATGPT_ON_WECHAT_EXEC:-""} -OPEN_AI_API_KEY=${OPEN_AI_API_KEY:-""} -OPEN_AI_PROXY=${OPEN_AI_PROXY:-""} -SINGLE_CHAT_PREFIX=${SINGLE_CHAT_PREFIX:-""} -SINGLE_CHAT_REPLY_PREFIX=${SINGLE_CHAT_REPLY_PREFIX:-""} -GROUP_CHAT_PREFIX=${GROUP_CHAT_PREFIX:-""} -GROUP_NAME_WHITE_LIST=${GROUP_NAME_WHITE_LIST:-""} -IMAGE_CREATE_PREFIX=${IMAGE_CREATE_PREFIX:-""} -CONVERSATION_MAX_TOKENS=${CONVERSATION_MAX_TOKENS:-""} -SPEECH_RECOGNITION=${SPEECH_RECOGNITION:-""} -CHARACTER_DESC=${CHARACTER_DESC:-""} -EXPIRES_IN_SECONDS=${EXPIRES_IN_SECONDS:-""} +# use environment variables to pass parameters +# if you have not defined environment variables, set them bwlow +export OPEN_AI_API_KEY=${OPEN_AI_API_KEY:-'YOUR API KEY'} +export OPEN_AI_PROXY=${OPEN_AI_PROXY:-""} +export SINGLE_CHAT_PREFIX=${SINGLE_CHAT_PREFIX:-'["bot", "@bot"]'} +export SINGLE_CHAT_REPLY_PREFIX=${SINGLE_CHAT_REPLY_PREFIX:-'"[bot] "'} +export GROUP_CHAT_PREFIX=${GROUP_CHAT_PREFIX:-'["@bot"]'} +export GROUP_NAME_WHITE_LIST=${GROUP_NAME_WHITE_LIST:-'["ChatGPT测试群", "ChatGPT测试群2"]'} +export IMAGE_CREATE_PREFIX=${IMAGE_CREATE_PREFIX:-'["画", "看", "找"]'} +export CONVERSATION_MAX_TOKENS=${CONVERSATION_MAX_TOKENS:-"1000"} +export SPEECH_RECOGNITION=${SPEECH_RECOGNITION:-"False"} +export CHARACTER_DESC=${CHARACTER_DESC:-"你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。"} +export EXPIRES_IN_SECONDS=${EXPIRES_IN_SECONDS:-"3600"} # CHATGPT_ON_WECHAT_PREFIX is empty, use /app if [ "$CHATGPT_ON_WECHAT_PREFIX" == "" ] ; then @@ -36,56 +38,10 @@ if [ "$CHATGPT_ON_WECHAT_EXEC" == "" ] ; then fi # modify content in config.json -if [ "$OPEN_AI_API_KEY" != "" ] ; then - sed -i "s/\"open_ai_api_key\".*,$/\"open_ai_api_key\": \"$OPEN_AI_API_KEY\",/" $CHATGPT_ON_WECHAT_CONFIG_PATH -else +if [ "$OPEN_AI_API_KEY" == "YOUR API KEY" ] ; then echo -e "\033[31m[Warning] You need to set OPEN_AI_API_KEY before running!\033[0m" fi -# use http_proxy as default -if [ "$HTTP_PROXY" != "" ] ; then - sed -i "s/\"proxy\".*,$/\"proxy\": \"$HTTP_PROXY\",/" $CHATGPT_ON_WECHAT_CONFIG_PATH -fi - -if [ "$OPEN_AI_PROXY" != "" ] ; then - sed -i "s/\"proxy\".*,$/\"proxy\": \"$OPEN_AI_PROXY\",/" $CHATGPT_ON_WECHAT_CONFIG_PATH -fi - -if [ "$SINGLE_CHAT_PREFIX" != "" ] ; then - sed -i "s/\"single_chat_prefix\".*,$/\"single_chat_prefix\": $SINGLE_CHAT_PREFIX,/" $CHATGPT_ON_WECHAT_CONFIG_PATH -fi - -if [ "$SINGLE_CHAT_REPLY_PREFIX" != "" ] ; then - sed -i "s/\"single_chat_reply_prefix\".*,$/\"single_chat_reply_prefix\": $SINGLE_CHAT_REPLY_PREFIX,/" $CHATGPT_ON_WECHAT_CONFIG_PATH -fi - -if [ "$GROUP_CHAT_PREFIX" != "" ] ; then - sed -i "s/\"group_chat_prefix\".*,$/\"group_chat_prefix\": $GROUP_CHAT_PREFIX,/" $CHATGPT_ON_WECHAT_CONFIG_PATH -fi - -if [ "$GROUP_NAME_WHITE_LIST" != "" ] ; then - sed -i "s/\"group_name_white_list\".*,$/\"group_name_white_list\": $GROUP_NAME_WHITE_LIST,/" $CHATGPT_ON_WECHAT_CONFIG_PATH -fi - -if [ "$IMAGE_CREATE_PREFIX" != "" ] ; then - sed -i "s/\"image_create_prefix\".*,$/\"image_create_prefix\": $IMAGE_CREATE_PREFIX,/" $CHATGPT_ON_WECHAT_CONFIG_PATH -fi - -if [ "$CONVERSATION_MAX_TOKENS" != "" ] ; then - sed -i "s/\"conversation_max_tokens\".*,$/\"conversation_max_tokens\": $CONVERSATION_MAX_TOKENS,/" $CHATGPT_ON_WECHAT_CONFIG_PATH -fi - -if [ "$SPEECH_RECOGNITION" != "" ] ; then - sed -i "s/\"speech_recognition\".*,$/\"speech_recognition\": $SPEECH_RECOGNITION,/" $CHATGPT_ON_WECHAT_CONFIG_PATH -fi - -if [ "$CHARACTER_DESC" != "" ] ; then - sed -i "s/\"character_desc\".*,$/\"character_desc\": \"$CHARACTER_DESC\",/" $CHATGPT_ON_WECHAT_CONFIG_PATH -fi - -if [ "$EXPIRES_IN_SECONDS" != "" ] ; then - sed -i "s/\"expires_in_seconds\".*$/\"expires_in_seconds\": $EXPIRES_IN_SECONDS,/" $CHATGPT_ON_WECHAT_CONFIG_PATH -fi # go to prefix dir cd $CHATGPT_ON_WECHAT_PREFIX