main
HuangHai 4 weeks ago
parent 9eb13dcfee
commit 23dd8a0b48

@ -28,5 +28,5 @@ DEEPSEEK_URL = 'https://api.deepseek.com'
# 阿里云中用来调用 deepseek v3 的密钥【驿来特】 # 阿里云中用来调用 deepseek v3 的密钥【驿来特】
MODEL_API_KEY = "sk-f6da0c787eff4b0389e4ad03a35a911f" MODEL_API_KEY = "sk-f6da0c787eff4b0389e4ad03a35a911f"
#MODEL_NAME = "qwen-plus" MODEL_NAME = "qwen-plus"
MODEL_NAME = "deepseek-v3" #MODEL_NAME = "deepseek-v3"

@ -1,4 +1,5 @@
import os import os
import subprocess
import tempfile import tempfile
import urllib.parse import urllib.parse
import uuid import uuid
@ -9,27 +10,18 @@ from typing import List
import jieba # 导入 jieba 分词库 import jieba # 导入 jieba 分词库
import uvicorn import uvicorn
from docx import Document
from fastapi import FastAPI, Request, HTTPException from fastapi import FastAPI, Request, HTTPException
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
from gensim.models import KeyedVectors from gensim.models import KeyedVectors
from openai import OpenAI
from pydantic import BaseModel, Field, ValidationError from pydantic import BaseModel, Field, ValidationError
from starlette.responses import StreamingResponse from starlette.responses import StreamingResponse
from Config import Config
from Config.Config import MS_MODEL_PATH, MS_MODEL_LIMIT, MS_HOST, MS_PORT, MS_MAX_CONNECTIONS, MS_NPROBE, \ from Config.Config import MS_MODEL_PATH, MS_MODEL_LIMIT, MS_HOST, MS_PORT, MS_MAX_CONNECTIONS, MS_NPROBE, \
MS_COLLECTION_NAME MS_COLLECTION_NAME
from Milvus.Utils.MilvusCollectionManager import MilvusCollectionManager from Milvus.Utils.MilvusCollectionManager import MilvusCollectionManager
from Milvus.Utils.MilvusConnectionPool import * from Milvus.Utils.MilvusConnectionPool import *
from Milvus.Utils.MilvusConnectionPool import MilvusConnectionPool from Milvus.Utils.MilvusConnectionPool import MilvusConnectionPool
import subprocess from Util.ALiYunUtil import ALiYunUtil
# 将HTML文件转换为Word文件
def html_to_word_pandoc(html_file, output_file):
subprocess.run(['pandoc', html_file, '-o', output_file])
# 初始化日志 # 初始化日志
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -42,6 +34,10 @@ logger.addHandler(handler)
model = KeyedVectors.load_word2vec_format(MS_MODEL_PATH, binary=False, limit=MS_MODEL_LIMIT) model = KeyedVectors.load_word2vec_format(MS_MODEL_PATH, binary=False, limit=MS_MODEL_LIMIT)
logger.info(f"模型加载成功,词向量维度: {model.vector_size}") logger.info(f"模型加载成功,词向量维度: {model.vector_size}")
# 将HTML文件转换为Word文件
def html_to_word_pandoc(html_file, output_file):
subprocess.run(['pandoc', html_file, '-o', output_file])
@asynccontextmanager @asynccontextmanager
async def lifespan(app: FastAPI): async def lifespan(app: FastAPI):
@ -52,13 +48,10 @@ async def lifespan(app: FastAPI):
app.state.collection_manager = MilvusCollectionManager(MS_COLLECTION_NAME) app.state.collection_manager = MilvusCollectionManager(MS_COLLECTION_NAME)
app.state.collection_manager.load_collection() app.state.collection_manager.load_collection()
# 初始化DeepSeek客户端 # 初始化阿里云大模型工具
app.state.deepseek_client = OpenAI( app.state.aliyun_util = ALiYunUtil()
api_key=Config.DEEPSEEK_API_KEY,
base_url=Config.DEEPSEEK_URL
)
yield
yield
# 关闭Milvus连接池 # 关闭Milvus连接池
app.state.milvus_pool.close() app.state.milvus_pool.close()
@ -154,17 +147,9 @@ async def generate_stream(client, milvus_pool, collection_manager, query, docume
5. 确保内容结构清晰便于前端展示 5. 确保内容结构清晰便于前端展示
""" """
response = client.chat.completions.create( # 调用阿里云大模型
model="deepseek-chat", html_content = client.chat(prompt)
messages=[ yield {"data": html_content}
{"role": "system", "content": "你是一个专业的文档整理助手"},
{"role": "user", "content": prompt}
],
temperature=0.3,
stream=False
)
# 将返回的html代码保存成文件
yield {"data": response.choices[0].message.content}
except Exception as e: except Exception as e:
yield {"data": f"生成报告时出错: {str(e)}"} yield {"data": f"生成报告时出错: {str(e)}"}
finally: finally:
@ -255,9 +240,9 @@ async def rag_stream(request: Request):
except Exception as e: except Exception as e:
logger.error(f"请求解析失败: {str(e)}") logger.error(f"请求解析失败: {str(e)}")
raise HTTPException(status_code=400, detail="无效的请求格式") raise HTTPException(status_code=400, detail="无效的请求格式")
"""RAG+DeepSeek接口""" """RAG+ALiYun接口"""
async for chunk in generate_stream( async for chunk in generate_stream(
request.app.state.deepseek_client, request.app.state.aliyun_util,
request.app.state.milvus_pool, request.app.state.milvus_pool,
request.app.state.collection_manager, request.app.state.collection_manager,
query_request.query, query_request.query,

Loading…
Cancel
Save