This is an automated email from the ASF dual-hosted git repository.

wenjin272 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-agents.git

commit 535c97bd77db2c2f726c5dc3d66e9e5bd0f5346d
Author: WenjinXie <[email protected]>
AuthorDate: Thu Mar 26 14:36:56 2026 +0800

    [api] Inject output format prompt after the first system prompt for ReAct 
agent.
---
 python/flink_agents/api/agents/react_agent.py | 9 +++++++--
 python/flink_agents/api/chat_message.py       | 8 ++++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/python/flink_agents/api/agents/react_agent.py 
b/python/flink_agents/api/agents/react_agent.py
index fbb4b93f..20a42612 100644
--- a/python/flink_agents/api/agents/react_agent.py
+++ b/python/flink_agents/api/agents/react_agent.py
@@ -25,7 +25,11 @@ from pyflink.common.typeinfo import RowTypeInfo
 
 from flink_agents.api.agents.agent import STRUCTURED_OUTPUT, Agent
 from flink_agents.api.agents.types import OutputSchema
-from flink_agents.api.chat_message import ChatMessage, MessageRole
+from flink_agents.api.chat_message import (
+    ChatMessage,
+    MessageRole,
+    find_first_system_message,
+)
 from flink_agents.api.decorators import action
 from flink_agents.api.events.chat_event import ChatRequestEvent, 
ChatResponseEvent
 from flink_agents.api.events.event import InputEvent, OutputEvent
@@ -185,7 +189,8 @@ class ReActAgent(Agent):
 
         if schema_prompt:
             instruct = schema_prompt.format_messages()
-            usr_msgs = instruct + usr_msgs
+            index = find_first_system_message(usr_msgs)
+            usr_msgs = usr_msgs[: index + 1] + instruct + usr_msgs[index + 1 :]
 
         output_schema = ctx.get_action_config_value(key="output_schema")
 
diff --git a/python/flink_agents/api/chat_message.py 
b/python/flink_agents/api/chat_message.py
index edad466f..adb67e08 100644
--- a/python/flink_agents/api/chat_message.py
+++ b/python/flink_agents/api/chat_message.py
@@ -67,3 +67,11 @@ class ChatMessage(BaseModel):
 
     def __str__(self) -> str:
         return f"{self.role.value}: {self.content}"
+
+
+def find_first_system_message(messages: List[ChatMessage]) -> int:
+    """Helper method to find the index of the first system message."""
+    for i in range(len(messages)):
+        if messages[i].role == MessageRole.SYSTEM:
+            return i
+    return -1

Reply via email to