main
HuangHai 4 months ago
parent ff4b4ff61b
commit f3caf4e663

@ -59,7 +59,6 @@ milvus_pool = MilvusConnectionPool(host=MS_HOST, port=MS_PORT, max_connections=M
collection_name = MS_COLLECTION_NAME collection_name = MS_COLLECTION_NAME
collection_manager = MilvusCollectionManager(collection_name) collection_manager = MilvusCollectionManager(collection_name)
# 将文本转换为嵌入向量 # 将文本转换为嵌入向量
def text_to_embedding(text): def text_to_embedding(text):
words = jieba.lcut(text) # 使用 jieba 分词 words = jieba.lcut(text) # 使用 jieba 分词
@ -74,7 +73,6 @@ def text_to_embedding(text):
print("未找到有效词,返回零向量") print("未找到有效词,返回零向量")
return [0.0] * model.vector_size return [0.0] * model.vector_size
# 使用 Lifespan Events 处理应用启动和关闭逻辑 # 使用 Lifespan Events 处理应用启动和关闭逻辑
@asynccontextmanager @asynccontextmanager
async def lifespan(app: FastAPI): async def lifespan(app: FastAPI):
@ -86,7 +84,6 @@ async def lifespan(app: FastAPI):
milvus_pool.close() milvus_pool.close()
print("Milvus 连接池已关闭。") print("Milvus 连接池已关闭。")
# 初始化 FastAPI 应用 # 初始化 FastAPI 应用
app = FastAPI(lifespan=lifespan) app = FastAPI(lifespan=lifespan)
@ -99,10 +96,6 @@ client = OpenAI(
# 设置相似度阈值 # 设置相似度阈值
SIMILARITY_THRESHOLD = 0.5 # 距离小于 0.5 的结果被认为是高相似度 SIMILARITY_THRESHOLD = 0.5 # 距离小于 0.5 的结果被认为是高相似度
# 在 /reply 接口中优化查询逻辑和提示词构建方式
# 在 /reply 接口中优化提示词传递和系统提示词
# 在 /reply 接口中优化提示词传递和系统提示词
# 在 /reply 接口中优化查询逻辑和提示词构建方式
@app.post("/reply") @app.post("/reply")
async def reply(session_id: str = Form(...), prompt: str = Form(...)): async def reply(session_id: str = Form(...), prompt: str = Form(...)):
""" """
@ -123,7 +116,7 @@ async def reply(session_id: str = Form(...), prompt: str = Form(...)):
print(f"提取的关键词: {keywords}") print(f"提取的关键词: {keywords}")
# 构建查询条件 # 构建查询条件
expr = f"session_id == '{session_id}'" # 只过滤 session_id expr = build_query_expr(session_id, keywords)
print(f"查询条件: {expr}") print(f"查询条件: {expr}")
# 查询与当前对话最相关的五条历史交互 # 查询与当前对话最相关的五条历史交互
@ -140,9 +133,6 @@ async def reply(session_id: str = Form(...), prompt: str = Form(...)):
) )
end_time = time.time() end_time = time.time()
# 调试:输出查询结果
print(f"查询结果: {results}")
# 构建历史交互提示词 # 构建历史交互提示词
history_prompt = "" history_prompt = ""
if results: if results:
@ -192,12 +182,12 @@ async def reply(session_id: str = Form(...), prompt: str = Form(...)):
collection_manager.insert_data(entities) collection_manager.insert_data(entities)
print("用户输入和大模型反馈已记录到向量数据库。") print("用户输入和大模型反馈已记录到向量数据库。")
# 调用tts进行生成mp3 # 调用 TTS 生成 MP3
uuid_str = str(uuid.uuid4()) uuid_str = str(uuid.uuid4())
tts_file = "audio/" + uuid_str + ".mp3" tts_file = "audio/" + uuid_str + ".mp3"
t = TTS(tts_file) t = TTS(tts_file)
t.start(result) t.start(result)
# 文件上传到oss # 文件上传到 OSS
upload_mp3_to_oss(tts_file, tts_file) upload_mp3_to_oss(tts_file, tts_file)
# 删除临时文件 # 删除临时文件
try: try:
@ -205,7 +195,7 @@ async def reply(session_id: str = Form(...), prompt: str = Form(...)):
print(f"临时文件 {tts_file} 已删除") print(f"临时文件 {tts_file} 已删除")
except Exception as e: except Exception as e:
print(f"删除临时文件失败: {e}") print(f"删除临时文件失败: {e}")
# 完整的url # 完整的 URL
url = 'https://ylt.oss-cn-hangzhou.aliyuncs.com/' + tts_file url = 'https://ylt.oss-cn-hangzhou.aliyuncs.com/' + tts_file
return { return {
"success": True, "success": True,
@ -221,7 +211,6 @@ async def reply(session_id: str = Form(...), prompt: str = Form(...)):
# 释放连接 # 释放连接
milvus_pool.release_connection(connection) milvus_pool.release_connection(connection)
# 运行 FastAPI 应用 # 运行 FastAPI 应用
if __name__ == "__main__": if __name__ == "__main__":
import uvicorn import uvicorn

Loading…
Cancel
Save