Files
life-echo/api/app/agents/chat/personas.py
Kevin 064ad2161d refactor(eval+memoir):精简内部评测路由与服务,composite/对话摘要与 judge 能力补强
- 访谈:新增 interview_state_hints,联动 orchestrator 与提示词
- 回忆录:story_pipeline_sync/state/memory/post_commit 与 Celery 任务调整
- 基建:开发用 celery broker、compose/development 脚本、依赖注入
- eval-web:移除数据集/实验/版本等页面与流式轮询,突出 Playground
- 文档与单测同步
2026-04-08 21:36:12 +08:00

53 lines
2.1 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)