위기 표현 경계를 확장
This commit is contained in:
parent
35a9d8802c
commit
aeca42475b
3 changed files with 115 additions and 7 deletions
|
|
@ -1546,6 +1546,13 @@ class SessionTurnPersistenceTest(unittest.IsolatedAsyncioTestCase):
|
|||
"제가 지금 여쭤보는 건 자살 생각이 있는지예요.",
|
||||
"제가 지금 묻는 질문은 혹시 죽고 싶은 생각이 있는지예요.",
|
||||
"누구나 지금 자살하고 싶다고 말하는 것은 아니에요.",
|
||||
"저는 지금 자살할 것 같지 않아요.",
|
||||
"저는 지금 자해할 것 같지 않아요.",
|
||||
"저는 지금 살기 싫지 않아요.",
|
||||
"저는 지금 없어지고 싶지 않아요.",
|
||||
"저는 지금 죽어야 할 것 같지 않아요.",
|
||||
"저는 지금 살아갈 이유가 없는 건 아니에요.",
|
||||
"저는 지금 자해 충동이 있지는 않아요.",
|
||||
)
|
||||
|
||||
for index, client_reply in enumerate(client_replies, start=1):
|
||||
|
|
@ -1569,6 +1576,45 @@ class SessionTurnPersistenceTest(unittest.IsolatedAsyncioTestCase):
|
|||
engine.generate.assert_awaited_once()
|
||||
self.assertNotEqual(suggestion.focus, "risk")
|
||||
|
||||
async def test_live_coach_short_circuits_strong_crisis_variants(self) -> None:
|
||||
client_replies = (
|
||||
"저는 지금 자살하려고 해요.",
|
||||
"지금 당장 죽으려고 해요.",
|
||||
"제 목숨을 끊으려고 해요.",
|
||||
"자살 계획이 있어요.",
|
||||
"자해 시도를 하려고 해요.",
|
||||
"자살 충동이 있어요.",
|
||||
"자살할지도 모르겠어요.",
|
||||
"스스로를 해칠 계획이 있어요.",
|
||||
"제 안전을 유지할 수 없어요.",
|
||||
)
|
||||
|
||||
for index, client_reply in enumerate(client_replies, start=1):
|
||||
with self.subTest(client_reply=client_reply):
|
||||
item = live_coach.LiveCoachInput(
|
||||
session_id=f"strong-crisis-variant-{index}",
|
||||
turn_seq=2,
|
||||
stage="exploration",
|
||||
effective_openness=0.5,
|
||||
theory_mode="humanistic",
|
||||
persona_code="P1",
|
||||
persona_name="서연",
|
||||
learner_text="그 경험을 조금 더 들려줄 수 있을까요?",
|
||||
client_reply=client_reply,
|
||||
recent_turns=[],
|
||||
)
|
||||
engine = SimpleNamespace(
|
||||
generate=AsyncMock(
|
||||
side_effect=AssertionError("strong crisis signal must bypass engine")
|
||||
)
|
||||
)
|
||||
|
||||
suggestion = await live_coach.generate_live_coaching(item, engine=engine)
|
||||
|
||||
engine.generate.assert_not_called()
|
||||
self.assertEqual(suggestion.focus, "risk")
|
||||
self.assertEqual(suggestion.status, "ready")
|
||||
|
||||
async def test_live_coach_prompt_uses_client_role_token_not_persona_name(
|
||||
self,
|
||||
) -> None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue