AgentScope 版本 1
1、工具的定义
public class SimpleTools {
@Tool(name = "get_time", description = "获取当前时间")
public String getTime(
@ToolParam(name = "zone", description = "时区,例如:北京") String zone) {
return java.time.LocalDateTime.now()
.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
}
2、调用工具
@GetMapping(path = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> chat(
@RequestParam String message, HttpServletResponse httpServletResponse) {
httpServletResponse.setCharacterEncoding("UTF-8");
Toolkit toolkit = new Toolkit();
toolkit.registerTool(new SimpleTools());
// 创建 Agent,注意 model 需要 stream(true)
ReActAgent agent = ReActAgent.builder()
.name("WebAgent").toolkit(toolkit)
.model(DashScopeChatModel.builder()
.apiKey(apiKey)
.modelName("qwen-plus")
.stream(true) // 开启模型级流式
.build())
.build();
// 构建用户消息
Msg userMsg = Msg.builder().textContent(message).build();
// 配置流式选项 — 增量模式
StreamOptions streamOptions = StreamOptions.builder()
// 选择要接收的事件类型
.eventTypes(EventType.REASONING, EventType.TOOL_RESULT, EventType.AGENT_RESULT)
// true = 增量模式(只发送新增内容),false = 累积模式(每次发送全部已累积内容)
.incremental(true)
// 是否包含最终推理结果(把流式输出的内容拼在一起一次性返回)
.includeReasoningResult(false)
.build();
// 调用 stream() 获取事件流
return agent.stream(userMsg, streamOptions)
.subscribeOn(Schedulers.boundedElastic())
.map(event -> JSON.toJSONString(event.getMessage()))
.filter(text -> text != null && !text.isEmpty());
}
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!
浙公网安备 33010602011771号