feat: implement automatic payload candidate retry mechanism in AIPlanner for improved LM Studio compatibility

This commit is contained in:
21in7
2026-03-27 20:07:32 +09:00
parent 2cf072d38c
commit d054f9aee1
4 changed files with 94 additions and 12 deletions

View File

@@ -4,14 +4,28 @@ from ai_planner import AIPlanner
class TestAIPlannerLMStudioCompat(unittest.TestCase):
def test_build_chat_payload_includes_input_for_responses_compat(self):
def test_build_chat_payload_has_legacy_chat_keys(self):
payload = AIPlanner._build_chat_payload("hello")
self.assertIn("messages", payload)
self.assertIn("input", payload)
self.assertEqual(payload["input"], "hello")
self.assertIn("options", payload)
self.assertEqual(payload["messages"][1]["content"], "hello")
def test_build_input_only_payload_has_minimal_keys(self):
payload = AIPlanner._build_input_only_payload("hello")
self.assertIn("input", payload)
self.assertNotIn("messages", payload)
self.assertEqual(payload["stream"], False)
self.assertIn("hello", payload["input"])
def test_payload_candidates_order(self):
payloads = AIPlanner._build_payload_candidates("hello")
self.assertEqual(len(payloads), 2)
self.assertIn("messages", payloads[0])
self.assertIn("input", payloads[1])
self.assertNotIn("messages", payloads[1])
def test_extract_response_content_supports_message_content(self):
data = {
"message": {