43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
from langchain_core.messages import HumanMessage, AIMessage
|
||
from langchain_core.prompts import PromptTemplate
|
||
|
||
from src.server.deep_agent.init_llm import title_llm
|
||
|
||
|
||
async def conversation_title(agent, config):
|
||
state = agent.get_state(config)
|
||
messages = state.values.get("messages", [])
|
||
if len(messages) < 2:
|
||
return None
|
||
|
||
user_msg = None
|
||
ai_msg = None
|
||
|
||
for m in messages:
|
||
if isinstance(m, HumanMessage) and user_msg is None:
|
||
user_msg = m.content
|
||
|
||
if isinstance(m, AIMessage) and ai_msg is None:
|
||
ai_msg = m.content
|
||
|
||
if user_msg and ai_msg:
|
||
break
|
||
|
||
prompt = f"""
|
||
请根据以下首次对话内容,生成一个简洁、精准的标题(2-15个字):
|
||
|
||
用户:{user_msg}
|
||
助手:{ai_msg}
|
||
|
||
要求:
|
||
1. 标题需概括对话核心内容
|
||
2. 语言简洁、符合中文表达习惯
|
||
3. 仅返回标题,不要额外解释
|
||
"""
|
||
response = await title_llm.ainvoke(prompt)
|
||
title = response.content.strip()
|
||
|
||
# 去掉可能的符号
|
||
title = title.replace("《", "").replace("》", "")
|
||
return title
|