From 7477b6cce06628189f83362f1af695ba58ffd923 Mon Sep 17 00:00:00 2001 From: 0007 <0007@qq.com> Date: Wed, 27 Aug 2025 19:58:39 +0800 Subject: [PATCH] Add File --- .../core/react/ReActMessageBuilder.java | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 agents-flex-core/src/main/java/com/agentsflex/core/react/ReActMessageBuilder.java diff --git a/agents-flex-core/src/main/java/com/agentsflex/core/react/ReActMessageBuilder.java b/agents-flex-core/src/main/java/com/agentsflex/core/react/ReActMessageBuilder.java new file mode 100644 index 0000000..c07cb3b --- /dev/null +++ b/agents-flex-core/src/main/java/com/agentsflex/core/react/ReActMessageBuilder.java @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2023-2025, Agents-Flex (fuhai999@gmail.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.agentsflex.core.react; + +import com.agentsflex.core.llm.functions.Function; +import com.agentsflex.core.message.HumanMessage; +import com.agentsflex.core.message.Message; + +import java.util.List; + +public class ReActMessageBuilder { + + + /** + * 构建 ReAct 开始消息 + * + * @param prompt 提示词 + * @param functions 函数列表 + * @param userQuery 用户问题 + * @return 返回 HumanMessage + */ + public Message buildStartMessage(String prompt, List functions, String userQuery) { + HumanMessage message = new HumanMessage(prompt); + message.addMetadata("tools", functions); + message.addMetadata("user_input", userQuery); + message.addMetadata("type", "reActWrapper"); + return message; + } + + + /** + * 构建 JSON 解析错误消息,用于 json 发送错误时,让 AI 自动修正 + * + * @param e 错误信息 + * @param step 发送错误的步骤 + * @return 返回 HumanMessage + */ + public Message buildJsonParserErrorMessage(Exception e, ReActStep step) { + String errorMsg = "JSON 解析失败: " + e.getMessage() + ", 原始内容: " + step.getActionInput(); + String observation = "Action:" + step.getAction() + "\n" + + "Action Input:" + step.getActionInput() + "\n" + + "Error:" + errorMsg + "\n" + + "请检查你的 Action Input 格式是否正确,并纠正 JSON 内容重新生成响应。\n"; + HumanMessage humanMessage = new HumanMessage(observation + "请继续推理下一步。"); + humanMessage.addMetadata("type", "reActObservation"); + return humanMessage; + } + + /** + * 构建 Observation 消息,让 AI 自动思考 + * + * @param step 步骤 + * @param result 步骤结果 + * @return 步骤结果消息 + */ + public Message buildObservationMessage(ReActStep step, Object result) { + String observation = buildObservationString(step, result); + HumanMessage humanMessage = new HumanMessage(observation + "\n请继续推理下一步。"); + humanMessage.addMetadata("type", "reActObservation"); + return humanMessage; + } + + + /** + * 构建 Observation 字符串 + * + * @param step 步骤 + * @param result 步骤结果 + * @return 步骤结果字符串 + */ + public static String buildObservationString(ReActStep step, Object result) { + return "Action:" + step.getAction() + "\n" + + "Action Input:" + step.getActionInput() + "\n" + + "Action Result:" + result + "\n"; + } + + /** + * 构建 Action 错误消息,用于 Action 错误时,让 AI 自动修正 + * + * @param step 步骤 + * @param e 错误信息 + * @return 错误消息 + */ + public Message buildActionErrorMessage(ReActStep step, Exception e) { + // 将错误信息反馈给 AI,让其修正 + String observation = buildObservationString(step, "Error: " + e.getMessage()) + "\n" + + "请根据错误信息调整参数并重新尝试。\n"; + HumanMessage humanMessage = new HumanMessage(observation + "请继续推理下一步。"); + humanMessage.addMetadata("type", "reActObservation"); + return humanMessage; + } +}