feat(heartbeat): custom evaluator prompt
This commit is contained in:
@@ -31,17 +31,26 @@ def _eval_tool_call(should_notify: bool, reason: str = "") -> LLMResponse:
|
||||
)
|
||||
|
||||
|
||||
_EVAL_PROMPT = "You are a notification gate. Call evaluate_notification."
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_should_notify_true() -> None:
|
||||
provider = DummyProvider([_eval_tool_call(True, "user asked to be reminded")])
|
||||
result = await evaluate_response("Task completed with results", "check emails", provider, "m")
|
||||
result = await evaluate_response(
|
||||
"Task completed with results", "check emails", provider, "m",
|
||||
evaluator_prompt=_EVAL_PROMPT,
|
||||
)
|
||||
assert result is True
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_should_notify_false() -> None:
|
||||
provider = DummyProvider([_eval_tool_call(False, "routine check, nothing new")])
|
||||
result = await evaluate_response("All clear, no updates", "check status", provider, "m")
|
||||
result = await evaluate_response(
|
||||
"All clear, no updates", "check status", provider, "m",
|
||||
evaluator_prompt=_EVAL_PROMPT,
|
||||
)
|
||||
assert result is False
|
||||
|
||||
|
||||
@@ -52,14 +61,20 @@ async def test_fallback_on_error() -> None:
|
||||
raise RuntimeError("provider down")
|
||||
|
||||
provider = FailingProvider([])
|
||||
result = await evaluate_response("some response", "some task", provider, "m")
|
||||
result = await evaluate_response(
|
||||
"some response", "some task", provider, "m",
|
||||
evaluator_prompt=_EVAL_PROMPT, default_notify=True,
|
||||
)
|
||||
assert result is True
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_no_tool_call_fallback() -> None:
|
||||
provider = DummyProvider([LLMResponse(content="I think you should notify", tool_calls=[])])
|
||||
result = await evaluate_response("some response", "some task", provider, "m")
|
||||
result = await evaluate_response(
|
||||
"some response", "some task", provider, "m",
|
||||
evaluator_prompt=_EVAL_PROMPT, default_notify=True,
|
||||
)
|
||||
assert result is True
|
||||
|
||||
|
||||
@@ -70,12 +85,18 @@ async def test_fail_closed_on_error() -> None:
|
||||
raise RuntimeError("provider down")
|
||||
|
||||
provider = FailingProvider([])
|
||||
result = await evaluate_response("some", "task", provider, "m", default_notify=False)
|
||||
result = await evaluate_response(
|
||||
"some", "task", provider, "m",
|
||||
evaluator_prompt=_EVAL_PROMPT, default_notify=False,
|
||||
)
|
||||
assert result is False
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_fail_closed_on_no_tool_call() -> None:
|
||||
provider = DummyProvider([LLMResponse(content="text only", tool_calls=[])])
|
||||
result = await evaluate_response("some", "task", provider, "m", default_notify=False)
|
||||
result = await evaluate_response(
|
||||
"some", "task", provider, "m",
|
||||
evaluator_prompt=_EVAL_PROMPT, default_notify=False,
|
||||
)
|
||||
assert result is False
|
||||
|
||||
Reference in New Issue
Block a user