Adjust the directory structure to prepare for merging into Master.
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
import logging
|
||||
import os
|
||||
import dotenv
|
||||
|
||||
dotenv.load_dotenv()
|
||||
|
||||
|
||||
# ==== Utils
|
||||
def _string_to_bool(s: str | None):
|
||||
if s is None:
|
||||
return None
|
||||
s = s.lower()
|
||||
if s in ['y', 'yes', 't', 'true']:
|
||||
return True
|
||||
if s in ['n', 'no', 'f', 'false']:
|
||||
return False
|
||||
raise Exception(f"Invalid argument '{s}', should be a bool value: y/yes/n/no/t/true/f/false.")
|
||||
|
||||
|
||||
def _string_to_log_level(s: str | None):
|
||||
if s is None:
|
||||
return None
|
||||
s = s.lower()
|
||||
if s in ['debug', 'd']:
|
||||
return logging.DEBUG
|
||||
if s in ['info', 'i']:
|
||||
return logging.INFO
|
||||
if s in ['w', 'warn', 'warning']:
|
||||
return logging.WARNING
|
||||
if s in ['error', 'e', 'err']:
|
||||
return logging.ERROR
|
||||
if s in ['fatal', 'critical']:
|
||||
return logging.FATAL
|
||||
raise Exception(f"Invalid argument '{s}', should be a log level: debug, info, warn, error, fatal")
|
||||
|
||||
|
||||
def _get_env_str(name: str, must_not_empty: bool = False):
|
||||
v = os.getenv(name)
|
||||
if must_not_empty and (v is None or v == ''):
|
||||
raise Exception(f"Environment variable '{name}' is required!")
|
||||
return v
|
||||
|
||||
|
||||
def _get_env_bool(name: str): return _string_to_bool(os.getenv(name))
|
||||
|
||||
|
||||
def _get_env_int(name: str): return int(os.getenv(name))
|
||||
|
||||
|
||||
def _get_env_float(name: str): return float(os.getenv(name))
|
||||
|
||||
|
||||
def _get_env_log_level(name: str): return _string_to_log_level(os.getenv(name))
|
||||
|
||||
|
||||
# The config
|
||||
|
||||
# DO NOT use it, it's still not mature yet
|
||||
use_private_ai = _get_env_bool("JARVIS_USE_PRIVATE_AI") or False
|
||||
private_ai_address = _get_env_str("JARVIS_PRIVATE_AI_URL", use_private_ai)
|
||||
|
||||
is_server_mode = _get_env_bool("JARVIS_SERVER_MODE") or False
|
||||
# The port used in server mode
|
||||
server_mode_port = _get_env_int("JARVIS_SERVER_MODE_PORT") or 1000
|
||||
# Jarvis can also connect to a server as a client.
|
||||
# This is the server's address
|
||||
bot_server_url = _get_env_str("JARVIS_BOT_SERVER_URL") or "http://localhost:8081"
|
||||
|
||||
# The directory where the chat history should be stored,
|
||||
# By storing the chat history, each time Jarvis starts up, the chat context is restored
|
||||
chat_history_dir = _get_env_str("JARVIS_CHAT_HISTORY_DIR") or None
|
||||
|
||||
# ChatGPT temperature
|
||||
temperature = _get_env_float("JARVIS_AI_TEMPERATURE") or 0
|
||||
|
||||
debug_mode = _get_env_bool("JARVIS_DEBUG_MODE") or False
|
||||
log_level = _get_env_log_level("JARVIS_LOG_LEVEL") or logging.INFO
|
||||
|
||||
# The main llm model
|
||||
llm_model = _get_env_str("JARVIS_LLM_MODEL") or "gpt-3.5-turbo-0301"
|
||||
# The model used to handle some simple tasks
|
||||
small_llm_model = _get_env_str("JARVIS_SMALL_LLM_MODEL") or "gpt-3.5-turbo-0301"
|
||||
token_limit = _get_env_int("JARVIS_TOKEN_LIMIT") or 4000
|
||||
|
||||
openai_api_key = _get_env_str("JARVIS_OPENAI_API_KEY", True)
|
||||
# If your service is not provided directly by openai,
|
||||
# or you just deployed you own AI model with a same API as opeai.
|
||||
# Or this configuration is useless
|
||||
openai_url_base = _get_env_str("JARVIS_OPENAI_URL_BASE") or None
|
||||
|
||||
# Tell Jarvis where to load function modules
|
||||
external_function_module_dirs = _get_env_str("JARVIS_EXTERNAL_FUNCTION_MODULE_DIR")
|
||||
|
||||
use_azure = False
|
||||
def get_azure_deployment_id_for_model(model):
|
||||
assert False
|
||||
# TODO
|
||||
Reference in New Issue
Block a user