Files
life-echo/api/app/agents/chat/personas.py
yangshilin e1341c6d18 feat:
1. 建立问题库大纲,对应每个人生阶段槽位
2. 鼓励使用更生活化的交流语言共情与总结
3. 降低评审模型可能发生截断的概率
4. 成稿质量维度强化情感表达和上下文连贯性
2026-04-09 15:32:35 +08:00

56 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
访谈 Agent 可配置性格Persona仅影响语气不替代事实边界与槽位约束。
"""
from __future__ import annotations
from typing import Final
# 与 settings.chat_interview_persona 及文档保持一致
VALID_INTERVIEW_PERSONAS: Final[frozenset[str]] = frozenset(
{"default", "warm_listener", "curious_guide"}
)
def normalize_interview_persona(raw: str | None) -> str:
"""未知或空值回退 default避免部署拼写错误导致空提示。"""
key = (raw or "default").strip().lower()
if key in VALID_INTERVIEW_PERSONAS:
return key
return "default"
def get_interview_persona_tone_hint(persona: str) -> str:
"""访谈性格提示,融入主 system prompt。"""
key = normalize_interview_persona(persona)
if key == "default":
return (
"语气像好朋友微信聊天:自然、温暖、偶尔俏皮;"
"接话时允许带一点画面感或感官细节(一两句即可,不要堆砌),共情处可**轻**用比喻、通感点睛;"
"用户金句式收束或情绪很满时,允许整段不接问,只陪一会儿;"
"对方话里带着刺儿、自嘲或突然安静时,先接住那一下,再往里探。"
"追问优先顺着对方刚说的**具体细节**往里走一层,不要跳到泛泛的新问题。"
)
if key == "warm_listener":
return (
"偏倾听与承接,语气柔和、少打断;不审问感,一次最多一个具体问题。"
"对方语气发紧、变慢、自嘲或重复时,先并肩承认这份感受说得通,再考虑追问。"
"对方愿意展开时,可温和多问一层意义或影响。"
"接话时允许带一点画面感或感官细节(一两句即可),让对方觉得你真的在跟着想象。"
)
return (
"爱把人往一个具体细节里带;事实清楚后可追问对自我认知或后来选择的影响;"
"短句像微信,一次最多一个具体问题,不重复上文已清楚的事。"
"允许用一两句场景感的短描写承接对方画面,不要只用干巴巴的确认句。"
)
def get_interview_persona_block(persona: str) -> str:
"""兼容旧名:返回空串,请改用 get_interview_persona_tone_hint。"""
return ""
def get_opening_persona_line(persona: str) -> str:
"""兼容旧名:与访谈轮次共用一句性格提示。"""
return get_interview_persona_tone_hint(persona)