优化提示词和知识库

main
zc 2 months ago
parent e005a0e6ba
commit db321f0729
  1. 2
      app/api/chat/ai/chat_router.py
  2. 15
      app/api/chat/ai/chat_service.py

@ -57,7 +57,7 @@ async def h5_chat_stream(request: Request, inp: ChatIn):
# 使用线程池异步执行同步函数
loop = asyncio.get_event_loop()
with ThreadPoolExecutor() as executor:
knowledge_task = loop.run_in_executor(executor, fetch_and_parse_markdown, user_id, spot)
knowledge_task = loop.run_in_executor(executor, fetch_and_parse_markdown, user_id, inp.message)
# 从 Redis 中获取用户的对话历史
redis_client = request.app.state.redis_client

@ -16,10 +16,15 @@ load_dotenv()
client = OpenAI(api_key=settings.DEEPSEEK_API_KEY, base_url=settings.DEEPSEEK_API_URL)
#分类提示词
CATEGORY_PROMPT = """你是一个分类助手,请根据用户的问题判断属于哪一类:
1. 如果用户是问某个保定市景区现在适不适合去或者某个保定市景区现在人多么此类涉及某个景区人数或者客流量的注意只有保定的景区请返回游玩判断
2. 其他均返回保定文旅
只能返回以上两个分类词之一不能多说话不回复其他多余内容"""
CATEGORY_PROMPT = """你是一个分类助手,请根据用户的问题判断属于以下哪一类:
如果用户的问题涉及保定市某个景区当前的人数客流量拥挤程度或是否适合前往例如某个保定市景区现在人多么某个保定市景区现在适不适合去请返回游玩判断
如果用户的问题不属于上述情况请返回保定文旅
注意
只处理与保定市景区相关的问题
仅返回游玩判断保定文旅这两个分类结果之一
不回复任何其他内容
不进行额外解释或对话"""
#提取景区名称提示词
EXTRACT_PROMPT = """你是一名景区名称精准匹配助手。用户的问题中可能只包含景区简称、别称或部分关键词,你需要根据下面的完整景区名称列表,把用户提到的景区准确匹配到唯一最符合的完整名称并仅返回该名称,不要输出其他文字。如果用户没有提到任何景区,返回空字符串。
完整景区名称列表
@ -345,7 +350,7 @@ async def query_flow(request: Request, spot: str) -> str:
0.3-0.5较舒适
0.5-0.7一般
0.7-0.9较拥挤
大于0.9%拥挤"""
大于0.9拥挤"""
hold_level = "舒适" if hold_rate < 0.3 else "较舒适" if hold_rate < 0.5 else "一般" if hold_rate < 0.7 else "较拥挤" if hold_rate < 0.9 else "拥挤"
result = f"{spot} 客流\n\n在园人数: {in_num}\n\n舒适度等级:{hold_level}\n\n注:全部内容输出完以后,最后输出一段固定内容,内容为:<hr class=\"keliu\" data-id=\"{scenic_id}\"/>;"
elif scenic_id:

Loading…
Cancel
Save