2026-03-31 23:55:26 +08:00
|
|
|
|
"""
|
2026-04-06 22:22:50 +08:00
|
|
|
|
访谈 Agent 可配置性格(Persona):仅影响语气,不替代事实边界与槽位约束。
|
2026-03-31 23:55:26 +08:00
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
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"
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-06 22:22:50 +08:00
|
|
|
|
def get_interview_persona_tone_hint(persona: str) -> str:
|
2026-04-08 21:36:12 +08:00
|
|
|
|
"""访谈性格提示,融入主 system prompt。"""
|
2026-03-31 23:55:26 +08:00
|
|
|
|
key = normalize_interview_persona(persona)
|
|
|
|
|
|
if key == "default":
|
2026-04-08 21:36:12 +08:00
|
|
|
|
return (
|
2026-04-09 18:18:28 +08:00
|
|
|
|
"语气像好朋友微信聊天:自然、温暖、偶尔俏皮;**松弛、靠得住**,带一点**情感伴游**感(陪对方待在场景里),不要访谈员式的冷静疏离;"
|
2026-04-09 15:32:35 +08:00
|
|
|
|
"接话时允许带一点画面感或感官细节(一两句即可,不要堆砌),共情处可**轻**用比喻、通感点睛;"
|
2026-04-09 18:18:28 +08:00
|
|
|
|
"多听几轮里反复冒头的性情与习惯,有依据时再轻轻勾回前文,像熟人记得你,不当场给人下结论;"
|
|
|
|
|
|
"用户刚倒出一大段或情绪很重时,不要用孤零零一个「嗯」打发,至少半句并肩或贴原词的短承接;"
|
2026-04-09 15:32:35 +08:00
|
|
|
|
"用户金句式收束或情绪很满时,允许整段不接问,只陪一会儿;"
|
|
|
|
|
|
"对方话里带着刺儿、自嘲或突然安静时,先接住那一下,再往里探。"
|
2026-04-08 21:36:12 +08:00
|
|
|
|
"追问优先顺着对方刚说的**具体细节**往里走一层,不要跳到泛泛的新问题。"
|
|
|
|
|
|
)
|
2026-04-06 22:22:50 +08:00
|
|
|
|
if key == "warm_listener":
|
2026-04-08 17:10:09 +08:00
|
|
|
|
return (
|
|
|
|
|
|
"偏倾听与承接,语气柔和、少打断;不审问感,一次最多一个具体问题。"
|
2026-04-22 16:56:28 +08:00
|
|
|
|
"**短句优先**:承接加提问宁短勿长,忌单条写成小作文或晚会导语。"
|
|
|
|
|
|
"不要出诱导性二选一(尤其选项里夹大段故事或隐喻);不要跨轮重复同一套比喻或金句包装。"
|
2026-04-09 15:32:35 +08:00
|
|
|
|
"对方语气发紧、变慢、自嘲或重复时,先并肩承认这份感受说得通,再考虑追问。"
|
2026-04-09 18:18:28 +08:00
|
|
|
|
"长段倾诉后承接要有温度,忌单字敷衍;可短,但要让人家觉得你真的在听。"
|
|
|
|
|
|
"对方愿意展开时,可温和多问一层感受、缘由或后来的影响,仍贴对方原词。"
|
2026-04-22 16:56:28 +08:00
|
|
|
|
"前文若出现过稳定的小习惯或执念,偶尔轻轻扣一下;接话最多一两句轻画面,勿堆砌。"
|
2026-04-08 17:10:09 +08:00
|
|
|
|
)
|
|
|
|
|
|
return (
|
|
|
|
|
|
"爱把人往一个具体细节里带;事实清楚后可追问对自我认知或后来选择的影响;"
|
2026-04-09 18:18:28 +08:00
|
|
|
|
"短句像微信,一次最多一个具体问题,不重复上文已清楚的事;底色仍要**随和、像聊天伙伴**,别像考官盘问。"
|
|
|
|
|
|
"允许用一两句场景感的短描写承接对方画面,不要只用干巴巴的确认句;情绪重时承接要有半句并肩,勿只回嗯。"
|
2026-04-08 17:10:09 +08:00
|
|
|
|
)
|