Solon v3.8.0

react - 示例1 - 计算器场景

</> markdown
2026年1月4日 下午10:38:32

一个简单的计算器场景

示例代码

import demo.ai.agent.LlmUtil;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.noear.solon.ai.agent.react.ReActAgent;
import org.noear.solon.ai.annotation.ToolMapping;
import org.noear.solon.ai.chat.ChatModel;
import org.noear.solon.ai.chat.tool.MethodToolProvider;
import org.noear.solon.annotation.Param;
import org.noear.solon.flow.FlowContext;

public class ReActAgentTest {

    @Test
    public void testMathAndLogic() throws Throwable {
        ChatModel chatModel = LlmUtil.getChatModel();

        ReActAgent agent = ReActAgent.of(chatModel)
                .addTool(new MethodToolProvider(new MathTools()))
                .chatOptions(o -> o.temperature(0.0F))
                .build();

        FlowContext context = FlowContext.of("demo1");
        String result = agent.call(context, "先计算 12 加 34 的和,再把结果乘以 2 等于多少?");

        Assertions.assertNotNull(result);
        Assertions.assertTrue(result.contains("92"), "计算结果应为 92,实际返回: " + result);
    }

    public static class MathTools {
        @ToolMapping(description = "计算两个数字的和")
        public double adder(@Param double a, @Param double b) {
            return a + b;
        }

        @ToolMapping(description = "计算两个数字的乘积")
        public double multiplier(@Param double a, @Param double b) {
            return a * b;
        }
    }
}