fix: route medical content strictly local
This commit is contained in:
@@ -63,6 +63,26 @@ class PrivacyRouterTests(unittest.TestCase):
|
||||
CloudPolicy.NEVER,
|
||||
)
|
||||
|
||||
def test_medical_questions_are_always_never(self) -> None:
|
||||
for question in (
|
||||
"Wenn ich blute, sollte ich dann zum Arzt?",
|
||||
"Welche Symptome hat eine Grippe?",
|
||||
"Wie nehme ich dieses Medikament ein?",
|
||||
"Was bedeutet diese Diagnose?",
|
||||
"Wie sollte eine Verletzung behandelt werden?",
|
||||
):
|
||||
with self.subTest(question=question):
|
||||
self.assertEqual(
|
||||
self.router.classify(question).policy,
|
||||
CloudPolicy.NEVER,
|
||||
)
|
||||
|
||||
def test_technical_terms_cannot_override_medical_never(self) -> None:
|
||||
decision = self.router.classify(
|
||||
"Wie speichere ich meine Symptome und Diagnose mit Python in SQLite?"
|
||||
)
|
||||
self.assertEqual(decision.policy, CloudPolicy.NEVER)
|
||||
|
||||
def test_unknown_content_is_conservatively_ask(self) -> None:
|
||||
self.assertEqual(
|
||||
self.router.classify("Erkläre das bitte genauer.").policy,
|
||||
|
||||
@@ -131,6 +131,23 @@ class HybridProviderTests(unittest.TestCase):
|
||||
self.assertTrue(router.last_route.fallback)
|
||||
self.assertIn("lokale Antwort", self.notices[-1])
|
||||
|
||||
def test_medical_never_routes_locally_before_cloud_construction(self) -> None:
|
||||
constructed = False
|
||||
|
||||
def cloud_factory() -> _RecordingProvider:
|
||||
nonlocal constructed
|
||||
constructed = True
|
||||
return self.cloud
|
||||
|
||||
router = self._router(cloud_provider_factory=cloud_factory, mode="gemini")
|
||||
|
||||
answer = router.chat([ChatMessage("user", "Wenn ich blute, sollte ich dann zum Arzt?")])
|
||||
|
||||
self.assertEqual(answer, "Lokal")
|
||||
self.assertFalse(constructed)
|
||||
self.assertFalse(self.approvals)
|
||||
self.assertEqual(router.last_route.privacy_policy, CloudPolicy.NEVER)
|
||||
|
||||
def test_ask_defaults_to_local_when_approval_is_denied(self) -> None:
|
||||
router = self._router()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user