diff --git a/dsRag/Start.py b/dsRag/Start.py index ed3f44be..c0943113 100644 --- a/dsRag/Start.py +++ b/dsRag/Start.py @@ -108,58 +108,24 @@ async def generate_stream(client, milvus_pool, collection_manager, query): else: logger.warning("未找到相关历史对话,请检查查询参数或数据。") - prompt = f"""根据以下关于'{query}'的相关信息,# Role: 信息检索与回答助手 - -## Profile -- language: 中文 -- description: 这是一个专门设计来根据提供的材料检索信息并回答相关问题的助手。它能够快速准确地从大量文本中提取关键信息,并以清晰、简洁的方式回答用户的问题。 -- background: 该助手基于先进的自然语言处理技术,能够理解和处理复杂的查询,提供准确的信息。 -- personality: 冷静、客观、高效 -- expertise: 信息检索、文本分析、问答系统 -- target_audience: 需要快速获取信息的用户,如研究人员、学生、专业人士等。 - -## Skills - -1. 信息检索 - - 文本搜索: 能够在大量文本中快速搜索关键词或短语。 - - 语义理解: 理解用户的查询意图,即使查询语句不完全符合标准格式。 - - 结果筛选: 从搜索结果中筛选出最相关的信息。 - -2. 信息处理 - - 文本摘要: 提供文本的简要摘要,帮助用户快速了解主要内容。 - - 关键信息提取: 提取文本中的关键信息,如日期、地点、人物等。 - - 数据整合: 将来自不同来源的信息进行整合,提供全面的回答。 - -## Rules - -1. 基本原则: - - 准确性: 提供的信息必须准确无误,确保来源可靠。 - - 客观性: 回答问题时保持客观,避免主观判断。 - - 完整性: 尽可能提供完整的信息,满足用户的需求。 - -2. 行为准则: - - 及时响应: 快速响应用户的查询,提供及时的信息。 - - 清晰表达: 使用简洁明了的语言,确保用户能够理解回答。 - - 保密性: 严格遵守保密协议,不泄露用户的个人信息。 - -3. 限制条件: - - 不提供猜测性信息: 只提供有据可查的信息,不进行猜测。 - - 不传播不实信息: 确保提供的信息真实可靠,不传播不实信息。 - - 不涉及敏感内容: 避免回答涉及敏感内容的问题。 - -## Workflows - -- 目标: 根据提供的材料回答用户的问题。 -- 步骤 1: 接收并理解用户的查询,确定查询意图。 -- 步骤 2: 在提供的材料中搜索相关信息,筛选出最相关的信息。 -- 步骤 3: 对搜索到的信息进行处理,提取关键信息并进行整合。 -- 预期结果: 提供准确、清晰、完整的回答,满足用户的需求。 - -## Initialization -作为信息检索与回答助手,你必须遵守上述Rules,按照Workflows执行任务。 - -相关信息: -{context}""" + prompt = f""" +信息检索与回答助手 +根据以下关于'{query}'的相关信息: + +基本信息 +- 语言: 中文 +- 描述: 根据提供的材料检索信息并回答问题 +- 特点: 快速准确提取关键信息,清晰简洁地回答 + +相关信息 +{context} + +回答要求 +1. 准确无误,来源可靠 +2. 客观公正,避免主观判断 +3. 使用HTML格式返回,包含适当的段落、列表和标题标签 +4. 确保内容结构清晰,便于前端展示 +""" response = client.chat.completions.create( model="deepseek-chat", @@ -168,13 +134,10 @@ async def generate_stream(client, milvus_pool, collection_manager, query): {"role": "user", "content": prompt} ], temperature=0.3, - stream=True + stream=False ) - for chunk in response: - if chunk.choices[0].delta.content: - yield {"data": chunk.choices[0].delta.content} - await asyncio.sleep(0.01) + yield {"data": response.choices[0].message.content} except Exception as e: yield {"data": f"生成报告时出错: {str(e)}"} finally: @@ -202,15 +165,14 @@ async def rag_stream(request: Request): except Exception as e: logger.error(f"请求解析失败: {str(e)}") raise HTTPException(status_code=400, detail="无效的请求格式") - """RAG+DeepSeek流式接口""" - return EventSourceResponse( - generate_stream( - request.app.state.deepseek_client, - request.app.state.milvus_pool, - request.app.state.collection_manager, - query_request.query - ) - ) + """RAG+DeepSeek接口""" + async for chunk in generate_stream( + request.app.state.deepseek_client, + request.app.state.milvus_pool, + request.app.state.collection_manager, + query_request.query + ): + return chunk if __name__ == "__main__": diff --git a/dsRag/static/ai.html b/dsRag/static/ai.html index 62e0fa07..8c927e8c 100644 --- a/dsRag/static/ai.html +++ b/dsRag/static/ai.html @@ -3,7 +3,7 @@ - 教育知识问答 + 小学数学大模型问答 -
-

教育知识问答

- -
准备就绪
- -
等待问题...
- -
- - -
+
+

小学数学大模型问答

+ +
准备就绪
+ +
等待问题...
+ +
+ +
+
- + } + - \ No newline at end of file +