agentscope-ai / agentscope-ai/agentscope-java

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

Offen
#1,633 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area/core/tool bug
Vorherrschende Sprache
Java
Sterne
5.6k
Forks
1.3k
Ø Merge
4 T. 12 Std.
Gemergte PRs (30 T.)
77

Beschreibung

**通过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。

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.