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
