@PostMapping(value = "/structured")
@operation(summary = "Agent 结构化输出",
description = "让 Agent 输出结构化的 TaskAnalysis 对象(title/priority/estimatedHours)")
public TaskAnalysis structured(@RequestParam String userMsg) {
log.info("收到结构化分析请求: {}", userMsg);
// 步骤 1: 构建专门用于任务分析的 Agent
ReActAgent agent = ReActAgent.builder()
.name("taskAnalyzer")
.sysPrompt("你是一个任务分析专家。请分析用户的任务描述,提取关键信息并结构化输出为 TaskAnalysis 对象。")
.model(notStreamModel)
.build();
// 步骤 2: 构建用户消息
Msg msg = new UserMessage(userMsg);
// 步骤 3: 调用 Agent 并传入目标类型
Msg response = agent.call(msg, TaskAnalysis.class).block();
log.info("Agent 结构化分析结果: {}", JacksonUtils.toJson(response));
// 步骤 4: 从响应中提取结构化数据
TaskAnalysis taskAnalysis = response.getStructuredData(TaskAnalysis.class);
return taskAnalysis;
}
public class TaskAnalysis {
/**
* 任务标题
*/
public String title;
/**
* 任务优先级:high/medium/low
*/
public String priority;
/**
* 预估工时(小时)
*/
public int estimatedHours;
}
@PostMapping(value = "/structured")
@operation(summary = "Agent 结构化输出",
description = "让 Agent 输出结构化的 TaskAnalysis 对象(title/priority/estimatedHours)")
public TaskAnalysis structured(@RequestParam String userMsg) {
log.info("收到结构化分析请求: {}", userMsg);
// 步骤 1: 构建专门用于任务分析的 Agent
ReActAgent agent = ReActAgent.builder()
.name("taskAnalyzer")
.sysPrompt("你是一个任务分析专家。请分析用户的任务描述,提取关键信息并结构化输出为 TaskAnalysis 对象。")
.model(notStreamModel)
.build();