agentscope-ai / agentscope-ai/agentscope-java

[Bug]:升级2.0版本后,在流式输出中事件无法正常获取到工具的完整输出结果。

Abierto
#1,633 0 comentarios 0 reacciones 0 asignados Ver en GitHub
area/core/tool bug
Lenguaje dominante
Java
Estrellas
5.6k
Forks
1.3k
Merge medio
4 d 12 h
PR fusionados (30 d)
77

Descripción

**通过ToolResultTextDeltaEvent与ToolResultDataDeltaEvent事件并未正常输出工具返回的完整信息。**

> **方法:**
public Flux chat(@RequestBody AiRequest aiRequest) {

// 创建内存会话(通常作为单例使用)
Toolkit toolkit = new Toolkit();
toolkit.registerTool(new WeatherService());
RuntimeContext ctx = RuntimeContext.builder()
.sessionId(aiRequest.getSessionId())
.userId("alice")
.build();
// 创建智能体
ReActAgent agent = ReActAgent.builder()
.name("Jarvis")
.sysPrompt("你是一个查询天气助手")
.toolkit(toolkit)
.session(session)
.model(OpenAIChatModel.builder()
.baseUrl("xxx")
.apiKey("xxx")
.modelName("xxx")
.build())
.build();
// 使用默认配置,接收所有事件,包括推理和工具调用的过程。
return agent.streamEvents(new UserMessage(aiRequest.getMessage()), ctx)
.flatMap(event -> {
AiResponse aiResponse = new AiResponse();
if(event instanceof TextBlockDeltaEvent tb) {
aiResponse.setContent(tb.getDelta());
} else if(event instanceof ToolResultDataDeltaEvent tr) {
System.out.println(tr.getType().getValue()+":"+tr.getData().toString());
}
else if(event instanceof ToolResultTextDeltaEvent tr) {
System.out.println(tr.getType().getValue()+":"+tr.getDelta());
}
else if(event instanceof ToolResultStartEvent tr) {
System.out.println(tr.getType().getValue()+":"+tr.getToolCallName());
}
else if(event instanceof ToolResultEndEvent tr) {
System.out.println(tr.getType().getValue()+":"+tr.getState());
}
else if(event instanceof ToolCallDeltaEvent tr) {
System.out.println(tr.getType().getValue()+":"+tr.getDelta());
}
else if(event instanceof ToolCallStartEvent tr) {
System.out.println(tr.getType().getValue()+":"+tr.getToolCallName());
}
else if(event instanceof ToolCallEndEvent tr) {
System.out.println(tr.getType().getValue()+":"+tr.getReplyId());
}
return Flux.just(aiResponse);
});
}

> **工具**
class WeatherService {

@Tool(description = "获取指定城市的天气")
public String getWeather(
@ToolParam(name = "city", description = "城市名称") String city) {
return city + " 的天气:晴天,25°C";
}
}
输入内容:
查询北京天气

输出结果:
TOOL_CALL_START:getWeather
TOOL_CALL_DELTA:{"city":
TOOL_CALL_DELTA:"北京
TOOL_CALL_DELTA:"
TOOL_CALL_DELTA:}
TOOL_CALL_END:d6e561736cd843ccbd6319cdff375101
TOOL_RESULT_START:getWeather
TOOL_RESULT_END:SUCCESS
TextBlockDeltaEvent : 北京目前的天气是晴天,气温 25°C。

**以上判断的所有工具相关事件都未输出工具的完整返回内容。**

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.