diff --git a/plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py b/plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py index b8a24c832c..5a32a1bf41 100644 --- a/plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py +++ b/plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py @@ -74,9 +74,16 @@ def _to_fabric_invocation_request( *, session_id: str, ) -> FabricInvocationRequest: - """Translate the current chat turn into a Platform-owned Fabric request.""" + """Translate the chat transcript into a Platform-owned Fabric request.""" + messages = request.messages + # Interim behavior to get multi-turn in Studio chat. + input_text = ( + messages[0].content + if len(messages) == 1 + else "\n\n".join(f"{message.role}: {message.content}" for message in messages) + ) return FabricInvocationRequest( - input=request.messages[-1].content, + input=input_text, caller_context={"session_id": session_id}, ) diff --git a/plugins/nemo-agents/tests/unit/test_fabric_server.py b/plugins/nemo-agents/tests/unit/test_fabric_server.py index 8df8719f62..421e38b771 100644 --- a/plugins/nemo-agents/tests/unit/test_fabric_server.py +++ b/plugins/nemo-agents/tests/unit/test_fabric_server.py @@ -570,7 +570,22 @@ async def invoke_session(session: Any, request: Any) -> FabricRuntimeResult: assert response.json() == {"detail": "adapter failed"} -def test_chat_completion_request_translates_final_user_turn() -> None: +def test_chat_completion_request_preserves_single_user_turn() -> None: + request = ChatCompletionRequest.model_validate( + { + "messages": [{"role": "user", "content": "Say hello."}], + "model": "test-model", + "stream": False, + } + ) + + invocation_request = server._to_fabric_invocation_request(request, session_id="session-1") + + assert invocation_request.input == "Say hello." + assert invocation_request.caller_context == {"session_id": "session-1"} + + +def test_chat_completion_request_serializes_full_transcript() -> None: request = ChatCompletionRequest.model_validate( { "messages": [ @@ -585,7 +600,7 @@ def test_chat_completion_request_translates_final_user_turn() -> None: invocation_request = server._to_fabric_invocation_request(request, session_id="session-1") - assert invocation_request.input == "Say hello." + assert invocation_request.input == ("system: Be concise.\n\nassistant: How can I help?\n\nuser: Say hello.") assert invocation_request.caller_context == {"session_id": "session-1"}