Langchain-Chatchat/configs/model_config.py

171 lines
5.8 KiB
Python
Raw Normal View History

2023-04-13 23:01:52 +08:00
import torch.cuda
import torch.backends
2023-04-25 20:14:33 +08:00
import os
import logging
import uuid
LOG_FORMAT = "%(levelname) -5s %(asctime)s" "-1d: %(message)s"
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logging.basicConfig(format=LOG_FORMAT)
2023-04-13 23:01:52 +08:00
2023-06-12 00:10:47 +08:00
# 在以下字典中修改属性值以指定本地embedding模型存储位置
# 如将 "text2vec": "GanymedeNil/text2vec-large-chinese" 修改为 "text2vec": "User/Downloads/text2vec-large-chinese"
# 此处请写绝对路径
2023-04-13 23:01:52 +08:00
embedding_model_dict = {
"ernie-tiny": "nghuyong/ernie-3.0-nano-zh",
"ernie-base": "nghuyong/ernie-3.0-base-zh",
2023-04-27 07:40:57 +08:00
"text2vec-base": "shibing624/text2vec-base-chinese",
2023-04-13 23:01:52 +08:00
"text2vec": "GanymedeNil/text2vec-large-chinese",
"m3e-small": "moka-ai/m3e-small",
"m3e-base": "moka-ai/m3e-base",
2023-04-13 23:01:52 +08:00
}
# Embedding model name
2023-04-13 23:20:45 +08:00
EMBEDDING_MODEL = "text2vec"
2023-04-13 23:01:52 +08:00
# Embedding running device
EMBEDDING_DEVICE = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
2023-04-13 23:01:52 +08:00
# supported LLM models
2023-05-22 00:15:29 +08:00
# llm_model_dict 处理了loader的一些预设行为如加载位置模型名称模型处理器实例
2023-06-12 00:10:47 +08:00
# 在以下字典中修改属性值,以指定本地 LLM 模型存储位置
# 如将 "chatglm-6b" 的 "local_model_path" 由 None 修改为 "User/Downloads/chatglm-6b"
# 此处请写绝对路径
2023-04-13 23:01:52 +08:00
llm_model_dict = {
"chatglm-6b-int4-qe": {
"name": "chatglm-6b-int4-qe",
2023-05-19 23:12:39 +08:00
"pretrained_model_name": "THUDM/chatglm-6b-int4-qe",
"local_model_path": None,
"provides": "ChatGLM"
},
"chatglm-6b-int4": {
"name": "chatglm-6b-int4",
2023-05-19 23:12:39 +08:00
"pretrained_model_name": "THUDM/chatglm-6b-int4",
"local_model_path": None,
"provides": "ChatGLM"
},
2023-05-19 23:16:39 +08:00
"chatglm-6b-int8": {
"name": "chatglm-6b-int8",
"pretrained_model_name": "THUDM/chatglm-6b-int8",
"local_model_path": None,
"provides": "ChatGLM"
},
"chatglm-6b": {
"name": "chatglm-6b",
2023-05-19 23:16:39 +08:00
"pretrained_model_name": "THUDM/chatglm-6b",
2023-06-12 00:10:47 +08:00
"local_model_path": None,
"provides": "ChatGLM"
},
2023-05-21 22:41:22 +08:00
"chatyuan": {
"name": "chatyuan",
2023-05-19 23:12:39 +08:00
"pretrained_model_name": "ClueAI/ChatYuan-large-v2",
"local_model_path": None,
"provides": None
},
2023-05-19 23:16:39 +08:00
"moss": {
"name": "moss",
"pretrained_model_name": "fnlp/moss-moon-003-sft",
2023-05-19 23:12:39 +08:00
"local_model_path": None,
2023-05-19 23:16:39 +08:00
"provides": "MOSSLLM"
},
"vicuna-13b-hf": {
"name": "vicuna-13b-hf",
"pretrained_model_name": "vicuna-13b-hf",
2023-06-10 22:15:39 +08:00
"local_model_path": "/media/checkpoint/vicuna-13b-hf",
"provides": "LLamaLLM"
},
2023-05-31 22:50:35 +08:00
# 通过 fastchat 调用的模型请参考如下格式
"fastchat-chatglm-6b": {
"name": "chatglm-6b", # "name"修改为fastchat服务中的"model_name"
"pretrained_model_name": "chatglm-6b",
"local_model_path": None,
2023-05-31 22:50:35 +08:00
"provides": "FastChatOpenAILLM", # 使用fastchat api时需保证"provides"为"FastChatOpenAILLM"
"api_base_url": "http://localhost:8000/v1" # "name"修改为fastchat服务中的"api_base_url"
2023-05-31 22:11:28 +08:00
},
2023-05-31 22:50:35 +08:00
# 通过 fastchat 调用的模型请参考如下格式
"fastchat-vicuna-13b-hf": {
"name": "vicuna-13b-hf", # "name"修改为fastchat服务中的"model_name"
2023-05-31 22:11:28 +08:00
"pretrained_model_name": "vicuna-13b-hf",
"local_model_path": None,
2023-05-31 22:50:35 +08:00
"provides": "FastChatOpenAILLM", # 使用fastchat api时需保证"provides"为"FastChatOpenAILLM"
"api_base_url": "http://localhost:8000/v1" # "name"修改为fastchat服务中的"api_base_url"
2023-05-31 22:11:28 +08:00
},
2023-04-13 23:01:52 +08:00
}
# LLM 名称
2023-04-21 21:22:25 +08:00
LLM_MODEL = "chatglm-6b"
# 量化加载8bit 模型
LOAD_IN_8BIT = False
# Load the model with bfloat16 precision. Requires NVIDIA Ampere GPU.
BF16 = False
# 本地lora存放的位置
LORA_DIR = "loras/"
2023-04-13 23:01:52 +08:00
# LLM lora path默认为空如果有请直接指定文件夹路径
LLM_LORA_PATH = ""
USE_LORA = True if LLM_LORA_PATH else False
# LLM streaming reponse
STREAMING = True
2023-04-15 14:43:12 +08:00
# Use p-tuning-v2 PrefixEncoder
USE_PTUNING_V2 = False
2023-04-13 23:01:52 +08:00
# LLM running device
LLM_DEVICE = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
2023-05-03 22:31:28 +08:00
VS_ROOT_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "vector_store")
2023-04-19 23:02:47 +08:00
2023-05-03 22:31:28 +08:00
UPLOAD_ROOT_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "content")
2023-04-19 23:02:47 +08:00
2023-04-26 23:20:08 +08:00
# 基于上下文的prompt模版请务必保留"{question}"和"{context}"
2023-05-02 00:28:09 +08:00
PROMPT_TEMPLATE = """已知信息:
{context}
2023-05-02 00:28:09 +08:00
根据上述已知信息简洁和专业的来回答用户的问题如果无法从中得到答案请说 根据已知信息无法回答该问题 没有提供足够的相关信息不允许在答案中添加编造成分答案请使用中文 问题是{question}"""
2023-04-28 00:02:42 +08:00
# 缓存知识库数量
CACHED_VS_NUM = 1
2023-05-06 23:26:49 +08:00
# 文本分句长度
SENTENCE_SIZE = 100
2023-04-28 00:02:42 +08:00
# 匹配后单段上下文长度
2023-05-04 20:48:36 +08:00
CHUNK_SIZE = 250
# LLM input history length
LLM_HISTORY_LEN = 3
# return top-k text chunk from vector store
VECTOR_SEARCH_TOP_K = 5
2023-05-11 00:09:38 +08:00
# 知识检索内容相关度 Score, 数值范围约为0-1100如果为0则不生效经测试设置为小于500时匹配结果更精准
2023-05-10 17:18:20 +08:00
VECTOR_SEARCH_SCORE_THRESHOLD = 0
NLTK_DATA_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "nltk_data")
FLAG_USER_NAME = uuid.uuid4().hex
logger.info(f"""
loading model config
llm device: {LLM_DEVICE}
embedding device: {EMBEDDING_DEVICE}
dir: {os.path.dirname(os.path.dirname(__file__))}
flagging username: {FLAG_USER_NAME}
2023-05-10 17:18:20 +08:00
""")
# 是否开启跨域默认为False如果需要开启请设置为True
# is open cross domain
OPEN_CROSS_DOMAIN = False
2023-05-21 22:30:28 +08:00
# Bing 搜索必备变量
# 使用 Bing 搜索需要使用 Bing Subscription Key
# 具体申请方式请见 https://learn.microsoft.com/en-us/bing/search-apis/bing-web-search/quickstarts/rest/python
BING_SEARCH_URL = "https://api.bing.microsoft.com/v7.0/search"
BING_SUBSCRIPTION_KEY = ""