From 1f8fca00450edffa75e3f3d6eb99d538798c7487 Mon Sep 17 00:00:00 2001 From: Ben McHone Date: Thu, 30 Oct 2025 22:00:32 -0500 Subject: [PATCH] fix(XMLAdapter): Implement user message formatting --- dspy/adapters/xml_adapter.py | 25 +++++++++++++++++++++++++ tests/adapters/test_xml_adapter.py | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/dspy/adapters/xml_adapter.py b/dspy/adapters/xml_adapter.py index 4c0084d2cb..662b1d2868 100644 --- a/dspy/adapters/xml_adapter.py +++ b/dspy/adapters/xml_adapter.py @@ -41,6 +41,31 @@ def format_signature_fields_for_instructions(fields: dict[str, FieldInfo]): parts.append(format_signature_fields_for_instructions(signature.output_fields)) return "\n\n".join(parts).strip() + def format_user_message_content( + self, + signature: type[Signature], + inputs: dict[str, Any], + prefix: str = "", + suffix: str = "", + main_request: bool = False, + ) -> str: + messages = [prefix] + + messages.append(self.format_field_with_value( + { + FieldInfoWithName(name=k, info=v): inputs.get(k) + for k, v in signature.input_fields.items() if k in inputs + }, + )) + + if main_request: + output_requirements = self.user_message_output_requirements(signature) + if output_requirements is not None: + messages.append(output_requirements) + + messages.append(suffix) + return "\n\n".join(messages).strip() + def format_assistant_message_content( self, signature: type[Signature], diff --git a/tests/adapters/test_xml_adapter.py b/tests/adapters/test_xml_adapter.py index 4a0844b37a..d831690c90 100644 --- a/tests/adapters/test_xml_adapter.py +++ b/tests/adapters/test_xml_adapter.py @@ -291,7 +291,7 @@ class QA(dspy.Signature): ) expected_user = ( - "[[ ## query ## ]]\nwhen was Marie Curie born\n\n" + "\nwhen was Marie Curie born\n\n\n" "Respond with the corresponding output fields wrapped in XML tags ``." )