mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-07-20 13:47:15 +08:00
Merge pull request #605 from lanvent/dev2
docker: use environment vars to set parameters
This commit is contained in:
@@ -4,7 +4,7 @@ import json
|
|||||||
import os
|
import os
|
||||||
from common.log import logger
|
from common.log import logger
|
||||||
|
|
||||||
# 将所有可用的配置项写在字典里
|
# 将所有可用的配置项写在字典里, 请使用小写字母
|
||||||
available_setting ={
|
available_setting ={
|
||||||
#openai api配置
|
#openai api配置
|
||||||
"open_ai_api_key": "", # openai api key
|
"open_ai_api_key": "", # openai api key
|
||||||
@@ -106,8 +106,12 @@ def load_config():
|
|||||||
# override config with environment variables.
|
# 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.
|
# 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():
|
for name, value in os.environ.items():
|
||||||
|
name = name.lower()
|
||||||
if name in available_setting:
|
if name in available_setting:
|
||||||
logger.info("[INIT] override config by environ args: {}={}".format(name, value))
|
logger.info("[INIT] override config by environ args: {}={}".format(name, value))
|
||||||
|
try:
|
||||||
|
config[name] = eval(value)
|
||||||
|
except:
|
||||||
config[name] = value
|
config[name] = value
|
||||||
|
|
||||||
logger.info("[INIT] load config: {}".format(config))
|
logger.info("[INIT] load config: {}".format(config))
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ ADD ./entrypoint.sh /entrypoint.sh
|
|||||||
|
|
||||||
RUN chmod +x /entrypoint.sh \
|
RUN chmod +x /entrypoint.sh \
|
||||||
&& adduser -D -h /home/noroot -u 1000 -s /bin/bash noroot \
|
&& adduser -D -h /home/noroot -u 1000 -s /bin/bash noroot \
|
||||||
&& chown noroot:noroot ${BUILD_PREFIX}
|
&& chown -R noroot:noroot ${BUILD_PREFIX}
|
||||||
|
|
||||||
USER noroot
|
USER noroot
|
||||||
|
|
||||||
|
|||||||
@@ -4,5 +4,5 @@
|
|||||||
tar -zcf chatgpt-on-wechat.tar.gz --exclude=../../chatgpt-on-wechat/docker ../../chatgpt-on-wechat
|
tar -zcf chatgpt-on-wechat.tar.gz --exclude=../../chatgpt-on-wechat/docker ../../chatgpt-on-wechat
|
||||||
|
|
||||||
# build image
|
# build image
|
||||||
docker build -f Dockerfile.alpine \
|
docker build -f Dockerfile.latest \
|
||||||
-t zhayujie/chatgpt-on-wechat .
|
-t zhayujie/chatgpt-on-wechat .
|
||||||
@@ -15,6 +15,6 @@ services:
|
|||||||
GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'
|
GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'
|
||||||
IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
|
IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
|
||||||
CONVERSATION_MAX_TOKENS: 1000
|
CONVERSATION_MAX_TOKENS: 1000
|
||||||
SPEECH_RECOGNITION: 'false'
|
SPEECH_RECOGNITION: "False"
|
||||||
CHARACTER_DESC: '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
|
CHARACTER_DESC: '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
|
||||||
EXPIRES_IN_SECONDS: 3600
|
EXPIRES_IN_SECONDS: 3600
|
||||||
@@ -8,17 +8,19 @@ CHATGPT_ON_WECHAT_CONFIG_PATH=${CHATGPT_ON_WECHAT_CONFIG_PATH:-""}
|
|||||||
# execution command line
|
# execution command line
|
||||||
CHATGPT_ON_WECHAT_EXEC=${CHATGPT_ON_WECHAT_EXEC:-""}
|
CHATGPT_ON_WECHAT_EXEC=${CHATGPT_ON_WECHAT_EXEC:-""}
|
||||||
|
|
||||||
OPEN_AI_API_KEY=${OPEN_AI_API_KEY:-""}
|
# use environment variables to pass parameters
|
||||||
OPEN_AI_PROXY=${OPEN_AI_PROXY:-""}
|
# if you have not defined environment variables, set them bwlow
|
||||||
SINGLE_CHAT_PREFIX=${SINGLE_CHAT_PREFIX:-""}
|
export OPEN_AI_API_KEY=${OPEN_AI_API_KEY:-'YOUR API KEY'}
|
||||||
SINGLE_CHAT_REPLY_PREFIX=${SINGLE_CHAT_REPLY_PREFIX:-""}
|
export OPEN_AI_PROXY=${OPEN_AI_PROXY:-""}
|
||||||
GROUP_CHAT_PREFIX=${GROUP_CHAT_PREFIX:-""}
|
export SINGLE_CHAT_PREFIX=${SINGLE_CHAT_PREFIX:-'["bot", "@bot"]'}
|
||||||
GROUP_NAME_WHITE_LIST=${GROUP_NAME_WHITE_LIST:-""}
|
export SINGLE_CHAT_REPLY_PREFIX=${SINGLE_CHAT_REPLY_PREFIX:-'"[bot] "'}
|
||||||
IMAGE_CREATE_PREFIX=${IMAGE_CREATE_PREFIX:-""}
|
export GROUP_CHAT_PREFIX=${GROUP_CHAT_PREFIX:-'["@bot"]'}
|
||||||
CONVERSATION_MAX_TOKENS=${CONVERSATION_MAX_TOKENS:-""}
|
export GROUP_NAME_WHITE_LIST=${GROUP_NAME_WHITE_LIST:-'["ChatGPT测试群", "ChatGPT测试群2"]'}
|
||||||
SPEECH_RECOGNITION=${SPEECH_RECOGNITION:-""}
|
export IMAGE_CREATE_PREFIX=${IMAGE_CREATE_PREFIX:-'["画", "看", "找"]'}
|
||||||
CHARACTER_DESC=${CHARACTER_DESC:-""}
|
export CONVERSATION_MAX_TOKENS=${CONVERSATION_MAX_TOKENS:-"1000"}
|
||||||
EXPIRES_IN_SECONDS=${EXPIRES_IN_SECONDS:-""}
|
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
|
# CHATGPT_ON_WECHAT_PREFIX is empty, use /app
|
||||||
if [ "$CHATGPT_ON_WECHAT_PREFIX" == "" ] ; then
|
if [ "$CHATGPT_ON_WECHAT_PREFIX" == "" ] ; then
|
||||||
@@ -36,56 +38,10 @@ if [ "$CHATGPT_ON_WECHAT_EXEC" == "" ] ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# modify content in config.json
|
# modify content in config.json
|
||||||
if [ "$OPEN_AI_API_KEY" != "" ] ; then
|
if [ "$OPEN_AI_API_KEY" == "YOUR API KEY" ] ; then
|
||||||
sed -i "s/\"open_ai_api_key\".*,$/\"open_ai_api_key\": \"$OPEN_AI_API_KEY\",/" $CHATGPT_ON_WECHAT_CONFIG_PATH
|
|
||||||
else
|
|
||||||
echo -e "\033[31m[Warning] You need to set OPEN_AI_API_KEY before running!\033[0m"
|
echo -e "\033[31m[Warning] You need to set OPEN_AI_API_KEY before running!\033[0m"
|
||||||
fi
|
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
|
# go to prefix dir
|
||||||
cd $CHATGPT_ON_WECHAT_PREFIX
|
cd $CHATGPT_ON_WECHAT_PREFIX
|
||||||
|
|||||||
Reference in New Issue
Block a user