|
|
|
@ -1,29 +1,10 @@
|
|
|
|
|
import logging
|
|
|
|
|
import os
|
|
|
|
|
import subprocess
|
|
|
|
|
import tempfile
|
|
|
|
|
import urllib.parse
|
|
|
|
|
import uuid
|
|
|
|
|
from io import BytesIO
|
|
|
|
|
from logging.handlers import RotatingFileHandler
|
|
|
|
|
from typing import List
|
|
|
|
|
|
|
|
|
|
import uvicorn
|
|
|
|
|
from fastapi import FastAPI, Request, HTTPException
|
|
|
|
|
from fastapi.staticfiles import StaticFiles
|
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
from starlette.responses import StreamingResponse
|
|
|
|
|
|
|
|
|
|
from Config.Config import ES_CONFIG
|
|
|
|
|
import warnings
|
|
|
|
|
from Util.ALiYunUtil import ALiYunUtil
|
|
|
|
|
from Util.EsSearchUtil import EsSearchUtil
|
|
|
|
|
|
|
|
|
|
# 初始化日志
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
logger.setLevel(logging.INFO)
|
|
|
|
|
|
|
|
|
|
def queryByEs(query, query_tags):
|
|
|
|
|
def queryByEs(query, query_tags,logger):
|
|
|
|
|
# 获取EsSearchUtil实例
|
|
|
|
|
es_search_util = EsSearchUtil(ES_CONFIG)
|
|
|
|
|
|
|
|
|
@ -144,7 +125,7 @@ def queryByEs(query, query_tags):
|
|
|
|
|
es_search_util.es_pool.release_connection(es_conn)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def callLLM(request, query, search_results):
|
|
|
|
|
def callLLM(request, query, search_results, logger,streamBack=False):
|
|
|
|
|
# 调用阿里云大模型整合结果
|
|
|
|
|
aliyun_util = request.app.state.aliyun_util
|
|
|
|
|
|
|
|
|
@ -183,7 +164,16 @@ def callLLM(request, query, search_results):
|
|
|
|
|
if len(context) > 0:
|
|
|
|
|
# 调用大模型生成回答
|
|
|
|
|
logger.info("正在调用阿里云大模型生成回答...")
|
|
|
|
|
markdown_content = aliyun_util.chat(prompt)
|
|
|
|
|
logger.info(f"调用阿里云大模型生成回答成功完成!")
|
|
|
|
|
return markdown_content
|
|
|
|
|
|
|
|
|
|
if streamBack:
|
|
|
|
|
# SSE流式返回
|
|
|
|
|
async def generate():
|
|
|
|
|
async for chunk in aliyun_util.chat_stream(prompt):
|
|
|
|
|
yield f"data: {chunk}\n\n"
|
|
|
|
|
return StreamingResponse(generate(), media_type="text/event-stream")
|
|
|
|
|
else:
|
|
|
|
|
# 一次性返回
|
|
|
|
|
markdown_content = aliyun_util.chat(prompt)
|
|
|
|
|
logger.info(f"调用阿里云大模型生成回答成功完成!")
|
|
|
|
|
return markdown_content
|
|
|
|
|
return None
|
|
|
|
|