[全量] 初始化项目代码、配置、文档及Agent协同harness
This commit is contained in:
8
langchain-chat/configs/__init__.py
Normal file
8
langchain-chat/configs/__init__.py
Normal file
@@ -0,0 +1,8 @@
|
||||
from .basic_config import *
|
||||
from .model_config import *
|
||||
from .kb_config import *
|
||||
from .server_config import *
|
||||
from .prompt_config import *
|
||||
|
||||
|
||||
VERSION = "v0.2.10"
|
||||
60
langchain-chat/configs/basic_config.py
Normal file
60
langchain-chat/configs/basic_config.py
Normal file
@@ -0,0 +1,60 @@
|
||||
import logging
|
||||
import os
|
||||
import langchain
|
||||
import tempfile
|
||||
import shutil
|
||||
import time
|
||||
from functools import wraps
|
||||
|
||||
# 是否显示详细日志
|
||||
log_verbose = False
|
||||
langchain.verbose = False
|
||||
|
||||
# 通常情况下不需要更改以下内容
|
||||
|
||||
# 日志格式
|
||||
LOG_FORMAT = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"
|
||||
logger = logging.getLogger()
|
||||
logger.setLevel(logging.INFO)
|
||||
logging.basicConfig(format=LOG_FORMAT)
|
||||
|
||||
|
||||
# 日志存储路径
|
||||
LOG_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "logs")
|
||||
if not os.path.exists(LOG_PATH):
|
||||
os.mkdir(LOG_PATH)
|
||||
|
||||
# 临时文件目录,主要用于文件对话
|
||||
BASE_TEMP_DIR = os.path.join(tempfile.gettempdir(), "chatchat")
|
||||
try:
|
||||
shutil.rmtree(BASE_TEMP_DIR)
|
||||
except Exception:
|
||||
pass
|
||||
os.makedirs(BASE_TEMP_DIR, exist_ok=True)
|
||||
|
||||
# 计时器
|
||||
import asyncio
|
||||
|
||||
def timing_decorator(func):
|
||||
if asyncio.iscoroutinefunction(func):
|
||||
@wraps(func)
|
||||
async def async_wrapper(*args, **kwargs):
|
||||
start_time = time.time()
|
||||
logging.info(f"开始执行异步函数: {func.__name__}")
|
||||
result = await func(*args, **kwargs)
|
||||
end_time = time.time()
|
||||
elapsed = end_time - start_time
|
||||
logging.info(f"🕐异步函数 {func.__name__} 执行耗时: {elapsed:.2f} 秒")
|
||||
return result
|
||||
return async_wrapper
|
||||
else:
|
||||
@wraps(func)
|
||||
def sync_wrapper(*args, **kwargs):
|
||||
start_time = time.time()
|
||||
logging.info(f"开始执行函数: {func.__name__}")
|
||||
result = func(*args, **kwargs)
|
||||
end_time = time.time()
|
||||
elapsed = end_time - start_time
|
||||
logging.info(f"🕐函数 {func.__name__} 执行耗时: {elapsed:.2f} 秒")
|
||||
return result
|
||||
return sync_wrapper
|
||||
32
langchain-chat/configs/basic_config.py.example
Normal file
32
langchain-chat/configs/basic_config.py.example
Normal file
@@ -0,0 +1,32 @@
|
||||
import logging
|
||||
import os
|
||||
import langchain
|
||||
import tempfile
|
||||
import shutil
|
||||
|
||||
|
||||
# 是否显示详细日志
|
||||
log_verbose = False
|
||||
langchain.verbose = False
|
||||
|
||||
# 通常情况下不需要更改以下内容
|
||||
|
||||
# 日志格式
|
||||
LOG_FORMAT = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"
|
||||
logger = logging.getLogger()
|
||||
logger.setLevel(logging.INFO)
|
||||
logging.basicConfig(format=LOG_FORMAT)
|
||||
|
||||
|
||||
# 日志存储路径
|
||||
LOG_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "logs")
|
||||
if not os.path.exists(LOG_PATH):
|
||||
os.mkdir(LOG_PATH)
|
||||
|
||||
# 临时文件目录,主要用于文件对话
|
||||
BASE_TEMP_DIR = os.path.join(tempfile.gettempdir(), "chatchat")
|
||||
try:
|
||||
shutil.rmtree(BASE_TEMP_DIR)
|
||||
except Exception:
|
||||
pass
|
||||
os.makedirs(BASE_TEMP_DIR, exist_ok=True)
|
||||
69
langchain-chat/configs/comparison_config.py
Normal file
69
langchain-chat/configs/comparison_config.py
Normal file
@@ -0,0 +1,69 @@
|
||||
comparison=[
|
||||
{"index": 0,
|
||||
"title":"对比模板",
|
||||
"summary": "摘要\n" +
|
||||
"本报告对[文献A标题]、[文献B标题]及其他相关文献进行了系统的对比分析,旨在揭示这些研究在多个维度上的异同及其对学术领域的贡献。首先,报告介绍了每篇文献的基本信息,包括作者、发表年份、期刊或出版社,以及主要研究领域或主题,明确了进行文献对比的目的和意义。\n" +
|
||||
"在文献概述部分,详细总结了每篇文献的主要研究内容、研究方法或实验设计、关键发现或结论,以及其学术贡献或应用价值。接下来,通过对比维度分析,报告深入比较了文献的基本信息、研究背景与目的、方法论、数据与结果,以及结论与贡献。\n" +
|
||||
"具体而言,基本信息对比涵盖了发表年份、文献类型、作者背景、引用量和影响因子等方面的异同。研究背景与目的部分比较了文献的核心研究问题、研究目标、理论框架和应用场景。方法论对比则详细描述并比较详细描述并比较两篇文献采用的研究方法、实验设计、数据分析技术等;评估方法的科学性与创新性。对比数据来源的异同;分析样本规模与特征(研究对象(如样本、地区、时间段)、对比研究范围(广度与深度))的异同;对比技术工具的异同(如有);分析文献中的创新点与局限性进行对比\n" +
|
||||
"在数据与结果对比中,报告列出了文献的关键指标,比较了主要发现或结论,并分析了结果的可重复性和争议点。最后,结论与贡献对比部分分析了文献核心结论的一致性、互补性或矛盾之处,讨论了文献的理论基础及其对本领域的贡献,并评估了文献在理论推进、方法创新或实践应用上的价值。\n" +
|
||||
"综合对比与结论部分总结了上述分析的核心异同点,评估了文献的相对优势与不足,以及对研究领域的共同贡献,并提出了可能的整合思路和未来研究的建议。参考文献和附录部分提供了支持分析的所有引用文献和补充材料。",
|
||||
"content":"报告标题:\n"
|
||||
"[文献A标题] vs [文献B标题] vs[更多文献标题]对比分析报告\n"
|
||||
"报告日期:\n"
|
||||
"[填写日期]\n"
|
||||
"编制人:\n"
|
||||
"[姓名/团队名称]\n"
|
||||
"一、引言\n"
|
||||
"简要介绍两篇文献的基本信息,包括作者、发表年份、期刊/出版社、主要研究领域或主题。\n"
|
||||
"说明进行文献对比的目的和意义。\n"
|
||||
"\n"
|
||||
"二、文献概述\n"
|
||||
"1.文献A概述\n"
|
||||
"主要研究内容\n"
|
||||
"研究方法/实验设计\n"
|
||||
"关键发现/结论\n"
|
||||
"学术贡献/应用价值\n"
|
||||
"2.文献B概述\n"
|
||||
"主要研究内容\n"
|
||||
"研究方法/实验设计\n"
|
||||
"关键发现/结论\n"
|
||||
"学术贡献/应用价值\n"
|
||||
"\n"
|
||||
"三、对比维度分析\n"
|
||||
"1.基本信息对比\n"
|
||||
"比较文献的发表年份、文献类型、作者背景、引用量、影响因子的异同。\n"
|
||||
"2.研究背景与目的\n"
|
||||
"比较文献的核心研究问题是否一致;\n"
|
||||
"比较研究目标的异同;\n"
|
||||
"比较理论框架和应用场景的异同\n"
|
||||
"3.方法论对比\n"
|
||||
"详细描述并比较两篇文献采用的研究方法、实验设计、数据分析技术等;\n"
|
||||
"评估方法的科学性与创新性。\n"
|
||||
"对比数据来源的异同;\n"
|
||||
"分析样本规模与特征(研究对象(如样本、地区、时间段)、\n"
|
||||
"对比研究范围(广度与深度))的异同;\n"
|
||||
"对比技术工具的异同(如有);\n"
|
||||
"分析文献中的创新点与局限性进行对比\n"
|
||||
"4.数据与结果对比\n"
|
||||
"列出并对比文献的关键指标;\n"
|
||||
"对比文献主要发现或结论;\n"
|
||||
"分析文献结果的可重复性;\n"
|
||||
"分析文献结果中产生的争议点\n"
|
||||
"5.结论与贡献对比\n"
|
||||
"分析文献核心结论的一致性、互补性或矛盾之处;\n"
|
||||
"讨论文献所依据的理论基础及其对本领域的贡献(在各自领域内的影响力);\n"
|
||||
"评估文献在理论推进、方法创新或实践应用上的价值;\n"
|
||||
"分析未来研究方向或面临的挑战\n"
|
||||
"\n"
|
||||
"四、综合对比与结论\n"
|
||||
"基于上述维度的分析,总结文献的核心异同点。\n"
|
||||
"评估两篇文献的相对优势与不足,以及对研究领域的共同贡献。\n"
|
||||
"提出可能的整合思路或对未来研究的建议。\n"
|
||||
"\n"
|
||||
"五、参考文献\n"
|
||||
"列出对比报告中引用的所有文献,确保格式统一、准确无误。\n"
|
||||
"\n"
|
||||
"五、附录(如有必要)\n"
|
||||
"包括详细的数据表格、图表、额外分析或计算过程等补充材料。"
|
||||
}
|
||||
]
|
||||
52
langchain-chat/configs/format_config.py
Normal file
52
langchain-chat/configs/format_config.py
Normal file
@@ -0,0 +1,52 @@
|
||||
# prompt模板使用Jinja2语法,简单点就是用双大括号代替f-string的单大括号
|
||||
# 本配置文件支持热加载,修改prompt模板后无需重启服务。
|
||||
|
||||
|
||||
FORMAT_TEMPLATES = {
|
||||
|
||||
"knowledge_base_chat": {
|
||||
"default":
|
||||
'',
|
||||
"abstract_format":
|
||||
'# XXXX(根据大纲的主旨命名的标题)\n'
|
||||
'# 第一章 研究概述\n'
|
||||
'## 一、研究背景及目的意义\n'
|
||||
'## 二、研究目标与预期成果\n'
|
||||
'### (一)研究目标\n'
|
||||
'1.XXXX\n'
|
||||
'### (二)主要研究内容\n'
|
||||
'1.XXXX\n'
|
||||
'### (三)预期成果\n'
|
||||
'1.XXXX\n'
|
||||
'## 三、研究方法与技术路线\n'
|
||||
'### (一)研究方法\n'
|
||||
'1.XXXX\n'
|
||||
'### (二)技术路线\n'
|
||||
'1.XXXX\n'
|
||||
'# 第二章 关于XXXX的研究\n'
|
||||
'## 一、XXXX\n'
|
||||
'### (一) XXXX\n'
|
||||
'1.XXXX\n'
|
||||
'# 第三章 关于XXX的研究\n'
|
||||
'## 一、XXXX\n'
|
||||
'### (一) XXXX\n'
|
||||
'1.XXXX\n'
|
||||
'# 第四章 关于XXXX的研究\n'
|
||||
'## 一、XXXX\n'
|
||||
'### (一) XXXX\n'
|
||||
'1.XXXX\n'
|
||||
'# 第五章 关于XXX的研究\n'
|
||||
'## 一、XXXX\n'
|
||||
'### (一) XXXX\n'
|
||||
'1.XXXX\n'
|
||||
'# 第六章 研究结论与咨询建议\n'
|
||||
'## 一、XXXX\n'
|
||||
'### (一) XXXX\n'
|
||||
'1.XXXX\n'
|
||||
'# 项目组成员名单\n'
|
||||
'1.XXXX;2.XXXX;3.XXXX\n'
|
||||
'# 附件\n'
|
||||
'1.XXXX;2.XXXX;3.XXXX\n'
|
||||
'注意: 请根据 {{ context}} 和 {{question}}补全相应“XXXX”的部分。\n',
|
||||
}
|
||||
}
|
||||
306
langchain-chat/configs/kb_config.py
Normal file
306
langchain-chat/configs/kb_config.py
Normal file
@@ -0,0 +1,306 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
# 默认使用的知识库
|
||||
# DEFAULT_KNOWLEDGE_BASE = "t_policy_total_bge_v1"
|
||||
SELF_KNOWLEDGE_BASE = re.compile(r'^p_.*') # 个人知识库名称
|
||||
DEFAULT_KNOWLEDGE_BASE = "t_policy_total_bge_new_v2"
|
||||
DEFAULT_POLICY_BASE = DEFAULT_KNOWLEDGE_BASE #"t_policy_total_bge_new_v2"
|
||||
DEFAULT_POLICY_BASE_NAME = "政策库"
|
||||
DEFAULT_REPORT_BASE1 = DEFAULT_KNOWLEDGE_BASE # "t_strategy_report_bge_v2"
|
||||
DEFAULT_REPORT_BASE = DEFAULT_KNOWLEDGE_BASE #"gydemo_report_v2"
|
||||
DEFAULT_REPORT_BASE_NAME = "报告库"
|
||||
DEFAULT_JOURNAL_BASE = DEFAULT_KNOWLEDGE_BASE #"t_journal_article_bge_v1"
|
||||
DEFAULT_JOURNAL_BASE_NAME = "期刊论文库"
|
||||
GY_NEWS_BASE = DEFAULT_KNOWLEDGE_BASE #"gydemo_news_v2"
|
||||
GY_NEWS_BASE_NAME = "冶金行业新闻库"
|
||||
GY_REPORT_BASE = DEFAULT_KNOWLEDGE_BASE #"gydemo_report_v2"
|
||||
GY_REPORT_BASE_NAME = "冶金行业报告库"
|
||||
GY_JOURNAL_BASE = DEFAULT_KNOWLEDGE_BASE #"gy_demo_journal_v3"
|
||||
GY_JOURNAL_BASE_NAME = "冶金专业知识库"
|
||||
OLD_POLICY_BASE = ['t_policy_total_bge_v1','t_policy_total_bge_new_v1']
|
||||
|
||||
# 默认向量库/全文检索引擎类型。可选:faiss, milvus(离线) & zilliz(在线), pgvector, chromadb 全文检索引擎es
|
||||
DEFAULT_VS_TYPE = "milvus"
|
||||
|
||||
# 新增冶金系列知识库常量
|
||||
YJ_CH_JOURNAL_BASE = DEFAULT_KNOWLEDGE_BASE #"yj_ch_journal_bge_v1_recover"
|
||||
YJ_CH_JOURNAL_BASE_NAME = "冶金中文期刊库"
|
||||
|
||||
YJ_NEWS_BASE = DEFAULT_KNOWLEDGE_BASE #"yj_news_bge_v1_recover"
|
||||
YJ_NEWS_BASE_NAME = "冶金新闻库(2024年以及之前)"
|
||||
|
||||
YJ_FOR_JOURNAL_BASE = DEFAULT_KNOWLEDGE_BASE #"yj_for_journal_bge_v1_recover"
|
||||
YJ_FOR_JOURNAL_BASE_NAME = "冶金外文期刊库"
|
||||
|
||||
YJ_OA_JOURNAL_BASE = DEFAULT_KNOWLEDGE_BASE #"yj_oa_journal_bge_v2_recover"
|
||||
YJ_OA_JOURNAL_BASE_NAME = "冶金OA期刊库"
|
||||
|
||||
YJ_POLICYS_BASE = DEFAULT_KNOWLEDGE_BASE #"yj_policys_bge_v1_recover"
|
||||
YJ_POLICYS_BASE_NAME = "冶金政策库"
|
||||
|
||||
# 专门的冶金新闻/期刊/报告可在此追加,如有需要
|
||||
YJ_BASE_NAME = [YJ_CH_JOURNAL_BASE_NAME, YJ_NEWS_BASE_NAME, YJ_FOR_JOURNAL_BASE_NAME, YJ_OA_JOURNAL_BASE_NAME, YJ_POLICYS_BASE_NAME]
|
||||
|
||||
CH_BASE_NAME = (
|
||||
DEFAULT_POLICY_BASE_NAME,
|
||||
DEFAULT_JOURNAL_BASE_NAME,
|
||||
GY_NEWS_BASE_NAME,
|
||||
GY_REPORT_BASE_NAME,
|
||||
GY_JOURNAL_BASE_NAME,
|
||||
DEFAULT_REPORT_BASE_NAME,
|
||||
)
|
||||
EN_BASE_NAME = [
|
||||
DEFAULT_POLICY_BASE,
|
||||
DEFAULT_REPORT_BASE,
|
||||
DEFAULT_REPORT_BASE1,
|
||||
DEFAULT_JOURNAL_BASE,
|
||||
GY_NEWS_BASE,
|
||||
GY_REPORT_BASE,
|
||||
GY_JOURNAL_BASE,
|
||||
YJ_CH_JOURNAL_BASE,
|
||||
YJ_NEWS_BASE,
|
||||
YJ_FOR_JOURNAL_BASE,
|
||||
YJ_OA_JOURNAL_BASE,
|
||||
YJ_POLICYS_BASE,
|
||||
]
|
||||
GY_BASE_NAME = [GY_NEWS_BASE,GY_REPORT_BASE,GY_JOURNAL_BASE]
|
||||
|
||||
OLD_JOURNAL_BASE = ['t_journal_article_bge_v0']
|
||||
|
||||
# 缓存向量库数量(针对FAISS)
|
||||
CACHED_VS_NUM = 1
|
||||
|
||||
# 缓存临时向量库数量(针对FAISS),用于文件对话
|
||||
CACHED_MEMO_VS_NUM = 10
|
||||
|
||||
# 知识库中单段文本长度(不适用MarkdownHeaderTextSplitter)
|
||||
CHUNK_SIZE = 250
|
||||
|
||||
# 知识库中相邻文本重合长度(不适用MarkdownHeaderTextSplitter)
|
||||
OVERLAP_SIZE = 50
|
||||
|
||||
# 知识库匹配向量数量
|
||||
VECTOR_SEARCH_TOP_K = 5
|
||||
|
||||
# 知识库匹配的距离阈值,一般取值范围在0-1之间,SCORE越小,距离越小从而相关度越高。
|
||||
# 但有用户报告遇到过匹配分值超过1的情况,为了兼容性默认设为1,在WEBUI中调整范围为0-2
|
||||
SCORE_THRESHOLD = 1.0
|
||||
|
||||
# zsj:增加重复文档相似度阈值,0-1取值,阈值越大越相似
|
||||
DUPLICATE_THRESHOLD = 0.98
|
||||
|
||||
# 默认搜索引擎。可选:bing, duckduckgo, metaphor
|
||||
# DEFAULT_SEARCH_ENGINE = "duckduckgo"
|
||||
DEFAULT_SEARCH_ENGINE = "duckduckgo" # 本地未部署 KGO 搜索时用 duckduckgo;自建搜索后再改为 kgo
|
||||
kgo_search_url = r"http://127.0.0.1:10326/search/search" # 若部署 KGO 搜索服务可改端口
|
||||
kgo_professional_search_url = r"http://127.0.0.1:8327/search/professionalSearch"
|
||||
|
||||
# 画图接口
|
||||
realistic_url = r"http://127.0.0.1:5000/generate"
|
||||
ink_url = r"http://127.0.0.1:5000/generate-image"
|
||||
|
||||
# mysql配置
|
||||
ck_mysql_config = {
|
||||
"host": "127.0.0.1",
|
||||
"port": 33306,
|
||||
"user": "root",
|
||||
"password": "1234567890",
|
||||
"database": "chat_gpt_yj",
|
||||
"charset": "utf8mb4",
|
||||
}
|
||||
|
||||
# 搜索引擎匹配结题数量
|
||||
SEARCH_ENGINE_TOP_K = 3
|
||||
|
||||
DOWNLOAD_HOST_CK = r"http://127.0.0.1:8099/chat_web_backend"
|
||||
KB_ROOT_PATH2 = Path(__file__).resolve().parent.parent / "knowledge_base"
|
||||
|
||||
# 相关度对比接口
|
||||
similarity_url = r"http://127.0.0.1:5000/similar"
|
||||
similarity_score = 0.4 # 知识库搜索相关度阈值
|
||||
similarity_internet = 0.5 # 互联网搜索相关度阈值
|
||||
# Bing 搜索必备变量
|
||||
# 使用 Bing 搜索需要使用 Bing Subscription Key,需要在azure port中申请试用bing search
|
||||
# 具体申请方式请见
|
||||
# https://learn.microsoft.com/en-us/bing/search-apis/bing-web-search/create-bing-search-service-resource
|
||||
# 使用python创建bing api 搜索实例详见:
|
||||
# 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 Webmaster Tools的api key,
|
||||
|
||||
# 此外,如果是在服务器上,报Failed to establish a new connection: [Errno 110] Connection timed out
|
||||
# 是因为服务器加了防火墙,需要联系管理员加白名单,如果公司的服务器的话,就别想了GG
|
||||
BING_SUBSCRIPTION_KEY = ""
|
||||
|
||||
# metaphor搜索需要KEY
|
||||
METAPHOR_API_KEY = "e09d3cdd-e7e1-41d7-a419-6b298002d921"
|
||||
|
||||
# 心知天气 API KEY,用于天气Agent。申请:https://www.seniverse.com/
|
||||
SENIVERSE_API_KEY = "STNmmw0iUKB96PNpJ"
|
||||
|
||||
# 是否开启中文标题加强,以及标题增强的相关配置
|
||||
# 通过增加标题判断,判断哪些文本为标题,并在metadata中进行标记;
|
||||
# 然后将文本与往上一级的标题进行拼合,实现文本信息的增强。
|
||||
ZH_TITLE_ENHANCE = False
|
||||
|
||||
# PDF OCR 控制:只对宽高超过页面一定比例(图片宽/页面宽,图片高/页面高)的图片进行 OCR。
|
||||
# 这样可以避免 PDF 中一些小图片的干扰,提高非扫描版 PDF 处理速度
|
||||
PDF_OCR_THRESHOLD = (0.6, 0.6)
|
||||
|
||||
# 每个知识库的初始化介绍,用于在初始化知识库时显示和Agent调用,没写则没有介绍,不会被Agent调用。
|
||||
KB_INFO = {
|
||||
"知识库名称": "知识库介绍",
|
||||
"samples": "关于本项目issue的解答",
|
||||
}
|
||||
|
||||
# 个人知识库配置
|
||||
SELF_SCORE_THRESHOLD = 1.9
|
||||
SELF_TOP_K = 5
|
||||
SELF_TEMPERATURE = 0.3
|
||||
SELF_MAX_TOKENS = 8192
|
||||
SELF_USE_RERANKER = False # 使用milvus不需要rerank,因为milvus已经给召回结果添加了评分排序
|
||||
GENERATED_IMAGES_BASE_PATH = "/home/albert/workspaces/modelSpaces/models/text_to_pic/generated_images"
|
||||
IMAGE_SERVER_URL_TEMPLATE = "http://127.0.0.1:8099/chat_web_backend/get-image?file_name={}"
|
||||
KB_CHAT_TEMP_DIR = "/home/albert/workspaces/modelSpaces/models/tmp"
|
||||
# 谷歌浏览器存放地址 页面数据抓取
|
||||
CHROME_DIR = "/home/albert/workspaces/modelSpaces/models/chrome"
|
||||
|
||||
# 通常情况下不需要更改以下内容
|
||||
|
||||
# 知识库默认存储路径
|
||||
KB_ROOT_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "knowledge_base")
|
||||
if not os.path.exists(KB_ROOT_PATH):
|
||||
os.mkdir(KB_ROOT_PATH)
|
||||
|
||||
# PDF→Markdown 外部微服务(file_converter.pdf_to_html)。
|
||||
# 客户端切勿使用 http://0.0.0.0:...:0.0.0.0 仅用于 bind,作为请求 URL 时 Host 异常,服务端常返回 403。
|
||||
def _normalize_pdf_convert_api_url(raw: str) -> str:
|
||||
u = (raw or "").strip() or "http://127.0.0.1:6006/convert/"
|
||||
u = u.replace("0.0.0.0", "127.0.0.1")
|
||||
return u
|
||||
|
||||
|
||||
PDF_CONVERT_API_URL = _normalize_pdf_convert_api_url(os.environ.get("PDF_CONVERT_API_URL", "http://127.0.0.1:6006/convert/"))
|
||||
# 传给转换服务的 pdf_path 相对此目录;需与微服务进程能读到的知识库根路径一致(不一致时设环境变量 PDF_CONVERT_KB_ROOT)
|
||||
PDF_CONVERT_KB_ROOT = os.path.abspath(os.environ.get("PDF_CONVERT_KB_ROOT", KB_ROOT_PATH))
|
||||
|
||||
|
||||
def get_pdf_convert_api_url() -> str:
|
||||
"""
|
||||
在发起 HTTP 请求前调用(勿仅用模块级 PDF_CONVERT_API_URL):
|
||||
优先读当前进程的 PDF_CONVERT_API_URL 环境变量,避免子进程/旧 .pyc 仍缓存 http://0.0.0.0:6006。
|
||||
"""
|
||||
env = os.environ.get("PDF_CONVERT_API_URL", "").strip()
|
||||
base = env if env else PDF_CONVERT_API_URL
|
||||
return _normalize_pdf_convert_api_url(str(base))
|
||||
# 数据库默认存储路径。
|
||||
# 如果使用sqlite,可以直接修改DB_ROOT_PATH;如果使用其它数据库,请直接修改SQLALCHEMY_DATABASE_URI。
|
||||
DB_ROOT_PATH = os.path.join(KB_ROOT_PATH, "info.db")
|
||||
SQLALCHEMY_DATABASE_URI = f"sqlite:///{DB_ROOT_PATH}"
|
||||
|
||||
# 可选向量库类型及对应配置
|
||||
kbs_config = {
|
||||
"faiss": {
|
||||
},
|
||||
"milvus": {
|
||||
"host": "127.0.0.1",
|
||||
"port": "19530",
|
||||
"user": "",
|
||||
"password": "",
|
||||
"db_name": "default",
|
||||
"secure": False,
|
||||
},
|
||||
"zilliz": {
|
||||
"host": "127.0.0.1",
|
||||
"port": "19530",
|
||||
"user": "",
|
||||
"password": "",
|
||||
"secure": False,
|
||||
},
|
||||
"pg": {
|
||||
"connection_uri": "postgresql://postgres:postgres@127.0.0.1:5432/langchain_chatchat",
|
||||
},
|
||||
"es": {
|
||||
"host": "127.0.0.1",
|
||||
"port": "9200",
|
||||
"index_name": "test_index",
|
||||
"user": "",
|
||||
"password": ""
|
||||
},
|
||||
"milvus_kwargs":{
|
||||
"search_params":{"metric_type": "L2"}, #在此处增加search_params
|
||||
"index_params":{"metric_type": "L2","index_type": "HNSW"} # 在此处增加index_params
|
||||
},
|
||||
"chromadb": {}
|
||||
}
|
||||
|
||||
# TextSplitter配置项,如果你不明白其中的含义,就不要修改。
|
||||
text_splitter_dict = {
|
||||
"ChineseRecursiveParagraphSplitter": {
|
||||
"source": "huggingface", # 选择tiktoken则使用openai的方法
|
||||
"tokenizer_name_or_path": "",
|
||||
},
|
||||
"ChineseRecursiveTextSplitter": {
|
||||
#"source": "huggingface", # 选择tiktoken则使用openai的方法
|
||||
"source": "no_tokenizer", # 选择tiktoken则使用openai的方法
|
||||
"tokenizer_name_or_path": "",
|
||||
},
|
||||
"SpacyTextSplitter": {
|
||||
"source": "huggingface",
|
||||
"tokenizer_name_or_path": "gpt2",
|
||||
},
|
||||
"RecursiveCharacterTextSplitter": {
|
||||
"source": "tiktoken",
|
||||
"tokenizer_name_or_path": "cl100k_base",
|
||||
},
|
||||
# "GCYMarkdownTextSplitter": {
|
||||
"MarkdownTextSplitter": {
|
||||
"headers_to_split_on":
|
||||
[
|
||||
("#", "head1"),
|
||||
("##", "head2"),
|
||||
("###", "head3"),
|
||||
("####", "head4"),
|
||||
]
|
||||
},
|
||||
}
|
||||
|
||||
TEXT_SPLITTER_MAP = {
|
||||
# "GCYMarkdownTextSplitter": ['.md'],
|
||||
"MarkdownTextSplitter": ['.md'],
|
||||
"ChineseRecursiveTextSplitter": ['.docx', '.doc', '.html'],
|
||||
}
|
||||
|
||||
# TEXT_SPLITTER 名称
|
||||
TEXT_SPLITTER_NAME = "ChineseRecursiveTextSplitter"
|
||||
|
||||
# Embedding模型定制词语的词表文件
|
||||
EMBEDDING_KEYWORD_FILE = "embedding_keywords.txt"
|
||||
|
||||
# 在新增知识库常量定义之后,扩充 CH_BASE_NAME 与 EN_BASE_NAME
|
||||
CH_BASE_NAME = CH_BASE_NAME + (
|
||||
YJ_CH_JOURNAL_BASE_NAME,
|
||||
YJ_NEWS_BASE_NAME,
|
||||
YJ_FOR_JOURNAL_BASE_NAME,
|
||||
YJ_OA_JOURNAL_BASE_NAME,
|
||||
YJ_POLICYS_BASE_NAME,
|
||||
)
|
||||
|
||||
EN_BASE_NAME.extend([
|
||||
YJ_CH_JOURNAL_BASE,
|
||||
YJ_NEWS_BASE,
|
||||
YJ_FOR_JOURNAL_BASE,
|
||||
YJ_OA_JOURNAL_BASE,
|
||||
YJ_POLICYS_BASE,
|
||||
])
|
||||
|
||||
# ********** 中国钢铁行业动态库(新增) **********
|
||||
# STEEL_KB = "steel_kb"
|
||||
STEEL_KB = DEFAULT_KNOWLEDGE_BASE #"steel_kb_token_chunk"
|
||||
STEEL_KB_NAME = "中国钢铁行业动态库"
|
||||
|
||||
# 更新中文名元组和英文名列表
|
||||
CH_BASE_NAME = CH_BASE_NAME + (STEEL_KB_NAME,)
|
||||
EN_BASE_NAME.append(STEEL_KB)
|
||||
141
langchain-chat/configs/kb_config.py.example
Normal file
141
langchain-chat/configs/kb_config.py.example
Normal file
@@ -0,0 +1,141 @@
|
||||
import os
|
||||
|
||||
# 默认使用的知识库
|
||||
DEFAULT_KNOWLEDGE_BASE = "samples"
|
||||
|
||||
# 默认向量库/全文检索引擎类型。可选:faiss, milvus(离线) & zilliz(在线), pgvector,全文检索引擎es
|
||||
DEFAULT_VS_TYPE = "faiss"
|
||||
|
||||
# 缓存向量库数量(针对FAISS)
|
||||
CACHED_VS_NUM = 1
|
||||
|
||||
# 缓存临时向量库数量(针对FAISS),用于文件对话
|
||||
CACHED_MEMO_VS_NUM = 10
|
||||
|
||||
# 知识库中单段文本长度(不适用MarkdownHeaderTextSplitter)
|
||||
CHUNK_SIZE = 250
|
||||
|
||||
# 知识库中相邻文本重合长度(不适用MarkdownHeaderTextSplitter)
|
||||
OVERLAP_SIZE = 50
|
||||
|
||||
# 知识库匹配向量数量
|
||||
VECTOR_SEARCH_TOP_K = 3
|
||||
|
||||
# 知识库匹配的距离阈值,取值范围在0-1之间,SCORE越小,距离越小从而相关度越高,
|
||||
# 取到1相当于不筛选,实测bge-large的距离得分大部分在0.01-0.7之间,
|
||||
# 相似文本的得分最高在0.55左右,因此建议针对bge设置得分为0.6
|
||||
SCORE_THRESHOLD = 0.6
|
||||
|
||||
# 默认搜索引擎。可选:bing, duckduckgo, metaphor
|
||||
DEFAULT_SEARCH_ENGINE = "duckduckgo"
|
||||
|
||||
# 搜索引擎匹配结题数量
|
||||
SEARCH_ENGINE_TOP_K = 3
|
||||
|
||||
|
||||
# Bing 搜索必备变量
|
||||
# 使用 Bing 搜索需要使用 Bing Subscription Key,需要在azure port中申请试用bing search
|
||||
# 具体申请方式请见
|
||||
# https://learn.microsoft.com/en-us/bing/search-apis/bing-web-search/create-bing-search-service-resource
|
||||
# 使用python创建bing api 搜索实例详见:
|
||||
# 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 Webmaster Tools的api key,
|
||||
|
||||
# 此外,如果是在服务器上,报Failed to establish a new connection: [Errno 110] Connection timed out
|
||||
# 是因为服务器加了防火墙,需要联系管理员加白名单,如果公司的服务器的话,就别想了GG
|
||||
BING_SUBSCRIPTION_KEY = ""
|
||||
|
||||
# metaphor搜索需要KEY
|
||||
METAPHOR_API_KEY = ""
|
||||
|
||||
|
||||
# 是否开启中文标题加强,以及标题增强的相关配置
|
||||
# 通过增加标题判断,判断哪些文本为标题,并在metadata中进行标记;
|
||||
# 然后将文本与往上一级的标题进行拼合,实现文本信息的增强。
|
||||
ZH_TITLE_ENHANCE = False
|
||||
|
||||
|
||||
# 每个知识库的初始化介绍,用于在初始化知识库时显示和Agent调用,没写则没有介绍,不会被Agent调用。
|
||||
KB_INFO = {
|
||||
"知识库名称": "知识库介绍",
|
||||
"samples": "关于本项目issue的解答",
|
||||
}
|
||||
|
||||
|
||||
# 通常情况下不需要更改以下内容
|
||||
|
||||
# 知识库默认存储路径
|
||||
KB_ROOT_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "knowledge_base")
|
||||
if not os.path.exists(KB_ROOT_PATH):
|
||||
os.mkdir(KB_ROOT_PATH)
|
||||
# 数据库默认存储路径。
|
||||
# 如果使用sqlite,可以直接修改DB_ROOT_PATH;如果使用其它数据库,请直接修改SQLALCHEMY_DATABASE_URI。
|
||||
DB_ROOT_PATH = os.path.join(KB_ROOT_PATH, "info.db")
|
||||
SQLALCHEMY_DATABASE_URI = f"sqlite:///{DB_ROOT_PATH}"
|
||||
|
||||
# 可选向量库类型及对应配置
|
||||
kbs_config = {
|
||||
"faiss": {
|
||||
},
|
||||
"milvus": {
|
||||
"host": "127.0.0.1",
|
||||
"port": "19530",
|
||||
"user": "",
|
||||
"password": "",
|
||||
"secure": False,
|
||||
},
|
||||
"zilliz": {
|
||||
"host": "in01-a7ce524e41e3935.ali-cn-hangzhou.vectordb.zilliz.com.cn",
|
||||
"port": "19530",
|
||||
"user": "",
|
||||
"password": "",
|
||||
"secure": True,
|
||||
},
|
||||
"pg": {
|
||||
"connection_uri": "postgresql://postgres:postgres@127.0.0.1:5432/langchain_chatchat",
|
||||
},
|
||||
|
||||
"es": {
|
||||
"host": "127.0.0.1",
|
||||
"port": "9200",
|
||||
"index_name": "test_index",
|
||||
"user": "",
|
||||
"password": ""
|
||||
},
|
||||
"milvus_kwargs":{
|
||||
"search_params":{"metric_type": "L2"}, #在此处增加search_params
|
||||
"index_params":{"metric_type": "L2","index_type": "HNSW"} # 在此处增加index_params
|
||||
}
|
||||
}
|
||||
|
||||
# TextSplitter配置项,如果你不明白其中的含义,就不要修改。
|
||||
text_splitter_dict = {
|
||||
"ChineseRecursiveTextSplitter": {
|
||||
"source": "huggingface", # 选择tiktoken则使用openai的方法
|
||||
"tokenizer_name_or_path": "",
|
||||
},
|
||||
"SpacyTextSplitter": {
|
||||
"source": "huggingface",
|
||||
"tokenizer_name_or_path": "gpt2",
|
||||
},
|
||||
"RecursiveCharacterTextSplitter": {
|
||||
"source": "tiktoken",
|
||||
"tokenizer_name_or_path": "cl100k_base",
|
||||
},
|
||||
"MarkdownHeaderTextSplitter": {
|
||||
"headers_to_split_on":
|
||||
[
|
||||
("#", "head1"),
|
||||
("##", "head2"),
|
||||
("###", "head3"),
|
||||
("####", "head4"),
|
||||
]
|
||||
},
|
||||
}
|
||||
|
||||
# TEXT_SPLITTER 名称
|
||||
TEXT_SPLITTER_NAME = "ChineseRecursiveTextSplitter"
|
||||
|
||||
# Embedding模型定制词语的词表文件
|
||||
EMBEDDING_KEYWORD_FILE = "embedding_keywords.txt"
|
||||
176
langchain-chat/configs/model_config.py
Normal file
176
langchain-chat/configs/model_config.py
Normal file
@@ -0,0 +1,176 @@
|
||||
import os
|
||||
|
||||
# 可以指定一个绝对路径,统一存放所有的Embedding和LLM模型。
|
||||
# 每个模型可以是一个单独的目录,也可以是某个目录下的二级子目录。
|
||||
# 如果模型目录名称和 MODEL_PATH 中的 key 或 value 相同,程序会自动检测加载,无需修改 MODEL_PATH 中的路径。
|
||||
MODEL_ROOT_PATH = "/home/gc/gangyan/models"
|
||||
|
||||
# 选用的 Embedding 名称
|
||||
EMBEDDING_MODEL = "bge-m3-api"
|
||||
|
||||
# 知识库表里或旧环境可能仍为本地键名;迁移内网 embedding API 后统一映射到 ONLINE_LLM_MODEL 的键
|
||||
EMBED_MODEL_ALIASES = {
|
||||
"bge_m3": "bge-m3-api",
|
||||
}
|
||||
|
||||
# LLM 名称别名映射:用于旧前端/历史数据仍请求无权限模型时的兼容与兜底
|
||||
# 例如内网网关令牌不允许 Qwen2-72B-Instruct,则统一转到 deepseek-v3
|
||||
LLM_MODEL_ALIASES = {
|
||||
"Qwen2-72B-Instruct": "deepseek-v3",
|
||||
}
|
||||
|
||||
# Embedding 模型运行设备。设为 "auto" 会自动检测(会有警告),也可手动设定为 "cuda","mps","cpu","xpu" 其中之一。
|
||||
EMBEDDING_DEVICE = "cpu"
|
||||
|
||||
# mivlus混合检索条件
|
||||
EXPR = ""
|
||||
|
||||
# 选用的reranker模型
|
||||
RERANKER_MODEL = "bge-reranker"
|
||||
# 是否启用reranker模型
|
||||
USE_RERANKER = False
|
||||
RERANKER_MAX_LENGTH = 1024
|
||||
|
||||
# 如果需要在 EMBEDDING_MODEL 中增加自定义的关键字时配置
|
||||
EMBEDDING_KEYWORD_FILE = "keywords.txt"
|
||||
EMBEDDING_MODEL_OUTPUT_PATH = "output"
|
||||
|
||||
#模型数据库的定义
|
||||
POLICY_KNOWLEDGE_BASE = "t_policy_total_bge_new_v2"
|
||||
# REPORT_KNOWLEDGE_BASE = "t_strategy_report_bge_v2"
|
||||
REPORT_KNOWLEDGE_BASE = "gydemo_report_v2"
|
||||
JOURNAL_KNOWLEDGE_BASE = "t_journal_article_bge_v1"
|
||||
|
||||
# 润色改写等功能相关模型设置
|
||||
STRATEGY_MODEL_DICT = {
|
||||
'DEFAULT_EXTRACT_KEYWORDS_MODEL_NAME': "deepseek-v3",
|
||||
'DEFAULT_QUERY_REWRITE_MODEL_NAME': "deepseek-v3",
|
||||
'DEFAULT_SUMMARY_MODEL_NAME': "deepseek-v3",
|
||||
'DEFAULT_RRQJ_MODEL_NAME': "deepseek-v3",
|
||||
'CONTINUE_WRITE_MODEL_NAME': "deepseek-v3",
|
||||
'REWRITE_MODEL_NAME': "deepseek-v3",
|
||||
'EXPAND_WRITE_MODEL_NAME': "deepseek-v3",
|
||||
'ABB_REWRITE_MODEL_NAME': "deepseek-v3",
|
||||
'EMBELLISH_MODEL_NAME': "deepseek-v3",
|
||||
'CHI_TO_ENS_MODEL_NAME': "deepseek-v3",
|
||||
'ENS_TO_CHI_MODEL_NAME': "deepseek-v3",
|
||||
'FORMAL_STYLE_MODEL_NAME': "deepseek-v3",
|
||||
'PARTY_STYLE_MODEL_NAME': "deepseek-v3",
|
||||
'COLLOQUIAL_STYLE_MODEL_NAME': "deepseek-v3",
|
||||
}
|
||||
|
||||
# 要运行的 LLM 名称,可以包括本地模型和在线模型。列表中本地模型将在启动项目时全部加载。
|
||||
# 列表中第一个模型将作为 API 和 WEBUI 的默认模型。
|
||||
# 在这里,使用目前主流的两个离线模型,其中,chatglm3-6b 为默认加载模型。
|
||||
# 如果你的显存不足,可使用 Qwen-1_8B-Chat, 该模型 FP16 仅需 3.8G显存。
|
||||
LLM_MODELS = ["deepseek-v3", "deepseek-r1", "deepseek-chat", "qwen-max", "Qwen2-72B-Instruct"]
|
||||
Agent_MODEL = None
|
||||
|
||||
# LLM 模型运行设备。设为"auto"会自动检测(会有警告),也可手动设定为 "cuda","mps","cpu","xpu" 其中之一。
|
||||
LLM_DEVICE = "cuda"
|
||||
|
||||
HISTORY_LEN = 20
|
||||
|
||||
MAX_TOKENS = None
|
||||
MAX_CUT_TOKENS = 30 * 1024
|
||||
|
||||
TEMPERATURE = 0.7
|
||||
DEEPSEEK_MODELS = ["deepseek-reasoner", "deepseek-chat"]
|
||||
CAST_MODELS = ["kexie_0.5b"]
|
||||
ONLINE_LLM_MODEL = {
|
||||
# 本地部署的大模型 API (10.102.24.75:3000)
|
||||
"bge-m3-api": {
|
||||
"model_name": "bge-m3",
|
||||
"api_base_url": "http://10.102.24.75:3000/v1",
|
||||
"api_key": "sk-nDr7vDHOxJQOGFxbmSE6g2wCK0WELtyZst4kD3eo4383P6j5",
|
||||
"provider": "OpenAIWorker",
|
||||
},
|
||||
"bge-reranker": {
|
||||
"model_name": "bge-reranker",
|
||||
"api_base_url": "http://10.102.24.75:3000/v1",
|
||||
"api_key": "sk-nDr7vDHOxJQOGFxbmSE6g2wCK0WELtyZst4kD3eo4383P6j5",
|
||||
"provider": "OpenAIWorker",
|
||||
},
|
||||
"deepseek-v3": {
|
||||
"model_name": "deepseek-v3",
|
||||
"api_base_url": "http://10.102.24.75:3000/v1",
|
||||
"api_key": "sk-BlQIGRrotbVDWE5mXCPBFjVWIvJ83hldzz67xInNwzVo7pPb",
|
||||
},
|
||||
"deepseek-r1": {
|
||||
"model_name": "deepseek-r1",
|
||||
"api_base_url": "http://10.102.24.75:3000/v1",
|
||||
"api_key": "sk-BlQIGRrotbVDWE5mXCPBFjVWIvJ83hldzz67xInNwzVo7pPb",
|
||||
},
|
||||
"Qwen2-72B-Instruct": {
|
||||
"model_name": "Qwen2-72B-Instruct",
|
||||
"api_base_url": "http://10.102.24.75:3000/v1",
|
||||
"api_key": "sk-BlQIGRrotbVDWE5mXCPBFjVWIvJ83hldzz67xInNwzVo7pPb",
|
||||
},
|
||||
# 阿里云通义千问
|
||||
# 文档参考 https://help.aliyun.com/zh/model-studio/qwen-api-reference/
|
||||
"qwen-max":{
|
||||
"model_name":"qwen-max",
|
||||
"api_base_url":"https://dashscope.aliyuncs.com/compatible-mode/v1",
|
||||
"api_key":"sk-672f9d1fc4404674bf1a713dfd130a14",
|
||||
},
|
||||
# deepseek
|
||||
"deepseek-chat":{
|
||||
# DeepSeek-V3.2
|
||||
"model_name":"deepseek-chat",
|
||||
"api_base_url":"https://api.deepseek.com/v1",
|
||||
"api_key":"sk-26858b50690a49828766fcfcf3290de9",
|
||||
},
|
||||
"deepseek-reasoner":{
|
||||
# DeepSeek-V3.2
|
||||
"model_name":"deepseek-reasoner",
|
||||
"api_base_url":"https://api.deepseek.com/v1",
|
||||
"api_key":"sk-26858b50690a49828766fcfcf3290de9",
|
||||
},
|
||||
# 智谱AI API,具体注册及api key获取请前往 http://open.bigmodel.cn
|
||||
"zhipu-api": {
|
||||
"api_key": "http://open.bigmodel.cn",
|
||||
"version": "glm-4",
|
||||
"provider": "ChatGLMWorker",
|
||||
},
|
||||
}
|
||||
|
||||
# 在以下字典中修改属性值,以指定本地embedding模型存储位置。支持3种设置方法:
|
||||
# 1、将对应的值修改为模型绝对路径
|
||||
# 2、不修改此处的值(以 text2vec 为例):
|
||||
# 2.1 如果{MODEL_ROOT_PATH}下存在如下任一子目录:
|
||||
# - text2vec
|
||||
# - GanymedeNil/text2vec-large-chinese
|
||||
# - text2vec-large-chinese
|
||||
# 2.2 如果以上本地路径不存在,则使用huggingface模型
|
||||
|
||||
MODEL_PATH = {
|
||||
"embed_model": {
|
||||
"bge_m3": "bge-m3",
|
||||
},
|
||||
"llm_model": {
|
||||
"deepseek-v3": "deepseek-v3",
|
||||
"deepseek-r1": "deepseek-r1",
|
||||
"qwen-max": "qwen-max",
|
||||
"deepseek-chat": "deepseek-chat",
|
||||
"deepseek-reasoner": "deepseek-reasoner",
|
||||
"Qwen2-72B-Instruct": "Qwen2-72B-Instruct"
|
||||
},
|
||||
"reranker": {
|
||||
"bge-reranker": "bge-reranker",
|
||||
"bge-reranker-large": "bge-reranker-large",
|
||||
}
|
||||
}
|
||||
|
||||
# 通常情况下不需要更改以下内容
|
||||
# nltk 模型存储路径
|
||||
NLTK_DATA_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "nltk_data")
|
||||
|
||||
# 使用VLLM可能导致模型推理能力下降,无法完成Agent任务
|
||||
VLLM_MODEL_DICT = {
|
||||
"chatglm3-6b": "chatglm3-6b",
|
||||
}
|
||||
|
||||
SUPPORT_AGENT_MODEL = [
|
||||
"Qwen", # 所有Qwen系列本地模型
|
||||
"chatglm3-6b"
|
||||
]
|
||||
342
langchain-chat/configs/model_config.py.example
Normal file
342
langchain-chat/configs/model_config.py.example
Normal file
@@ -0,0 +1,342 @@
|
||||
import os
|
||||
|
||||
# 可以指定一个绝对路径,统一存放所有的Embedding和LLM模型。
|
||||
# 每个模型可以是一个单独的目录,也可以是某个目录下的二级子目录。
|
||||
# 如果模型目录名称和 MODEL_PATH 中的 key 或 value 相同,程序会自动检测加载,无需修改 MODEL_PATH 中的路径。
|
||||
MODEL_ROOT_PATH = ""
|
||||
|
||||
# 选用的 Embedding 名称
|
||||
EMBEDDING_MODEL = "bge-large-zh"
|
||||
|
||||
# Embedding 模型运行设备。设为"auto"会自动检测,也可手动设定为"cuda","mps","cpu"其中之一。
|
||||
EMBEDDING_DEVICE = "auto"
|
||||
|
||||
# 选用的reranker模型
|
||||
RERANKER_MODEL = "bge-reranker-large"
|
||||
# 是否启用reranker模型
|
||||
USE_RERANKER = False
|
||||
RERANKER_MAX_LENGTH = 1024
|
||||
|
||||
# 如果需要在 EMBEDDING_MODEL 中增加自定义的关键字时配置
|
||||
EMBEDDING_KEYWORD_FILE = "keywords.txt"
|
||||
EMBEDDING_MODEL_OUTPUT_PATH = "output"
|
||||
|
||||
# 要运行的 LLM 名称,可以包括本地模型和在线模型。列表中本地模型将在启动项目时全部加载。
|
||||
# 列表中第一个模型将作为 API 和 WEBUI 的默认模型。
|
||||
# 在这里,我们使用目前主流的两个离线模型,其中,chatglm3-6b 为默认加载模型。
|
||||
# 如果你的显存不足,可使用 Qwen-1_8B-Chat, 该模型 FP16 仅需 3.8G显存。
|
||||
|
||||
# chatglm3-6b输出角色标签<|user|>及自问自答的问题详见项目wiki->常见问题->Q20.
|
||||
|
||||
#LLM_MODELS = ["chatglm3-6b", "zhipu-api", "openai-api"] # "Qwen-1_8B-Chat",
|
||||
LLM_MODELS = ["zhipu-api"]
|
||||
|
||||
# AgentLM模型的名称 (可以不指定,指定之后就锁定进入Agent之后的Chain的模型,不指定就是LLM_MODELS[0])
|
||||
Agent_MODEL = None
|
||||
|
||||
# LLM 运行设备。设为"auto"会自动检测,也可手动设定为"cuda","mps","cpu"其中之一。
|
||||
LLM_DEVICE = "auto"
|
||||
|
||||
# 历史对话轮数
|
||||
HISTORY_LEN = 3
|
||||
|
||||
# 大模型最长支持的长度,如果不填写,则使用模型默认的最大长度,如果填写,则为用户设定的最大长度
|
||||
MAX_TOKENS = None
|
||||
|
||||
# LLM通用对话参数
|
||||
TEMPERATURE = 0.7
|
||||
# TOP_P = 0.95 # ChatOpenAI暂不支持该参数
|
||||
|
||||
ONLINE_LLM_MODEL = {
|
||||
# 线上模型。请在server_config中为每个在线API设置不同的端口
|
||||
|
||||
"openai-api": {
|
||||
"model_name": "gpt-3.5-turbo",
|
||||
"api_base_url": "https://api.openai.com/v1",
|
||||
"api_key": "",
|
||||
"openai_proxy": "",
|
||||
},
|
||||
|
||||
# 具体注册及api key获取请前往 http://open.bigmodel.cn
|
||||
"zhipu-api": {
|
||||
"api_key": "52a0e0e0ec20405793dd4ca233b1b8ff.QrHL3Ls97q3e6zz0",
|
||||
"version": "chatglm_turbo", # 可选包括 "chatglm_turbo"、glm-4
|
||||
"provider": "ChatGLMWorker",
|
||||
},
|
||||
|
||||
|
||||
# 具体注册及api key获取请前往 https://api.minimax.chat/
|
||||
"minimax-api": {
|
||||
"group_id": "",
|
||||
"api_key": "",
|
||||
"is_pro": False,
|
||||
"provider": "MiniMaxWorker",
|
||||
},
|
||||
|
||||
|
||||
# 具体注册及api key获取请前往 https://xinghuo.xfyun.cn/
|
||||
"xinghuo-api": {
|
||||
"APPID": "",
|
||||
"APISecret": "",
|
||||
"api_key": "",
|
||||
"version": "v1.5", # 你使用的讯飞星火大模型版本,可选包括 "v3.0", "v1.5", "v2.0"
|
||||
"provider": "XingHuoWorker",
|
||||
},
|
||||
|
||||
# 百度千帆 API,申请方式请参考 https://cloud.baidu.com/doc/WENXINWORKSHOP/s/4lilb2lpf
|
||||
"qianfan-api": {
|
||||
"version": "ERNIE-Bot", # 注意大小写。当前支持 "ERNIE-Bot" 或 "ERNIE-Bot-turbo", 更多的见官方文档。
|
||||
"version_url": "", # 也可以不填写version,直接填写在千帆申请模型发布的API地址
|
||||
"api_key": "",
|
||||
"secret_key": "",
|
||||
"provider": "QianFanWorker",
|
||||
},
|
||||
|
||||
# 火山方舟 API,文档参考 https://www.volcengine.com/docs/82379
|
||||
"fangzhou-api": {
|
||||
"version": "chatglm-6b-model", # 当前支持 "chatglm-6b-model", 更多的见文档模型支持列表中方舟部分。
|
||||
"version_url": "", # 可以不填写version,直接填写在方舟申请模型发布的API地址
|
||||
"api_key": "",
|
||||
"secret_key": "",
|
||||
"provider": "FangZhouWorker",
|
||||
},
|
||||
|
||||
# 阿里云通义千问 API,文档参考 https://help.aliyun.com/zh/dashscope/developer-reference/api-details
|
||||
"qwen-api": {
|
||||
"version": "qwen-turbo", # 可选包括 "qwen-turbo", "qwen-plus"
|
||||
"api_key": "", # 请在阿里云控制台模型服务灵积API-KEY管理页面创建
|
||||
"provider": "QwenWorker",
|
||||
"embed_model": "text-embedding-v1" # embedding 模型名称
|
||||
},
|
||||
|
||||
# 百川 API,申请方式请参考 https://www.baichuan-ai.com/home#api-enter
|
||||
"baichuan-api": {
|
||||
"version": "Baichuan2-53B", # 当前支持 "Baichuan2-53B", 见官方文档。
|
||||
"api_key": "",
|
||||
"secret_key": "",
|
||||
"provider": "BaiChuanWorker",
|
||||
},
|
||||
|
||||
# Azure API
|
||||
"azure-api": {
|
||||
"deployment_name": "", # 部署容器的名字
|
||||
"resource_name": "", # https://{resource_name}.openai.azure.com/openai/ 填写resource_name的部分,其他部分不要填写
|
||||
"api_version": "", # API的版本,不是模型版本
|
||||
"api_key": "",
|
||||
"provider": "AzureWorker",
|
||||
},
|
||||
|
||||
# 昆仑万维天工 API https://model-platform.tiangong.cn/
|
||||
"tiangong-api": {
|
||||
"version": "SkyChat-MegaVerse",
|
||||
"api_key": "",
|
||||
"secret_key": "",
|
||||
"provider": "TianGongWorker",
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
# 在以下字典中修改属性值,以指定本地embedding模型存储位置。支持3种设置方法:
|
||||
# 1、将对应的值修改为模型绝对路径
|
||||
# 2、不修改此处的值(以 text2vec 为例):
|
||||
# 2.1 如果{MODEL_ROOT_PATH}下存在如下任一子目录:
|
||||
# - text2vec
|
||||
# - GanymedeNil/text2vec-large-chinese
|
||||
# - text2vec-large-chinese
|
||||
# 2.2 如果以上本地路径不存在,则使用huggingface模型
|
||||
MODEL_PATH = {
|
||||
"embed_model": {
|
||||
"ernie-tiny": "nghuyong/ernie-3.0-nano-zh",
|
||||
"ernie-base": "nghuyong/ernie-3.0-base-zh",
|
||||
"text2vec-base": "shibing624/text2vec-base-chinese",
|
||||
"text2vec": "GanymedeNil/text2vec-large-chinese",
|
||||
"text2vec-paraphrase": "shibing624/text2vec-base-chinese-paraphrase",
|
||||
"text2vec-sentence": "shibing624/text2vec-base-chinese-sentence",
|
||||
"text2vec-multilingual": "shibing624/text2vec-base-multilingual",
|
||||
"text2vec-bge-large-chinese": "shibing624/text2vec-bge-large-chinese",
|
||||
"m3e-small": "moka-ai/m3e-small",
|
||||
"m3e-base": "moka-ai/m3e-base",
|
||||
"m3e-large": "moka-ai/m3e-large",
|
||||
"bge-small-zh": "BAAI/bge-small-zh",
|
||||
"bge-base-zh": "BAAI/bge-base-zh",
|
||||
"bge-large-zh": "BAAI/bge-large-zh",
|
||||
"bge-large-zh-noinstruct": "BAAI/bge-large-zh-noinstruct",
|
||||
"bge-base-zh-v1.5": "BAAI/bge-base-zh-v1.5",
|
||||
"bge-large-zh-v1.5": "BAAI/bge-large-zh-v1.5",
|
||||
"piccolo-base-zh": "sensenova/piccolo-base-zh",
|
||||
"piccolo-large-zh": "sensenova/piccolo-large-zh",
|
||||
"nlp_gte_sentence-embedding_chinese-large": "damo/nlp_gte_sentence-embedding_chinese-large",
|
||||
"text-embedding-ada-002": "your OPENAI_API_KEY",
|
||||
},
|
||||
|
||||
"llm_model": {
|
||||
# 以下部分模型并未完全测试,仅根据fastchat和vllm模型的模型列表推定支持
|
||||
"chatglm2-6b": "THUDM/chatglm2-6b",
|
||||
"chatglm2-6b-32k": "THUDM/chatglm2-6b-32k",
|
||||
|
||||
"chatglm3-6b": "THUDM/chatglm3-6b",
|
||||
"chatglm3-6b-32k": "THUDM/chatglm3-6b-32k",
|
||||
"chatglm3-6b-base": "THUDM/chatglm3-6b-base",
|
||||
|
||||
"Qwen-1_8B": "Qwen/Qwen-1_8B",
|
||||
"Qwen-1_8B-Chat": "Qwen/Qwen-1_8B-Chat",
|
||||
"Qwen-1_8B-Chat-Int8": "Qwen/Qwen-1_8B-Chat-Int8",
|
||||
"Qwen-1_8B-Chat-Int4": "Qwen/Qwen-1_8B-Chat-Int4",
|
||||
|
||||
"Qwen-7B": "Qwen/Qwen-7B",
|
||||
"Qwen-7B-Chat": "Qwen/Qwen-7B-Chat",
|
||||
|
||||
"Qwen-14B": "Qwen/Qwen-14B",
|
||||
"Qwen-14B-Chat": "Qwen/Qwen-14B-Chat",
|
||||
|
||||
"Qwen-14B-Chat-Int8": "Qwen/Qwen-14B-Chat-Int8",
|
||||
# 在新版的transformers下需要手动修改模型的config.json文件,在quantization_config字典中
|
||||
# 增加`disable_exllama:true` 字段才能启动qwen的量化模型
|
||||
"Qwen-14B-Chat-Int4": "Qwen/Qwen-14B-Chat-Int4",
|
||||
|
||||
"Qwen-72B": "Qwen/Qwen-72B",
|
||||
"Qwen-72B-Chat": "Qwen/Qwen-72B-Chat",
|
||||
"Qwen-72B-Chat-Int8": "Qwen/Qwen-72B-Chat-Int8",
|
||||
"Qwen-72B-Chat-Int4": "Qwen/Qwen-72B-Chat-Int4",
|
||||
|
||||
"baichuan2-13b": "baichuan-inc/Baichuan2-13B-Chat",
|
||||
"baichuan2-7b": "baichuan-inc/Baichuan2-7B-Chat",
|
||||
|
||||
"baichuan-7b": "baichuan-inc/Baichuan-7B",
|
||||
"baichuan-13b": "baichuan-inc/Baichuan-13B",
|
||||
"baichuan-13b-chat": "baichuan-inc/Baichuan-13B-Chat",
|
||||
|
||||
"aquila-7b": "BAAI/Aquila-7B",
|
||||
"aquilachat-7b": "BAAI/AquilaChat-7B",
|
||||
|
||||
"internlm-7b": "internlm/internlm-7b",
|
||||
"internlm-chat-7b": "internlm/internlm-chat-7b",
|
||||
|
||||
"falcon-7b": "tiiuae/falcon-7b",
|
||||
"falcon-40b": "tiiuae/falcon-40b",
|
||||
"falcon-rw-7b": "tiiuae/falcon-rw-7b",
|
||||
|
||||
"gpt2": "gpt2",
|
||||
"gpt2-xl": "gpt2-xl",
|
||||
|
||||
"gpt-j-6b": "EleutherAI/gpt-j-6b",
|
||||
"gpt4all-j": "nomic-ai/gpt4all-j",
|
||||
"gpt-neox-20b": "EleutherAI/gpt-neox-20b",
|
||||
"pythia-12b": "EleutherAI/pythia-12b",
|
||||
"oasst-sft-4-pythia-12b-epoch-3.5": "OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5",
|
||||
"dolly-v2-12b": "databricks/dolly-v2-12b",
|
||||
"stablelm-tuned-alpha-7b": "stabilityai/stablelm-tuned-alpha-7b",
|
||||
|
||||
"Llama-2-13b-hf": "meta-llama/Llama-2-13b-hf",
|
||||
"Llama-2-70b-hf": "meta-llama/Llama-2-70b-hf",
|
||||
"open_llama_13b": "openlm-research/open_llama_13b",
|
||||
"vicuna-13b-v1.3": "lmsys/vicuna-13b-v1.3",
|
||||
"koala": "young-geng/koala",
|
||||
|
||||
"mpt-7b": "mosaicml/mpt-7b",
|
||||
"mpt-7b-storywriter": "mosaicml/mpt-7b-storywriter",
|
||||
"mpt-30b": "mosaicml/mpt-30b",
|
||||
"opt-66b": "facebook/opt-66b",
|
||||
"opt-iml-max-30b": "facebook/opt-iml-max-30b",
|
||||
|
||||
"agentlm-7b": "THUDM/agentlm-7b",
|
||||
"agentlm-13b": "THUDM/agentlm-13b",
|
||||
"agentlm-70b": "THUDM/agentlm-70b",
|
||||
|
||||
"Yi-34B-Chat": "01-ai/Yi-34B-Chat",
|
||||
},
|
||||
"reranker":{
|
||||
"bge-reranker-large":"BAAI/bge-reranker-large",
|
||||
"bge-reranker-base":"BAAI/bge-reranker-base",
|
||||
#TODO 增加在线reranker,如cohere
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# 通常情况下不需要更改以下内容
|
||||
|
||||
# nltk 模型存储路径
|
||||
NLTK_DATA_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "nltk_data")
|
||||
|
||||
VLLM_MODEL_DICT = {
|
||||
"aquila-7b": "BAAI/Aquila-7B",
|
||||
"aquilachat-7b": "BAAI/AquilaChat-7B",
|
||||
|
||||
"baichuan-7b": "baichuan-inc/Baichuan-7B",
|
||||
"baichuan-13b": "baichuan-inc/Baichuan-13B",
|
||||
"baichuan-13b-chat": "baichuan-inc/Baichuan-13B-Chat",
|
||||
|
||||
"chatglm2-6b": "THUDM/chatglm2-6b",
|
||||
"chatglm2-6b-32k": "THUDM/chatglm2-6b-32k",
|
||||
"chatglm3-6b": "THUDM/chatglm3-6b",
|
||||
"chatglm3-6b-32k": "THUDM/chatglm3-6b-32k",
|
||||
|
||||
"BlueLM-7B-Chat": "vivo-ai/BlueLM-7B-Chat",
|
||||
"BlueLM-7B-Chat-32k": "vivo-ai/BlueLM-7B-Chat-32k",
|
||||
|
||||
# 注意:bloom系列的tokenizer与model是分离的,因此虽然vllm支持,但与fschat框架不兼容
|
||||
# "bloom": "bigscience/bloom",
|
||||
# "bloomz": "bigscience/bloomz",
|
||||
# "bloomz-560m": "bigscience/bloomz-560m",
|
||||
# "bloomz-7b1": "bigscience/bloomz-7b1",
|
||||
# "bloomz-1b7": "bigscience/bloomz-1b7",
|
||||
|
||||
"internlm-7b": "internlm/internlm-7b",
|
||||
"internlm-chat-7b": "internlm/internlm-chat-7b",
|
||||
"falcon-7b": "tiiuae/falcon-7b",
|
||||
"falcon-40b": "tiiuae/falcon-40b",
|
||||
"falcon-rw-7b": "tiiuae/falcon-rw-7b",
|
||||
"gpt2": "gpt2",
|
||||
"gpt2-xl": "gpt2-xl",
|
||||
"gpt-j-6b": "EleutherAI/gpt-j-6b",
|
||||
"gpt4all-j": "nomic-ai/gpt4all-j",
|
||||
"gpt-neox-20b": "EleutherAI/gpt-neox-20b",
|
||||
"pythia-12b": "EleutherAI/pythia-12b",
|
||||
"oasst-sft-4-pythia-12b-epoch-3.5": "OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5",
|
||||
"dolly-v2-12b": "databricks/dolly-v2-12b",
|
||||
"stablelm-tuned-alpha-7b": "stabilityai/stablelm-tuned-alpha-7b",
|
||||
"Llama-2-13b-hf": "meta-llama/Llama-2-13b-hf",
|
||||
"Llama-2-70b-hf": "meta-llama/Llama-2-70b-hf",
|
||||
"open_llama_13b": "openlm-research/open_llama_13b",
|
||||
"vicuna-13b-v1.3": "lmsys/vicuna-13b-v1.3",
|
||||
"koala": "young-geng/koala",
|
||||
"mpt-7b": "mosaicml/mpt-7b",
|
||||
"mpt-7b-storywriter": "mosaicml/mpt-7b-storywriter",
|
||||
"mpt-30b": "mosaicml/mpt-30b",
|
||||
"opt-66b": "facebook/opt-66b",
|
||||
"opt-iml-max-30b": "facebook/opt-iml-max-30b",
|
||||
|
||||
"Qwen-1_8B": "Qwen/Qwen-1_8B",
|
||||
"Qwen-1_8B-Chat": "Qwen/Qwen-1_8B-Chat",
|
||||
"Qwen-1_8B-Chat-Int8": "Qwen/Qwen-1_8B-Chat-Int8",
|
||||
"Qwen-1_8B-Chat-Int4": "Qwen/Qwen-1_8B-Chat-Int4",
|
||||
|
||||
"Qwen-7B": "Qwen/Qwen-7B",
|
||||
"Qwen-7B-Chat": "Qwen/Qwen-7B-Chat",
|
||||
|
||||
"Qwen-14B": "Qwen/Qwen-14B",
|
||||
"Qwen-14B-Chat": "Qwen/Qwen-14B-Chat",
|
||||
"Qwen-14B-Chat-Int8": "Qwen/Qwen-14B-Chat-Int8",
|
||||
"Qwen-14B-Chat-Int4": "Qwen/Qwen-14B-Chat-Int4",
|
||||
|
||||
"Qwen-72B": "Qwen/Qwen-72B",
|
||||
"Qwen-72B-Chat": "Qwen/Qwen-72B-Chat",
|
||||
"Qwen-72B-Chat-Int8": "Qwen/Qwen-72B-Chat-Int8",
|
||||
"Qwen-72B-Chat-Int4": "Qwen/Qwen-72B-Chat-Int4",
|
||||
|
||||
"agentlm-7b": "THUDM/agentlm-7b",
|
||||
"agentlm-13b": "THUDM/agentlm-13b",
|
||||
"agentlm-70b": "THUDM/agentlm-70b",
|
||||
|
||||
}
|
||||
|
||||
# 你认为支持Agent能力的模型,可以在这里添加,添加后不会出现可视化界面的警告
|
||||
# 经过我们测试,原生支持Agent的模型仅有以下几个
|
||||
SUPPORT_AGENT_MODEL = [
|
||||
"azure-api",
|
||||
"openai-api",
|
||||
"qwen-api",
|
||||
"Qwen",
|
||||
"chatglm3",
|
||||
"xinghuo-api",
|
||||
]
|
||||
6
langchain-chat/configs/oss_config.py
Normal file
6
langchain-chat/configs/oss_config.py
Normal file
@@ -0,0 +1,6 @@
|
||||
# ossconfig.py
|
||||
|
||||
access_key_id = 'LTAI5tKV3JEn6EX6eVeQjrYN'
|
||||
access_key_secret = 'CtMmajeabIVU6xjCVt6KCcWp9IcgD1'
|
||||
bucket_name = 'bj-large-models'
|
||||
endpoint = 'oss-cn-beijing.aliyuncs.com' # 例如: 'http://oss-cn-hangzhou.aliyuncs.com'
|
||||
818
langchain-chat/configs/outline_config.py
Normal file
818
langchain-chat/configs/outline_config.py
Normal file
@@ -0,0 +1,818 @@
|
||||
outlines=[
|
||||
{"index": 0,
|
||||
"title":"钢铁联合企业模式优化和清洁生产研究报告大纲模板",
|
||||
"summary": "这份报告主要属于钢铁工业中的“模式优化与清洁生产”领域。具体来说,它涉及以下几个方面:\n"
|
||||
|
||||
" **钢铁企业模式优化**:研究如何通过调整企业的生产流程和结构来提高效率、降低成本,并增强市场竞争力。\n"
|
||||
|
||||
" **清洁生产**:探讨如何在钢铁生产过程中减少资源消耗和污染排放,实现绿色化、低碳化和循环化的生产目标。\n"
|
||||
|
||||
" **流程工程学应用**:利用冶金流程工程学的理论来优化钢铁生产流程,提升生产的整体效能。\n"
|
||||
|
||||
" **案例分析**:通过对典型钢铁企业的实际生产模式进行分析,验证模式优化和清洁生产的效果。\n"
|
||||
|
||||
"这些内容结合在一起,旨在推动钢铁行业的可持续发展和技术进步。",
|
||||
"content":
|
||||
"# 钢铁研究报告大纲模板\n"
|
||||
"\n"
|
||||
"## 摘要\n"
|
||||
# " 简要概述研究背景、目的、方法和主要结论。\n"
|
||||
"\n"
|
||||
"## 引言\n"
|
||||
"### 研究背景\n"
|
||||
#" 钢铁工业面临的挑战与机遇\n"
|
||||
"### 研究目的\n"
|
||||
#" 钢铁企业模式优化与清洁生产的必要性\n"
|
||||
"### 研究意义\n"
|
||||
#" 对行业和社会的影响\n"
|
||||
"\n"
|
||||
"## 文献综述\n"
|
||||
"### 钢铁工业发展现状\n"
|
||||
#" 国内外钢铁工业的现状与趋势\n"
|
||||
"### 清洁生产的理论与实践\n"
|
||||
#" 清洁生产的定义、原则和应用\n"
|
||||
"\n"
|
||||
"## 研究方法\n"
|
||||
"### 研究设计\n"
|
||||
#" 研究框架与流程\n"
|
||||
"### 数据收集\n"
|
||||
#" 数据来源与收集方法\n"
|
||||
"### 数据分析\n"
|
||||
#" 分析工具与方法\n"
|
||||
"\n"
|
||||
"## 钢铁企业模式优化\n"
|
||||
"### 流程模式分析\n"
|
||||
#" 长材型与薄板型企业的流程模式\n"
|
||||
"### 模式优化策略**\n"
|
||||
#" 结构调整与技术创新\n"
|
||||
"\n"
|
||||
"## 清洁生产的实现\n"
|
||||
"### 清洁生产的边界与内涵**\n"
|
||||
#" 产品设计、制造过程、排放物处理\n"
|
||||
"### 流程结构优化的效果**\n"
|
||||
#" 对清洁生产的影响\n"
|
||||
"\n"
|
||||
"## 案例分析\n"
|
||||
"### 典型企业案例**\n"
|
||||
#" 企业模式优化与清洁生产的实践\n"
|
||||
"### 案例分析结果**\n"
|
||||
#" 成功经验与存在问题\n"
|
||||
"\n"
|
||||
"## 结论与建议\n"
|
||||
"## 研究结论**\n"
|
||||
#" 主要发现与结论\n"
|
||||
"## 政策建议**\n"
|
||||
#" 钢铁企业模式优化与清洁生产的建议\n"
|
||||
"\n"
|
||||
"## 参考文献\n"
|
||||
#" 列出所有引用的文献资料。\n"
|
||||
"\n"
|
||||
"## 附录\n"
|
||||
#" 附加数据、图表或其他补充材料。\n"
|
||||
"\n"
|
||||
#"希望这个模板能帮助您更好地组织和撰写钢铁研究报告!如果您有任何具体的需求或问题,请随时告诉我。"
|
||||
},
|
||||
{ "index": 1,
|
||||
"title":"钢铁工业主要固体废弃物资源化利用的现状与对策研究大纲模板",
|
||||
"summary": "这份报告模板主要涉及钢铁工业中的固体废弃物资源化利用领域。具体来说,它关注的是钢铁生产过程中产生的固体废弃物(如采矿废石、选矿尾矿、高炉渣、钢渣和含铁尘泥)的形成、排放、物理化学性质,以及这些废弃物的综合利用技术现状和资源化利用的对策与建议。这是钢铁工业中环境保护和资源循环利用的重要研究领域。",
|
||||
"content": "\n"
|
||||
"\n"
|
||||
"# 钢铁工业研究报告大纲\n"
|
||||
"\n"
|
||||
"## 前言\n"
|
||||
" 研究背景及意义\n"
|
||||
" 研究目标\n"
|
||||
" 研究内容\n"
|
||||
" 研究技术路线\n"
|
||||
"\n"
|
||||
"## 中国钢铁工业的产业现状\n"
|
||||
"### 中国钢铁工业概况\n"
|
||||
"### 中国钢铁工业地区产能分布\n"
|
||||
"### 中国重点钢铁企业产能及分布\n"
|
||||
"\n"
|
||||
"## 钢铁工业主要固体废弃物的形成与排放\n"
|
||||
"### 钢铁工业生产工艺流程及固废排放节点分析\n"
|
||||
"#### 铁矿采选业的工艺过程\n"
|
||||
"#### 钢铁的冶炼及压延加工业工艺流程\n"
|
||||
"### 钢铁工业主要固体废弃物的形成\n"
|
||||
"#### 采矿废石的形成\n"
|
||||
"#### 选矿尾矿的形成\n"
|
||||
"#### 高炉矿渣的形成\n"
|
||||
"#### 钢渣的形成\n"
|
||||
"#### 含铁尘泥的形成\n"
|
||||
"### 钢铁工业主要固体废弃物的排放\n"
|
||||
"#### 钢铁工业主要固体废弃物排放量的计算方法\n"
|
||||
"#### 钢铁工业主要固体废弃物排放量\n"
|
||||
"#### 中国钢铁工业固体废弃物地区分布\n"
|
||||
"\n"
|
||||
"## 钢铁工业主要固体废弃物的基本物理、化学性质\n"
|
||||
"### 采矿废石、选矿尾矿的基本物理、化学性质\n"
|
||||
"### 高炉渣的基本物理、化学性质\n"
|
||||
"### 钢渣的基本物理、化学性质\n"
|
||||
"### 含铁尘泥的基本物理、化学性质\n"
|
||||
"\n"
|
||||
"## 国内外钢铁工业主要固体废弃物综合利用的技术现状分析\n"
|
||||
"### 国内外采矿废石和选矿尾矿的资源化利用技术现状\n"
|
||||
"### 国内外高炉渣的资源化利用技术现状\n"
|
||||
"### 国内外钢渣的资源化利用技术现状\n"
|
||||
"### 国内外含铁尘泥的资源化利用技术现状\n"
|
||||
"\n"
|
||||
"## 制约中国钢铁工业固体废弃物资源化的关键问题分析\n"
|
||||
"\n"
|
||||
"## 实现钢铁工业固体废弃物资源化的技术途径\n"
|
||||
"### 采矿废石和选矿尾矿资源化的技术途径\n"
|
||||
"### 高炉渣资源化的技术途径\n"
|
||||
"### 钢渣资源化的技术途径\n"
|
||||
"### 含铁尘泥资源化的技术途径\n"
|
||||
"### 钢铁工业固体废弃物资源化利用的典型案例分析\n"
|
||||
"\n"
|
||||
"## 中国钢铁工业固体废弃物资源化的对策与建议\n"
|
||||
"\n"
|
||||
"## 参考文献\n"
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"title":"新世纪前20年中国钢铁工业的定位和发展战略大纲模板",
|
||||
"summary":"这份报告主要属于钢铁工业的战略发展和定位领域。它涵盖了国际和中国钢铁工业的发展现状、挑战、未来战略定位、以及发展目标和措施等内容。报告的重点在于分析钢铁工业在全球经济一体化背景下的发展趋势、技术进步、产业结构调整、以及可持续发展等方面。",
|
||||
"content":"# 钢铁研究报告大纲\n"
|
||||
"\n"
|
||||
"## 引言\n"
|
||||
# " 研究背景\n"
|
||||
# " 研究目的\n"
|
||||
# " 研究方法\n"
|
||||
"\n"
|
||||
"## 国际钢铁工业发展概况\n"
|
||||
"### 21世纪国际钢铁工业发展特点\n"
|
||||
# " 高速增长期\n"
|
||||
# " 技术进步\n"
|
||||
# " 可持续发展\n"
|
||||
"\n"
|
||||
"### 国际钢铁工业集团化趋势\n"
|
||||
# " 兼并与重组\n"
|
||||
# " 产业集中度\n"
|
||||
"\n"
|
||||
"### 国际钢铁企业竞争力分析\n"
|
||||
# " 企业规模\n"
|
||||
# " 技术创新\n"
|
||||
# " 环境友好\n"
|
||||
"\n"
|
||||
"## 中国钢铁工业现状与挑战\n"
|
||||
"### 新中国钢铁工业发展历程\n"
|
||||
# " 发展阶段\n"
|
||||
# " 产量变化\n"
|
||||
"\n"
|
||||
"### 20世纪90年代中国钢铁工业的崛起\n"
|
||||
# " 市场需求\n"
|
||||
# " 技术进步\n"
|
||||
"\n"
|
||||
"### 新世纪中国钢铁工业的进步\n"
|
||||
# " 布局与规模\n"
|
||||
# " 装备现代化\n"
|
||||
# " 产品结构调整\n"
|
||||
"\n"
|
||||
"### 中国钢铁工业面临的问题\n"
|
||||
# " 产业集中度低\n"
|
||||
# " 资源与环境压力\n"
|
||||
"\n"
|
||||
"## 中国钢铁工业的战略定位\n"
|
||||
"### 经济全球化下的定位\n"
|
||||
# " 基础产业\n"
|
||||
# " 内需为主\n"
|
||||
"\n"
|
||||
"### 推动循环经济\n"
|
||||
# " 资源节约\n"
|
||||
# " 环境友好\n"
|
||||
"\n"
|
||||
"### 提升国际竞争力\n"
|
||||
# " 技术创新\n"
|
||||
# " 企业重组\n"
|
||||
"\n"
|
||||
"## 未来发展战略与措施\n"
|
||||
"### 发展战略\n"
|
||||
# " 结构调整\n"
|
||||
# " 技术进步\n"
|
||||
"\n"
|
||||
"### 发展目标\n"
|
||||
# " 产能控制\n"
|
||||
# " 环境指标\n"
|
||||
"\n"
|
||||
"### 实施措施\n"
|
||||
# " 政策支持\n"
|
||||
# " 技术创新\n"
|
||||
"\n"
|
||||
"## 政策建议\n"
|
||||
# " 政府支持\n"
|
||||
# " 国际合作\n"
|
||||
# " 资源保障\n"
|
||||
"\n"
|
||||
"## 结论\n"
|
||||
# " 总结研究发现\n"
|
||||
# " 提出未来展望"
|
||||
"## 参考文献\n"
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"title":"促进我国建筑钢结构产业快速、健康发展的技术政策研究结题报告大纲模板",
|
||||
"summary":"这份报告主要属于建筑钢结构领域。它集中讨论了建筑钢结构产业的发展现状、技术政策、产业链、市场需求、以及未来发展展望等方面。报告涉及建筑钢结构在建筑行业中的应用、设计、制作、施工技术,以及与其他相关产业的关系。",
|
||||
"content":"# 钢铁研究报告大纲\n"
|
||||
"\n"
|
||||
"## 引言\n"
|
||||
# " 研究背景\n"
|
||||
# " 研究目的\n"
|
||||
# " 研究方法\n"
|
||||
"\n"
|
||||
"## 钢铁产业现状\n"
|
||||
# " 全球钢铁产业概况\n"
|
||||
# " 中国钢铁产业现状\n"
|
||||
# " 产量与消费\n"
|
||||
# " 主要企业与市场份额\n"
|
||||
"\n"
|
||||
"## 钢铁生产技术\n"
|
||||
# " 传统生产工艺\n"
|
||||
# " 新兴生产技术\n"
|
||||
# " 技术创新与发展趋势\n"
|
||||
"\n"
|
||||
"## 钢铁应用领域\n"
|
||||
# " 建筑行业\n"
|
||||
# " 汽车制造\n"
|
||||
# " 家电行业\n"
|
||||
# " 其他应用领域\n"
|
||||
"\n"
|
||||
"## 钢铁市场分析\n"
|
||||
# " 市场需求与供给\n"
|
||||
# " 价格趋势分析\n"
|
||||
# " 竞争格局\n"
|
||||
"\n"
|
||||
"## 钢铁产业的挑战与机遇\n"
|
||||
# " 环境与政策挑战\n"
|
||||
# " 技术与市场机遇\n"
|
||||
"\n"
|
||||
"## 未来发展展望\n"
|
||||
# " 产业发展趋势\n"
|
||||
# " 技术创新方向\n"
|
||||
# " 政策建议\n"
|
||||
"\n"
|
||||
"## 结论\n"
|
||||
# " 研究总结\n"
|
||||
# " 主要发现\n"
|
||||
# " 建议与对策\n"
|
||||
"\n"
|
||||
"## 参考文献\n"
|
||||
"\n"
|
||||
"## 附录\n"
|
||||
# " 数据表\n"
|
||||
# " 图表\n"
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"title":"我国钢铁、水泥、木材在加工过程中节约问题研究报告大纲模板",
|
||||
"summary":"这份报告主要涉及钢铁行业的资源利用与节能环保领域。具体包括:\n"
|
||||
"\n"
|
||||
" **资源储量与可供性**:讨论铁矿石、废钢、煤炭及焦煤、水资源等的储量和供需状况。\n"
|
||||
" **资源利用效率与能耗**:分析能源和水资源的利用效率及节能技术的应用。\n"
|
||||
" **主要污染物排放**:研究废气、废水、固体废物的排放现状及环保措施。\n"
|
||||
" **国内外差距与技术原因分析**:比较国内外在能源效率和技术装备上的差距。\n"
|
||||
" **政策建议与未来发展方向**:提出资源节约、环境保护政策及未来技术创新方向。\n"
|
||||
"\n"
|
||||
"这些内容表明报告关注的是钢铁行业的可持续发展、资源节约和环境保护等方面。",
|
||||
"content":"# 钢铁研究报告大纲模板\n"
|
||||
"\n"
|
||||
"## 摘要\n"
|
||||
# " 简要概述钢铁行业的现状、挑战和研究目的。\n"
|
||||
"\n"
|
||||
"## 国内外钢铁工业现状\n"
|
||||
"### 国际钢铁工业发展\n"
|
||||
# " 高速增长期\n"
|
||||
# " 集团化与可持续发展\n"
|
||||
"\n"
|
||||
"### 中国钢铁工业现状\n"
|
||||
# " 生产规模与增长\n"
|
||||
# " 技术进步与装备现代化\n"
|
||||
# " 产品结构调整\n"
|
||||
# " 节能降耗与环保进展\n"
|
||||
"\n"
|
||||
"## 资源储量与可供性\n"
|
||||
"### 铁矿石资源\n"
|
||||
# " 储量与进口依赖\n"
|
||||
# " 未来供需预测\n"
|
||||
"\n"
|
||||
"### 废钢资源\n"
|
||||
# " 资源可供性与利用现状\n"
|
||||
"\n"
|
||||
"### 煤炭及焦煤资源\n"
|
||||
# " 储量与供需状况\n"
|
||||
"\n"
|
||||
"### 水资源\n"
|
||||
# " 消耗与节约措施\n"
|
||||
"\n"
|
||||
"## 资源利用效率与能耗\n"
|
||||
"### 能源利用效率\n"
|
||||
# " 二次能源利用现状\n"
|
||||
# " 主要节能技术应用\n"
|
||||
"\n"
|
||||
"### 水资源利用效率\n"
|
||||
# " 新水消耗与回收利用\n"
|
||||
"\n"
|
||||
"## 主要污染物排放\n"
|
||||
"### 排放现状\n"
|
||||
# " 废气、废水、固体废物\n"
|
||||
"\n"
|
||||
"### 环保措施与成效\n"
|
||||
# " 污染控制与治理投资\n"
|
||||
"\n"
|
||||
"## 国内外差距与技术原因分析\n"
|
||||
"### 能源效率差距\n"
|
||||
# " 二次能源利用率\n"
|
||||
# " 低品质余热资源利用\n"
|
||||
"\n"
|
||||
"### 技术装备差距\n"
|
||||
# " 大型节能技术普及率\n"
|
||||
"\n"
|
||||
"## 政策建议与未来发展方向\n"
|
||||
"### 政策建议\n"
|
||||
# " 资源节约与环境保护政策\n"
|
||||
"\n"
|
||||
"### 未来发展方向\n"
|
||||
# " 技术创新与产业升级\n"
|
||||
"\n"
|
||||
"## 结论\n"
|
||||
# " 总结研究发现与建议\n"
|
||||
"\n"
|
||||
"## 参考文献\n"
|
||||
"## 附录\n"
|
||||
# " 数据表格与图表\n"
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"title":"钢结构住宅产业化咨询研究报告大纲模板",
|
||||
"summary":"这份报告主要涉及钢结构住宅产业化的研究领域。具体来说,它关注的是钢结构在住宅建筑中的应用及其产业化发展,包括钢结构住宅的特点、产业化背景、国内外发展历程、技术优势与不足、政策影响等方面。报告探讨了钢结构住宅在循环经济、环保、资源节约等方面的特征,以及如何通过政策和技术创新推动钢结构住宅的产业化进程。",
|
||||
"content":"# 钢铁研究报告大纲模板\n"
|
||||
"\n"
|
||||
"## 引言\n"
|
||||
"### 研究背景\n"
|
||||
"### 研究目的\n"
|
||||
"### 研究意义\n"
|
||||
"\n"
|
||||
"## 文献综述\n"
|
||||
"### 国内研究现状\n"
|
||||
"### 国外研究现状\n"
|
||||
"### 研究的不足与挑战\n"
|
||||
"\n"
|
||||
"## 研究方法\n"
|
||||
"### 研究设计\n"
|
||||
"### 数据收集\n"
|
||||
"### 数据分析方法\n"
|
||||
"\n"
|
||||
"## 钢铁产业现状分析\n"
|
||||
"### 全球钢铁产业概况\n"
|
||||
"### 中国钢铁产业现状\n"
|
||||
"### 钢铁产业链分析\n"
|
||||
"\n"
|
||||
"## 钢铁技术发展\n"
|
||||
"### 新型钢铁材料\n"
|
||||
"### 钢铁生产技术\n"
|
||||
"### 钢铁应用技术\n"
|
||||
"\n"
|
||||
"## 钢铁市场分析\n"
|
||||
"### 市场需求分析\n"
|
||||
"### 市场供给分析\n"
|
||||
"### 市场竞争分析\n"
|
||||
"\n"
|
||||
"## 钢铁产业政策\n"
|
||||
"### 政府政策支持\n"
|
||||
"### 环保政策影响\n"
|
||||
"## 贸易政策影响\n"
|
||||
"\n"
|
||||
"## 研究结果与讨论\n"
|
||||
"### 研究发现\n"
|
||||
"### 结果讨论\n"
|
||||
"### 研究局限性\n"
|
||||
"\n"
|
||||
"## 结论与建议\n"
|
||||
"### 研究结论\n"
|
||||
"### 政策建议\n"
|
||||
"### 未来研究方向\n"
|
||||
"\n"
|
||||
"## 参考文献\n"
|
||||
"\n"
|
||||
"## 附录\n"
|
||||
# " 附录A:数据表格\n"
|
||||
# " 附录B:调查问卷\n"
|
||||
# " 附录C:其他相关资料\n"
|
||||
},
|
||||
{
|
||||
"index": 6,
|
||||
"title":"钒钛产品发展应用战略研究报告大纲模板",
|
||||
"summary":"这份报告主要涉及钢铁领域中的**钒钛合金及其应用**。报告详细探讨了钒和钛在钢铁行业中的应用现状、技术发展、市场需求预测以及面临的问题和政策建议。钒和钛作为合金元素,广泛用于提高钢铁的强度、耐磨性和耐腐蚀性,因此这份报告属于钢铁行业中**合金材料及其应用**的研究领域。\n" ,
|
||||
"content": "# 钢铁研究报告大纲\n"
|
||||
"\n"
|
||||
"## 引言\n"
|
||||
"### 研究背景\n"
|
||||
# " 描述研究的背景。\n"
|
||||
"\n"
|
||||
"### 研究目的\n"
|
||||
# " 明确研究的具体目标。\n"
|
||||
"\n"
|
||||
"### 研究方法\n"
|
||||
# " 介绍研究所采用的方法。\n"
|
||||
"\n"
|
||||
"## 全球钢铁资源分布\n"
|
||||
"### 主要钢铁资源国家\n"
|
||||
# " 列出主要的钢铁资源国家。\n"
|
||||
"\n"
|
||||
"### 钢铁资源储量及分布图\n"
|
||||
# " 描述钢铁资源的储量及其分布。\n"
|
||||
"\n"
|
||||
"## 中国钢铁产业现状\n"
|
||||
"### 钢铁生产规模\n"
|
||||
# " 分析中国钢铁的生产规模。\n"
|
||||
"\n"
|
||||
"### 钢铁产业布局\n"
|
||||
# " 描述钢铁产业的布局情况。\n"
|
||||
"\n"
|
||||
"### 3 钢铁技术与应用现状\n"
|
||||
# " 讨论钢铁技术及其应用的现状。\n"
|
||||
"\n"
|
||||
"## 钢铁产品供需分析\n"
|
||||
"### 钢铁产品需求预测\n"
|
||||
# " 预测钢铁产品的需求。\n"
|
||||
"\n"
|
||||
"### 钢铁产品供给分析\n"
|
||||
# " 分析钢铁产品的供给情况。\n"
|
||||
"\n"
|
||||
"### 供需平衡及市场趋势\n"
|
||||
# " 讨论供需平衡及市场趋势。\n"
|
||||
"\n"
|
||||
"## 钢铁产业发展面临的问题\n"
|
||||
"### 资源利用率低\n"
|
||||
# " 讨论资源利用率低的问题。\n"
|
||||
"\n"
|
||||
"### 环境污染问题\n"
|
||||
# " 分析环境污染问题。\n"
|
||||
"\n"
|
||||
"### 技术水平差距\n"
|
||||
# " 讨论技术水平的差距。\n"
|
||||
"\n"
|
||||
"## 政策建议\n"
|
||||
"### 制定和完善节能减排标准\n"
|
||||
# " 提出节能减排标准的建议。\n"
|
||||
"\n"
|
||||
"### 提高资源综合利用率\n"
|
||||
# " 提出提高资源利用率的建议。\n"
|
||||
"\n"
|
||||
"### 鼓励技术创新与应用\n"
|
||||
# " 提出鼓励技术创新的建议。\n"
|
||||
"\n"
|
||||
"## 未来发展趋势\n"
|
||||
"### 钢铁产品结构优化\n"
|
||||
# " 讨论钢铁产品结构的优化。\n"
|
||||
"\n"
|
||||
"### 新技术与新工艺的应用\n"
|
||||
# " 讨论新技术与新工艺的应用。\n"
|
||||
"\n"
|
||||
"### 国际市场竞争力提升\n"
|
||||
# " 讨论提升国际市场竞争力的方法。\n"
|
||||
"\n"
|
||||
"## 结论\n"
|
||||
"### 研究总结\n"
|
||||
# " 总结研究的主要发现。\n"
|
||||
"\n"
|
||||
"### 未来展望\n"
|
||||
# " 讨论未来的发展展望。\n"
|
||||
"\n"
|
||||
"## 附录\n"
|
||||
"### 数据表格\n"
|
||||
# " 提供相关的数据表格。\n"
|
||||
"\n"
|
||||
"### 图表\n"
|
||||
# " 提供相关的图表。\n"
|
||||
"\n"
|
||||
"### 参考文献\n"
|
||||
# " 列出所有引用的文献资料。\n"
|
||||
},
|
||||
{
|
||||
"index": 7,
|
||||
"title":"特殊钢在先进设备制造业应用中的战略研究大纲模板",
|
||||
"summary":"这份报告主要属于**特殊钢**在**先进装备制造业**中的应用领域。特殊钢是钢铁材料中的一个重要分支,具有高技术含量和特殊性能,广泛应用于航空航天、新能源、轨道交通、新型汽车、海洋工程和环保装备等高端制造领域。报告重点分析了特殊钢在这些领域的应用现状、技术发展、市场需求以及产业链的战略地位和保障能力。" ,
|
||||
"content": "# 钢铁研究报告大纲模板\n"
|
||||
"\n"
|
||||
"## 引言\n"
|
||||
"### 研究背景\n"
|
||||
# " 描述研究的背景。\n"
|
||||
"\n"
|
||||
"### 研究目的\n"
|
||||
# " 明确研究的具体目标。\n"
|
||||
"\n"
|
||||
"### 研究意义\n"
|
||||
# " 阐述研究的重要性和意义。\n"
|
||||
"\n"
|
||||
"## 行业现状分析\n"
|
||||
"### 全球钢铁行业概况\n"
|
||||
# " 描述全球钢铁行业的总体情况。\n"
|
||||
"\n"
|
||||
"### 中国钢铁行业现状\n"
|
||||
# " 分析中国钢铁行业的现状。\n"
|
||||
"\n"
|
||||
"### 特殊钢在装备制造业中的应用现状\n"
|
||||
# " 讨论特殊钢在装备制造业中的应用情况。\n"
|
||||
"\n"
|
||||
"## 特殊钢的技术发展\n"
|
||||
"### 特殊钢的分类与特性\n"
|
||||
# " 介绍特殊钢的不同分类及其特性。\n"
|
||||
"\n"
|
||||
"### 特殊钢的生产工艺\n"
|
||||
# " 描述特殊钢的生产工艺。\n"
|
||||
"\n"
|
||||
"### 特殊钢的技术创新与突破\n"
|
||||
# " 讨论特殊钢技术的创新与突破。\n"
|
||||
"\n"
|
||||
"## 特殊钢在先进装备制造业中的应用\n"
|
||||
"### 航空航天领域\n"
|
||||
# " 特殊钢在航空航天领域的应用。\n"
|
||||
"\n"
|
||||
"### 新能源领域\n"
|
||||
# " 特殊钢在新能源领域的应用。\n"
|
||||
"\n"
|
||||
"### 轨道交通领域\n"
|
||||
# " 特殊钢在轨道交通领域的应用。\n"
|
||||
"\n"
|
||||
"### 新型汽车领域\n"
|
||||
# " 特殊钢在新型汽车领域的应用。\n"
|
||||
"\n"
|
||||
"### 海洋工程领域\n"
|
||||
# " 特殊钢在海洋工程领域的应用。\n"
|
||||
"\n"
|
||||
"### 环保装备领域\n"
|
||||
# " 特殊钢在环保装备领域的应用。\n"
|
||||
"\n"
|
||||
"## 特殊钢产业链分析\n"
|
||||
"### 上游原材料供应\n"
|
||||
# " 分析上游原材料的供应情况。\n"
|
||||
"\n"
|
||||
"### 中游生产制造\n"
|
||||
# " 描述中游生产制造的现状。\n"
|
||||
"\n"
|
||||
"### 下游应用市场\n"
|
||||
# " 讨论下游应用市场的情况。\n"
|
||||
"\n"
|
||||
"## 特殊钢的市场需求与前景\n"
|
||||
"### 国内市场需求分析\n"
|
||||
# " 分析国内市场的需求。\n"
|
||||
"\n"
|
||||
"### 国际市场需求分析\n"
|
||||
# " 分析国际市场的需求。\n"
|
||||
"\n"
|
||||
"### 市场发展趋势预测\n"
|
||||
# " 预测市场的发展趋势。\n"
|
||||
"\n"
|
||||
"## 特殊钢产业的挑战与机遇\n"
|
||||
"### 产业面临的主要挑战\n"
|
||||
# " 讨论产业面临的主要挑战。\n"
|
||||
"\n"
|
||||
"### 产业发展的机遇\n"
|
||||
# " 阐述产业发展的机遇。\n"
|
||||
"\n"
|
||||
"### 政策支持与行业标准\n"
|
||||
# " 讨论政策支持与行业标准。\n"
|
||||
"\n"
|
||||
"## 提升特殊钢保障能力的建议\n"
|
||||
"### 技术研发与创新\n"
|
||||
# " 提出技术研发与创新的建议。\n"
|
||||
"\n"
|
||||
"### 产业链协同发展\n"
|
||||
# " 提出产业链协同发展的建议。\n"
|
||||
"\n"
|
||||
"### 政策支持与引导\n"
|
||||
# " 提出政策支持与引导的建议。\n"
|
||||
"\n"
|
||||
"## 结论\n"
|
||||
"### 研究总结\n"
|
||||
# " 总结研究的主要发现。\n"
|
||||
"\n"
|
||||
"### 未来研究方向\n"
|
||||
# " 讨论未来的研究方向。\n"
|
||||
"\n"
|
||||
"## 参考文献\n"
|
||||
"### 文献列表\n"
|
||||
# " 列出所有引用的文献资料。\n"
|
||||
},
|
||||
{
|
||||
"index": 8,
|
||||
"title":"钢铁行业通用大纲模板",
|
||||
"summary":"钢铁行业通用大纲模板,如果问题是钢铁领域且上述详细模板都不符合要求再选择此模板",
|
||||
"content": "# 钢铁研究报告大纲模板\n"
|
||||
"\n"
|
||||
"## 摘要\n"
|
||||
"### 内容概述\n"
|
||||
# " 简要描述研究的背景、目的、方法和主要结论。\n"
|
||||
"\n"
|
||||
"### 创新点\n"
|
||||
# " 突出研究的创新之处及其对行业的贡献。\n"
|
||||
"\n"
|
||||
"## 引言\n"
|
||||
"### 研究背景\n"
|
||||
# " 描述钢铁工业面临的资源紧缺、环境制约、成本压力等挑战。\n"
|
||||
# " 讨论全球市场竞争和可持续发展的需求。\n"
|
||||
"\n"
|
||||
"### 研究目的\n"
|
||||
# " 明确研究的具体目标,如提高生产效率、降低环境影响等。\n"
|
||||
"\n"
|
||||
"### 研究意义\n"
|
||||
# " 阐述研究对行业结构调整、节能降耗、清洁生产的指导作用。\n"
|
||||
"\n"
|
||||
"## 文献综述\n"
|
||||
"### 国内外钢铁工业发展现状\n"
|
||||
# " 综述当前钢铁工业的现状与发展趋势。\n"
|
||||
# " 分析现有研究的不足之处。\n"
|
||||
"\n"
|
||||
"### 清洁生产与技术创新\n"
|
||||
# " 介绍清洁生产的定义、原则及其在钢铁行业的应用。\n"
|
||||
# " 讨论相关技术和方法的最新进展。\n"
|
||||
"\n"
|
||||
"## 研究方法\n"
|
||||
"### 研究设计\n"
|
||||
# " 描述研究框架与流程图。\n"
|
||||
# " 选择的研究方法论及其合理性。\n"
|
||||
"\n"
|
||||
"### 数据收集\n"
|
||||
# " 说明数据来源:行业报告、企业案例、实地调研等。\n"
|
||||
# " 描述数据收集方法:问卷调查、访谈、文献分析。\n"
|
||||
"\n"
|
||||
"### 数据分析\n"
|
||||
# " 介绍使用的分析工具与方法:统计分析、案例分析等。\n"
|
||||
"\n"
|
||||
"## 钢铁产业现状分析\n"
|
||||
"### 全球钢铁产业概况\n"
|
||||
# " 描述全球钢铁产业的总体情况。\n"
|
||||
"\n"
|
||||
"### 中国钢铁产业现状\n"
|
||||
# " 分析产量与消费情况。\n"
|
||||
# " 讨论主要企业与市场份额。\n"
|
||||
"\n"
|
||||
"## 钢铁技术发展\n"
|
||||
"### 新型钢铁材料\n"
|
||||
# " 介绍新型材料的研发与应用。\n"
|
||||
"\n"
|
||||
"### 钢铁生产技术\n"
|
||||
# " 描述生产技术的现状与创新。\n"
|
||||
"\n"
|
||||
"### 钢铁应用技术\n"
|
||||
# " 讨论钢铁在各领域的应用技术。\n"
|
||||
"\n"
|
||||
"## 钢铁市场分析\n"
|
||||
"### 市场需求与供给\n"
|
||||
# " 分析市场需求的变化趋势。\n"
|
||||
# " 讨论供给情况及其影响因素。\n"
|
||||
"\n"
|
||||
"### 价格趋势分析\n"
|
||||
# " 研究钢铁价格的历史趋势及未来预测。\n"
|
||||
"\n"
|
||||
"### 竞争格局\n"
|
||||
# " 分析市场竞争的主要参与者及其策略。\n"
|
||||
"\n"
|
||||
"## 钢铁产业的挑战与机遇\n"
|
||||
"### 环境与政策挑战\n"
|
||||
# " 讨论钢铁产业面临的环境和政策挑战。\n"
|
||||
"\n"
|
||||
"### 技术与市场机遇\n"
|
||||
# " 阐述技术创新和市场扩展的潜在机遇。\n"
|
||||
"\n"
|
||||
"## 未来发展展望\n"
|
||||
"### 产业发展趋势\n"
|
||||
# " 预测钢铁产业的未来发展方向。\n"
|
||||
"\n"
|
||||
"### 技术创新方向\n"
|
||||
# " 讨论未来可能的技术创新领域。\n"
|
||||
"\n"
|
||||
"### 政策建议\n"
|
||||
# " 提出对政府和行业的政策建议。\n"
|
||||
"\n"
|
||||
"## 结论与建议\n"
|
||||
"### 研究结论\n"
|
||||
# " 总结研究的主要发现与结论。\n"
|
||||
"\n"
|
||||
"### 政策建议\n"
|
||||
# " 针对钢铁企业模式优化与清洁生产的具体建议。\n"
|
||||
# " 对政府、行业协会的政策建议。\n"
|
||||
"\n"
|
||||
"## 参考文献\n"
|
||||
"### 文献列表\n"
|
||||
# " 列出所有引用的文献资料。\n"
|
||||
# " 确保引用的准确性和完整性。\n"
|
||||
"\n"
|
||||
"## 附录\n"
|
||||
"### 附加材料\n"
|
||||
# " 提供附加数据、图表或其他补充材料。\n"
|
||||
# " 提供详细的技术数据和分析结果。\n"
|
||||
},
|
||||
{
|
||||
"index": 9,
|
||||
"title":"行业通用大纲模板",
|
||||
"summary":"行业通用大纲模板",
|
||||
"content":"# 钢铁研究报告大纲模板\n"
|
||||
"# 钢铁研究报告大纲模板\n"
|
||||
"\n"
|
||||
"## 摘要\n"
|
||||
"### 内容概述\n"
|
||||
# " 简要描述研究的背景、目的、方法和主要结论。\n"
|
||||
"\n"
|
||||
"### 创新点\n"
|
||||
# " 突出研究的创新之处及其对行业的贡献。\n"
|
||||
"\n"
|
||||
"## 引言\n"
|
||||
"### 研究背景\n"
|
||||
# " 描述钢铁工业面临的资源紧缺、环境制约、成本压力等挑战。\n"
|
||||
# " 讨论全球市场竞争和可持续发展的需求。\n"
|
||||
"\n"
|
||||
"### 研究目的\n"
|
||||
# " 明确研究的具体目标,如提高生产效率、降低环境影响等。\n"
|
||||
"\n"
|
||||
"### 研究意义\n"
|
||||
# " 阐述研究对行业结构调整、节能降耗、清洁生产的指导作用。\n"
|
||||
"\n"
|
||||
"## 文献综述\n"
|
||||
"### 国内外钢铁工业发展现状\n"
|
||||
# " 综述当前钢铁工业的现状与发展趋势。\n"
|
||||
# " 分析现有研究的不足之处。\n"
|
||||
"\n"
|
||||
"### 清洁生产与技术创新\n"
|
||||
# " 介绍清洁生产的定义、原则及其在钢铁行业的应用。\n"
|
||||
# " 讨论相关技术和方法的最新进展。\n"
|
||||
"\n"
|
||||
"## 研究方法\n"
|
||||
"### 研究设计\n"
|
||||
# " 描述研究框架与流程图。\n"
|
||||
# " 选择的研究方法论及其合理性。\n"
|
||||
"\n"
|
||||
"### 数据收集\n"
|
||||
# " 说明数据来源:行业报告、企业案例、实地调研等。\n"
|
||||
# " 描述数据收集方法:问卷调查、访谈、文献分析。\n"
|
||||
"\n"
|
||||
"### 数据分析\n"
|
||||
# " 介绍使用的分析工具与方法:统计分析、案例分析等。\n"
|
||||
"\n"
|
||||
"## 钢铁产业现状分析\n"
|
||||
"### 全球钢铁产业概况\n"
|
||||
# " 描述全球钢铁产业的总体情况。\n"
|
||||
"\n"
|
||||
"### 中国钢铁产业现状\n"
|
||||
# " 分析产量与消费情况。\n"
|
||||
# " 讨论主要企业与市场份额。\n"
|
||||
"\n"
|
||||
"## 钢铁技术发展\n"
|
||||
"### 新型钢铁材料\n"
|
||||
# " 介绍新型材料的研发与应用。\n"
|
||||
"\n"
|
||||
"### 钢铁生产技术\n"
|
||||
# " 描述生产技术的现状与创新。\n"
|
||||
"\n"
|
||||
"### 钢铁应用技术\n"
|
||||
# " 讨论钢铁在各领域的应用技术。\n"
|
||||
"\n"
|
||||
"## 钢铁市场分析\n"
|
||||
"### 市场需求与供给\n"
|
||||
# " 分析市场需求的变化趋势。\n"
|
||||
# " 讨论供给情况及其影响因素。\n"
|
||||
"\n"
|
||||
"### 价格趋势分析\n"
|
||||
# " 研究钢铁价格的历史趋势及未来预测。\n"
|
||||
"\n"
|
||||
"### 竞争格局\n"
|
||||
# " 分析市场竞争的主要参与者及其策略。\n"
|
||||
"\n"
|
||||
"## 钢铁产业的挑战与机遇\n"
|
||||
"### 环境与政策挑战\n"
|
||||
# " 讨论钢铁产业面临的环境和政策挑战。\n"
|
||||
"\n"
|
||||
"### 技术与市场机遇\n"
|
||||
# " 阐述技术创新和市场扩展的潜在机遇。\n"
|
||||
"\n"
|
||||
"## 未来发展展望\n"
|
||||
"### 产业发展趋势\n"
|
||||
# " 预测钢铁产业的未来发展方向。\n"
|
||||
"\n"
|
||||
"### 技术创新方向\n"
|
||||
# " 讨论未来可能的技术创新领域。\n"
|
||||
"\n"
|
||||
"### 政策建议\n"
|
||||
# " 提出对政府和行业的政策建议。\n"
|
||||
"\n"
|
||||
"## 结论与建议\n"
|
||||
"### 研究结论\n"
|
||||
# " 总结研究的主要发现与结论。\n"
|
||||
"\n"
|
||||
"### 政策建议\n"
|
||||
# " 针对钢铁企业模式优化与清洁生产的具体建议。\n"
|
||||
# " 对政府、行业协会的政策建议。\n"
|
||||
"\n"
|
||||
"## 参考文献\n"
|
||||
"### 文献列表\n"
|
||||
# " 列出所有引用的文献资料。\n"
|
||||
# " 确保引用的准确性和完整性。\n"
|
||||
"\n"
|
||||
"## 附录\n"
|
||||
"### 附加材料\n"
|
||||
# " 提供附加数据、图表或其他补充材料。\n"
|
||||
# " 提供详细的技术数据和分析结果。\n"
|
||||
}
|
||||
]
|
||||
2579
langchain-chat/configs/prompt_config.py
Normal file
2579
langchain-chat/configs/prompt_config.py
Normal file
File diff suppressed because it is too large
Load Diff
127
langchain-chat/configs/prompt_config.py.example
Normal file
127
langchain-chat/configs/prompt_config.py.example
Normal file
@@ -0,0 +1,127 @@
|
||||
# prompt模板使用Jinja2语法,简单点就是用双大括号代替f-string的单大括号
|
||||
# 本配置文件支持热加载,修改prompt模板后无需重启服务。
|
||||
|
||||
# LLM对话支持的变量:
|
||||
# - input: 用户输入内容
|
||||
|
||||
# 知识库和搜索引擎对话支持的变量:
|
||||
# - context: 从检索结果拼接的知识文本
|
||||
# - question: 用户提出的问题
|
||||
|
||||
# Agent对话支持的变量:
|
||||
|
||||
# - tools: 可用的工具列表
|
||||
# - tool_names: 可用的工具名称列表
|
||||
# - history: 用户和Agent的对话历史
|
||||
# - input: 用户输入内容
|
||||
# - agent_scratchpad: Agent的思维记录
|
||||
|
||||
PROMPT_TEMPLATES = {
|
||||
"llm_chat": {
|
||||
"default":
|
||||
'{{ input }}',
|
||||
|
||||
"with_history":
|
||||
'The following is a friendly conversation between a human and an AI. '
|
||||
'The AI is talkative and provides lots of specific details from its context. '
|
||||
'If the AI does not know the answer to a question, it truthfully says it does not know.\n\n'
|
||||
'Current conversation:\n'
|
||||
'{history}\n'
|
||||
'Human: {input}\n'
|
||||
'AI:',
|
||||
|
||||
"py":
|
||||
'你是一个聪明的代码助手,请你给我写出简单的py代码。 \n'
|
||||
'{{ input }}',
|
||||
},
|
||||
|
||||
|
||||
"knowledge_base_chat": {
|
||||
"default":
|
||||
'<指令>根据已知信息,简洁和专业的来回答问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题”,'
|
||||
'不允许在答案中添加编造成分,答案请使用中文。 </指令>\n'
|
||||
'<已知信息>{{ context }}</已知信息>\n'
|
||||
'<问题>{{ question }}</问题>\n',
|
||||
|
||||
"text":
|
||||
'<指令>根据已知信息,简洁和专业的来回答问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题”,答案请使用中文。 </指令>\n'
|
||||
'<已知信息>{{ context }}</已知信息>\n'
|
||||
'<问题>{{ question }}</问题>\n',
|
||||
|
||||
"empty": # 搜不到知识库的时候使用
|
||||
'请你回答我的问题:\n'
|
||||
'{{ question }}\n\n',
|
||||
},
|
||||
|
||||
|
||||
"search_engine_chat": {
|
||||
"default":
|
||||
'<指令>这是我搜索到的互联网信息,请你根据这些信息进行提取并有调理,简洁的回答问题。'
|
||||
'如果无法从中得到答案,请说 “无法搜索到能回答问题的内容”。 </指令>\n'
|
||||
'<已知信息>{{ context }}</已知信息>\n'
|
||||
'<问题>{{ question }}</问题>\n',
|
||||
|
||||
"search":
|
||||
'<指令>根据已知信息,简洁和专业的来回答问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题”,答案请使用中文。 </指令>\n'
|
||||
'<已知信息>{{ context }}</已知信息>\n'
|
||||
'<问题>{{ question }}</问题>\n',
|
||||
},
|
||||
|
||||
|
||||
"agent_chat": {
|
||||
"default":
|
||||
'Answer the following questions as best you can. If it is in order, you can use some tools appropriately. '
|
||||
'You have access to the following tools:\n\n'
|
||||
'{tools}\n\n'
|
||||
'Use the following format:\n'
|
||||
'Question: the input question you must answer1\n'
|
||||
'Thought: you should always think about what to do and what tools to use.\n'
|
||||
'Action: the action to take, should be one of [{tool_names}]\n'
|
||||
'Action Input: the input to the action\n'
|
||||
'Observation: the result of the action\n'
|
||||
'... (this Thought/Action/Action Input/Observation can be repeated zero or more times)\n'
|
||||
'Thought: I now know the final answer\n'
|
||||
'Final Answer: the final answer to the original input question\n'
|
||||
'Begin!\n\n'
|
||||
'history: {history}\n\n'
|
||||
'Question: {input}\n\n'
|
||||
'Thought: {agent_scratchpad}\n',
|
||||
|
||||
"ChatGLM3":
|
||||
'You can answer using the tools, or answer directly using your knowledge without using the tools. '
|
||||
'Respond to the human as helpfully and accurately as possible.\n'
|
||||
'You have access to the following tools:\n'
|
||||
'{tools}\n'
|
||||
'Use a json blob to specify a tool by providing an action key (tool name) '
|
||||
'and an action_input key (tool input).\n'
|
||||
'Valid "action" values: "Final Answer" or [{tool_names}]'
|
||||
'Provide only ONE action per $JSON_BLOB, as shown:\n\n'
|
||||
'```\n'
|
||||
'{{{{\n'
|
||||
' "action": $TOOL_NAME,\n'
|
||||
' "action_input": $INPUT\n'
|
||||
'}}}}\n'
|
||||
'```\n\n'
|
||||
'Follow this format:\n\n'
|
||||
'Question: input question to answer\n'
|
||||
'Thought: consider previous and subsequent steps\n'
|
||||
'Action:\n'
|
||||
'```\n'
|
||||
'$JSON_BLOB\n'
|
||||
'```\n'
|
||||
'Observation: action result\n'
|
||||
'... (repeat Thought/Action/Observation N times)\n'
|
||||
'Thought: I know what to respond\n'
|
||||
'Action:\n'
|
||||
'```\n'
|
||||
'{{{{\n'
|
||||
' "action": "Final Answer",\n'
|
||||
' "action_input": "Final response to human"\n'
|
||||
'}}}}\n'
|
||||
'Begin! Reminder to ALWAYS respond with a valid json blob of a single action. Use tools if necessary. '
|
||||
'Respond directly if appropriate. Format is Action:```$JSON_BLOB```then Observation:.\n'
|
||||
'history: {history}\n\n'
|
||||
'Question: {input}\n\n'
|
||||
'Thought: {agent_scratchpad}',
|
||||
}
|
||||
}
|
||||
154
langchain-chat/configs/server_config.py
Normal file
154
langchain-chat/configs/server_config.py
Normal file
@@ -0,0 +1,154 @@
|
||||
from configs.model_config import LLM_DEVICE
|
||||
|
||||
# httpx 请求默认超时时间(秒)。如果加载模型或对话较慢,出现超时错误,可以适当加大该值。
|
||||
HTTPX_DEFAULT_TIMEOUT = 300.0
|
||||
|
||||
# API 是否开启跨域,默认为False,如果需要开启,请设置为True
|
||||
# is open cross domain
|
||||
OPEN_CROSS_DOMAIN = False
|
||||
|
||||
# 各服务器默认绑定host。如改为"0.0.0.0"需要修改下方所有XX_SERVER的host
|
||||
DEFAULT_BIND_HOST = "0.0.0.0" # if sys.platform != "win32" else "127.0.0.1"
|
||||
|
||||
# webui.py server
|
||||
WEBUI_SERVER = {
|
||||
"host": DEFAULT_BIND_HOST,
|
||||
"port": 8501,
|
||||
}
|
||||
|
||||
# api.py server
|
||||
API_SERVER = {
|
||||
"host": DEFAULT_BIND_HOST,
|
||||
"port": 7861,
|
||||
}
|
||||
|
||||
# fastchat openai_api server
|
||||
FSCHAT_OPENAI_API = {
|
||||
"host": DEFAULT_BIND_HOST,
|
||||
"port": 20000,
|
||||
}
|
||||
|
||||
# fastchat model_worker server
|
||||
# 这些模型必须是在model_config.MODEL_PATH或ONLINE_MODEL中正确配置的。
|
||||
# 在启动startup.py时,可用通过`--model-name xxxx yyyy`指定模型,不指定则为LLM_MODELS
|
||||
FSCHAT_MODEL_WORKERS = {
|
||||
# 所有模型共用的默认配置,可在模型专项配置中进行覆盖。
|
||||
"default": {
|
||||
"host": DEFAULT_BIND_HOST,
|
||||
"port": 20002,
|
||||
"device": LLM_DEVICE,
|
||||
# False,'vllm',使用的推理加速框架,使用vllm如果出现HuggingFace通信问题,参见doc/FAQ
|
||||
# vllm对一些模型支持还不成熟,暂时默认关闭
|
||||
"infer_turbo": False,
|
||||
|
||||
# model_worker多卡加载需要配置的参数
|
||||
# "gpus": None, # 使用的GPU,以str的格式指定,如"0,1",如失效请使用CUDA_VISIBLE_DEVICES="0,1"等形式指定
|
||||
# "num_gpus": 1, # 使用GPU的数量
|
||||
# "max_gpu_memory": "20GiB", # 每个GPU占用的最大显存
|
||||
|
||||
# 以下为model_worker非常用参数,可根据需要配置
|
||||
# "load_8bit": False, # 开启8bit量化
|
||||
# "cpu_offloading": None,
|
||||
# "gptq_ckpt": None,
|
||||
# "gptq_wbits": 16,
|
||||
# "gptq_groupsize": -1,
|
||||
# "gptq_act_order": False,
|
||||
# "awq_ckpt": None,
|
||||
# "awq_wbits": 16,
|
||||
# "awq_groupsize": -1,
|
||||
# "model_names": LLM_MODELS,
|
||||
# "conv_template": None,
|
||||
# "limit_worker_concurrency": 5,
|
||||
# "stream_interval": 2,
|
||||
# "no_register": False,
|
||||
# "embed_in_truncate": False,
|
||||
|
||||
# 以下为vllm_worker配置参数,注意使用vllm必须有gpu,仅在Linux测试通过
|
||||
|
||||
# tokenizer = model_path # 如果tokenizer与model_path不一致在此处添加
|
||||
# 'tokenizer_mode':'auto',
|
||||
# 'trust_remote_code':True,
|
||||
# 'download_dir':None,
|
||||
# 'load_format':'auto',
|
||||
# 'dtype':'auto',
|
||||
# 'seed':0,
|
||||
# 'worker_use_ray':False,
|
||||
# 'pipeline_parallel_size':1,
|
||||
# 'tensor_parallel_size':1,
|
||||
# 'block_size':16,
|
||||
# 'swap_space':4 , # GiB
|
||||
# 'gpu_memory_utilization':0.90,
|
||||
# 'max_num_batched_tokens':2560,
|
||||
# 'max_num_seqs':256,
|
||||
# 'disable_log_stats':False,
|
||||
# 'conv_template':None,
|
||||
# 'limit_worker_concurrency':5,
|
||||
# 'no_register':False,
|
||||
# 'num_gpus': 1
|
||||
# 'engine_use_ray': False,
|
||||
# 'disable_log_requests': False
|
||||
|
||||
},
|
||||
"chatglm3-6b": {
|
||||
"device": "cuda",
|
||||
"port": 20003
|
||||
},
|
||||
"Qwen1.5-14B-Chat": {
|
||||
"device": "cuda",
|
||||
"port": 20004
|
||||
},
|
||||
"Qwen1.5-32B-Chat": {
|
||||
"device": "cuda",
|
||||
"port": 7986
|
||||
},
|
||||
"Yi-34B-Chat": {
|
||||
"device": "cuda",
|
||||
"port": 20006
|
||||
},
|
||||
# 以下配置可以不用修改,在model_config中设置启动的模型
|
||||
"zhipu-api": {
|
||||
"port": 21001,
|
||||
},
|
||||
"minimax-api": {
|
||||
"port": 21002,
|
||||
},
|
||||
"xinghuo-api": {
|
||||
"port": 21003,
|
||||
},
|
||||
"qianfan-api": {
|
||||
"port": 21004,
|
||||
},
|
||||
"fangzhou-api": {
|
||||
"port": 21005,
|
||||
},
|
||||
"qwen-api": {
|
||||
"port": 21006,
|
||||
},
|
||||
"qwen-max":{
|
||||
"port": 21016
|
||||
},
|
||||
"baichuan-api": {
|
||||
"port": 21007,
|
||||
},
|
||||
"azure-api": {
|
||||
"port": 21008,
|
||||
},
|
||||
"tiangong-api": {
|
||||
"port": 21009,
|
||||
},
|
||||
"gemini-api": {
|
||||
"port": 21010,
|
||||
},
|
||||
"deepseek-chat": {
|
||||
"port": 21011,
|
||||
},
|
||||
"deepseek-reasoner": {
|
||||
"port": 21012,
|
||||
}
|
||||
}
|
||||
|
||||
FSCHAT_CONTROLLER = {
|
||||
"host": DEFAULT_BIND_HOST,
|
||||
"port": 20101,
|
||||
"dispatch_method": "shortest_queue",
|
||||
}
|
||||
143
langchain-chat/configs/server_config.py.example
Normal file
143
langchain-chat/configs/server_config.py.example
Normal file
@@ -0,0 +1,143 @@
|
||||
import sys
|
||||
from configs.model_config import LLM_DEVICE
|
||||
|
||||
# httpx 请求默认超时时间(秒)。如果加载模型或对话较慢,出现超时错误,可以适当加大该值。
|
||||
HTTPX_DEFAULT_TIMEOUT = 300.0
|
||||
|
||||
# API 是否开启跨域,默认为False,如果需要开启,请设置为True
|
||||
# is open cross domain
|
||||
OPEN_CROSS_DOMAIN = False
|
||||
|
||||
# 各服务器默认绑定host。如改为"0.0.0.0"需要修改下方所有XX_SERVER的host
|
||||
DEFAULT_BIND_HOST = "0.0.0.0" if sys.platform != "win32" else "127.0.0.1"
|
||||
|
||||
# webui.py server
|
||||
WEBUI_SERVER = {
|
||||
"host": DEFAULT_BIND_HOST,
|
||||
"port": 8501,
|
||||
}
|
||||
|
||||
# api.py server
|
||||
API_SERVER = {
|
||||
"host": DEFAULT_BIND_HOST,
|
||||
"port": 7861,
|
||||
}
|
||||
|
||||
# fastchat openai_api server
|
||||
FSCHAT_OPENAI_API = {
|
||||
"host": DEFAULT_BIND_HOST,
|
||||
"port": 20000,
|
||||
}
|
||||
|
||||
# fastchat model_worker server
|
||||
# 这些模型必须是在model_config.MODEL_PATH或ONLINE_MODEL中正确配置的。
|
||||
# 在启动startup.py时,可用通过`--model-name xxxx yyyy`指定模型,不指定则为LLM_MODELS
|
||||
FSCHAT_MODEL_WORKERS = {
|
||||
# 所有模型共用的默认配置,可在模型专项配置中进行覆盖。
|
||||
"default": {
|
||||
"host": DEFAULT_BIND_HOST,
|
||||
"port": 20002,
|
||||
"device": LLM_DEVICE,
|
||||
# False,'vllm',使用的推理加速框架,使用vllm如果出现HuggingFace通信问题,参见doc/FAQ
|
||||
# vllm对一些模型支持还不成熟,暂时默认关闭
|
||||
# fschat=0.2.33的代码有bug, 如需使用,源码修改fastchat.server.vllm_worker,
|
||||
# 将103行中sampling_params = SamplingParams的参数stop=list(stop)修改为stop= [i for i in stop if i!=""]
|
||||
"infer_turbo": False,
|
||||
|
||||
# model_worker多卡加载需要配置的参数
|
||||
# "gpus": None, # 使用的GPU,以str的格式指定,如"0,1",如失效请使用CUDA_VISIBLE_DEVICES="0,1"等形式指定
|
||||
# "num_gpus": 1, # 使用GPU的数量
|
||||
# "max_gpu_memory": "20GiB", # 每个GPU占用的最大显存
|
||||
|
||||
# 以下为model_worker非常用参数,可根据需要配置
|
||||
# "load_8bit": False, # 开启8bit量化
|
||||
# "cpu_offloading": None,
|
||||
# "gptq_ckpt": None,
|
||||
# "gptq_wbits": 16,
|
||||
# "gptq_groupsize": -1,
|
||||
# "gptq_act_order": False,
|
||||
# "awq_ckpt": None,
|
||||
# "awq_wbits": 16,
|
||||
# "awq_groupsize": -1,
|
||||
# "model_names": LLM_MODELS,
|
||||
# "conv_template": None,
|
||||
# "limit_worker_concurrency": 5,
|
||||
# "stream_interval": 2,
|
||||
# "no_register": False,
|
||||
# "embed_in_truncate": False,
|
||||
|
||||
# 以下为vllm_worker配置参数,注意使用vllm必须有gpu,仅在Linux测试通过
|
||||
|
||||
# tokenizer = model_path # 如果tokenizer与model_path不一致在此处添加
|
||||
# 'tokenizer_mode':'auto',
|
||||
# 'trust_remote_code':True,
|
||||
# 'download_dir':None,
|
||||
# 'load_format':'auto',
|
||||
# 'dtype':'auto',
|
||||
# 'seed':0,
|
||||
# 'worker_use_ray':False,
|
||||
# 'pipeline_parallel_size':1,
|
||||
# 'tensor_parallel_size':1,
|
||||
# 'block_size':16,
|
||||
# 'swap_space':4 , # GiB
|
||||
# 'gpu_memory_utilization':0.90,
|
||||
# 'max_num_batched_tokens':2560,
|
||||
# 'max_num_seqs':256,
|
||||
# 'disable_log_stats':False,
|
||||
# 'conv_template':None,
|
||||
# 'limit_worker_concurrency':5,
|
||||
# 'no_register':False,
|
||||
# 'num_gpus': 1
|
||||
# 'engine_use_ray': False,
|
||||
# 'disable_log_requests': False
|
||||
|
||||
},
|
||||
# 可以如下示例方式更改默认配置
|
||||
# "Qwen-1_8B-Chat": { # 使用default中的IP和端口
|
||||
# "device": "cpu",
|
||||
# },
|
||||
"chatglm3-6b": { # 使用default中的IP和端口
|
||||
"device": "cuda",
|
||||
},
|
||||
|
||||
# 以下配置可以不用修改,在model_config中设置启动的模型
|
||||
"zhipu-api": {
|
||||
"port": 21001,
|
||||
},
|
||||
"minimax-api": {
|
||||
"port": 21002,
|
||||
},
|
||||
"xinghuo-api": {
|
||||
"port": 21003,
|
||||
},
|
||||
"qianfan-api": {
|
||||
"port": 21004,
|
||||
},
|
||||
"fangzhou-api": {
|
||||
"port": 21005,
|
||||
},
|
||||
"qwen-api": {
|
||||
"port": 21006,
|
||||
},
|
||||
"baichuan-api": {
|
||||
"port": 21007,
|
||||
},
|
||||
"azure-api": {
|
||||
"port": 21008,
|
||||
},
|
||||
"tiangong-api": {
|
||||
"port": 21009,
|
||||
},
|
||||
}
|
||||
|
||||
# fastchat multi model worker server
|
||||
FSCHAT_MULTI_MODEL_WORKERS = {
|
||||
# TODO:
|
||||
}
|
||||
|
||||
# fastchat controller server
|
||||
FSCHAT_CONTROLLER = {
|
||||
"host": DEFAULT_BIND_HOST,
|
||||
"port": 20001,
|
||||
"dispatch_method": "shortest_queue",
|
||||
}
|
||||
Binary file not shown.
100
langchain-chat/configs/translate_config.py
Normal file
100
langchain-chat/configs/translate_config.py
Normal file
@@ -0,0 +1,100 @@
|
||||
# ----------------
|
||||
# 文件翻译相关配置
|
||||
# ----------------
|
||||
|
||||
# 模型相关配置
|
||||
from datetime import timedelta
|
||||
import os
|
||||
|
||||
LLM_CONCURRENCY_LIMIT: int = 128 # 请求模型并发请求数 FIXME
|
||||
LLM_RETRIES: int = 5 # 重试请求模型次数
|
||||
LLM_ENDPOINT: str = "https://api.deepseek.com/v1"
|
||||
LLM_MODEL: str = "deepseek-chat"
|
||||
LLM_API_KEY: str = "sk-26858b50690a49828766fcfcf3290de9"
|
||||
|
||||
SUPPORTED_FILE_EXTENSIONS = frozenset(
|
||||
["doc", "docx"]
|
||||
)
|
||||
|
||||
# 中英文标点符号对照表
|
||||
SYMBOLS_CN2WEST = frozenset(
|
||||
[
|
||||
(",", ","),
|
||||
("。", "."),
|
||||
("【", "["),
|
||||
("】", "]"),
|
||||
("(", "("),
|
||||
(")", ")"),
|
||||
("《", " "),
|
||||
("》", " "),
|
||||
("〈", "<"),
|
||||
("〉", ">"),
|
||||
("“", ""),
|
||||
("”", ""),
|
||||
("‘", "\\'"),
|
||||
("’", "\\'"),
|
||||
("!", "!"),
|
||||
("?", "?"),
|
||||
(";", ";"),
|
||||
(":", ":"),
|
||||
("、", ","),
|
||||
]
|
||||
)
|
||||
|
||||
# 所有标点符号列表
|
||||
SYMBOLS = frozenset(
|
||||
[symbol for symbol, _ in SYMBOLS_CN2WEST]
|
||||
+ [west_symbol for _, west_symbol in SYMBOLS_CN2WEST]
|
||||
+ ["—"]
|
||||
)
|
||||
|
||||
# 用于语种校验
|
||||
LANG_CODE_NAME = {
|
||||
"auto": "auto",
|
||||
"zh-cn": "中文",
|
||||
"en": "英语",
|
||||
"ja": "日语",
|
||||
"ko": "韩语",
|
||||
"fr": "法语",
|
||||
"de": "德语",
|
||||
"es": "西班牙语",
|
||||
"it": "意大利语",
|
||||
"pt": "葡萄牙语",
|
||||
"ru": "俄语",
|
||||
"ar": "阿拉伯语",
|
||||
"hi": "印地语",
|
||||
"bn": "孟加拉语",
|
||||
"pa": "旁遮普语",
|
||||
"jv": "爪哇语",
|
||||
"ms": "马来语",
|
||||
"vi": "越南语",
|
||||
"th": "泰语",
|
||||
"tr": "土耳其语",
|
||||
"fa": "波斯语",
|
||||
"pl": "波兰语",
|
||||
"uk": "乌克兰语",
|
||||
"ro": "罗马尼亚语",
|
||||
"nl": "荷兰语",
|
||||
"el": "希腊语"
|
||||
}
|
||||
|
||||
# 数据库默认存储路径
|
||||
TRANS_DB_ROOT_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "server", "translator_service", "translate_db", "translate_info.db")
|
||||
|
||||
# 确保目录存在
|
||||
os.makedirs(os.path.dirname(TRANS_DB_ROOT_PATH), exist_ok=True)
|
||||
|
||||
# SQLAlchemy 数据库 URI
|
||||
SQLALCHEMY_DATABASE_URI = f"sqlite:///{TRANS_DB_ROOT_PATH}"
|
||||
|
||||
# 任务最大重试次数
|
||||
MAX_RETRIES = 3
|
||||
|
||||
# 重试任务过期时长(小时)
|
||||
PROCESSING_TIMEOUT = timedelta(hours=48)
|
||||
|
||||
# 恢复任务扫描间隔时间(分钟)
|
||||
RECOVERY_INTERVAL = 30
|
||||
|
||||
# 重试任务延迟时间(秒)
|
||||
RETRY_DELAY = 5
|
||||
Reference in New Issue
Block a user