|
|
@ -14,27 +14,21 @@ from starlette.staticfiles import StaticFiles
|
|
|
|
|
|
|
|
|
|
|
|
from Util.RagUtil import create_llm_model_func, create_vision_model_func, create_embedding_func
|
|
|
|
from Util.RagUtil import create_llm_model_func, create_vision_model_func, create_embedding_func
|
|
|
|
|
|
|
|
|
|
|
|
# 初始化日志
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
logger.setLevel(logging.INFO)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 配置日志处理器
|
|
|
|
|
|
|
|
log_file = os.path.join(os.path.dirname(__file__), 'Logs', 'app.log')
|
|
|
|
|
|
|
|
os.makedirs(os.path.dirname(log_file), exist_ok=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 文件处理器
|
|
|
|
import logging
|
|
|
|
file_handler = RotatingFileHandler(
|
|
|
|
|
|
|
|
log_file, maxBytes=1024 * 1024, backupCount=5, encoding='utf-8')
|
|
|
|
|
|
|
|
file_handler.setFormatter(logging.Formatter(
|
|
|
|
|
|
|
|
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 控制台处理器
|
|
|
|
# 在程序开始时添加以下配置
|
|
|
|
console_handler = logging.StreamHandler()
|
|
|
|
logging.basicConfig(
|
|
|
|
console_handler.setFormatter(logging.Formatter(
|
|
|
|
level=logging.INFO, # 设置日志级别为INFO
|
|
|
|
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
|
|
|
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
logger.addHandler(file_handler)
|
|
|
|
# 或者如果你想更详细地控制日志输出
|
|
|
|
logger.addHandler(console_handler)
|
|
|
|
logger = logging.getLogger('lightrag')
|
|
|
|
|
|
|
|
logger.setLevel(logging.INFO)
|
|
|
|
|
|
|
|
handler = logging.StreamHandler()
|
|
|
|
|
|
|
|
handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
|
|
|
|
|
|
|
|
logger.addHandler(handler)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def lifespan(app: FastAPI):
|
|
|
|
async def lifespan(app: FastAPI):
|
|
|
@ -62,11 +56,8 @@ async def rag(request: fastapi.Request):
|
|
|
|
# 查询的问题
|
|
|
|
# 查询的问题
|
|
|
|
query = data.get("query")
|
|
|
|
query = data.get("query")
|
|
|
|
# 关闭参考资料
|
|
|
|
# 关闭参考资料
|
|
|
|
query = query + "\n 1、不要输出参考资料 或者 References !"
|
|
|
|
user_prompt="\n 1、不要输出参考资料 或者 References !"
|
|
|
|
query = query + "\n 2、如果问题与提供的知识库内容不符,则明确告诉未在知识库范围内提到!"
|
|
|
|
user_prompt = user_prompt + "\n 2、如果问题与提供的知识库内容不符,则明确告诉未在知识库范围内提到!"
|
|
|
|
#query = query + "\n 3、严格按照知识库内容进行回答,不要进行推理!知识库中条目清晰体现的才算答案。"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#system_prompt = "注意:如果用户提供了Latex 的行间公式或行内公式,一定要严格按原文输出,不能修改!"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def generate_response_stream(query: str):
|
|
|
|
async def generate_response_stream(query: str):
|
|
|
|
try:
|
|
|
|
try:
|
|
|
@ -91,6 +82,7 @@ async def rag(request: fastapi.Request):
|
|
|
|
)
|
|
|
|
)
|
|
|
|
# 直接使用app.state中已初始化的rag实例
|
|
|
|
# 直接使用app.state中已初始化的rag实例
|
|
|
|
resp = await app.state.rag.aquery(
|
|
|
|
resp = await app.state.rag.aquery(
|
|
|
|
|
|
|
|
user_prompt=user_prompt,
|
|
|
|
query=query,
|
|
|
|
query=query,
|
|
|
|
mode="hybrid",
|
|
|
|
mode="hybrid",
|
|
|
|
stream=True
|
|
|
|
stream=True
|
|
|
|