Skip to content

Commit fdf6e60

Browse files
fix(nemo-agents): Support Studio multi-turn transcript replay for Fabric agents (#1015)
* interim workaround Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com> * lint Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com> * remove ticket number Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com> --------- Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
1 parent 8da2cd4 commit fdf6e60

2 files changed

Lines changed: 26 additions & 4 deletions

File tree

plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,16 @@ def _to_fabric_invocation_request(
7474
*,
7575
session_id: str,
7676
) -> FabricInvocationRequest:
77-
"""Translate the current chat turn into a Platform-owned Fabric request."""
77+
"""Translate the chat transcript into a Platform-owned Fabric request."""
78+
messages = request.messages
79+
# Interim behavior to get multi-turn in Studio chat.
80+
input_text = (
81+
messages[0].content
82+
if len(messages) == 1
83+
else "\n\n".join(f"{message.role}: {message.content}" for message in messages)
84+
)
7885
return FabricInvocationRequest(
79-
input=request.messages[-1].content,
86+
input=input_text,
8087
caller_context={"session_id": session_id},
8188
)
8289

plugins/nemo-agents/tests/unit/test_fabric_server.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,22 @@ async def invoke_session(session: Any, request: Any) -> FabricRuntimeResult:
570570
assert response.json() == {"detail": "adapter failed"}
571571

572572

573-
def test_chat_completion_request_translates_final_user_turn() -> None:
573+
def test_chat_completion_request_preserves_single_user_turn() -> None:
574+
request = ChatCompletionRequest.model_validate(
575+
{
576+
"messages": [{"role": "user", "content": "Say hello."}],
577+
"model": "test-model",
578+
"stream": False,
579+
}
580+
)
581+
582+
invocation_request = server._to_fabric_invocation_request(request, session_id="session-1")
583+
584+
assert invocation_request.input == "Say hello."
585+
assert invocation_request.caller_context == {"session_id": "session-1"}
586+
587+
588+
def test_chat_completion_request_serializes_full_transcript() -> None:
574589
request = ChatCompletionRequest.model_validate(
575590
{
576591
"messages": [
@@ -585,7 +600,7 @@ def test_chat_completion_request_translates_final_user_turn() -> None:
585600

586601
invocation_request = server._to_fabric_invocation_request(request, session_id="session-1")
587602

588-
assert invocation_request.input == "Say hello."
603+
assert invocation_request.input == ("system: Be concise.\n\nassistant: How can I help?\n\nuser: Say hello.")
589604
assert invocation_request.caller_context == {"session_id": "session-1"}
590605

591606

0 commit comments

Comments
 (0)