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 ``."
)