agentscope-ai / agentscope-ai/agentscope-java

[Bug]: postActingEvent.stopAgent();后response.getGenerateReason()没有拿到ACTING_STOP_REQUESTED而是MODEL_STOP

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

Descripción

package cn.com.qtgl.agents;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import io.agentscope.core.ReActAgent;
import io.agentscope.core.agent.Event;
import io.agentscope.core.hook.*;
import io.agentscope.core.memory.InMemoryMemory;
import io.agentscope.core.memory.Memory;
import io.agentscope.core.message.*;
import io.agentscope.core.model.ExecutionConfig;
import io.agentscope.core.model.OpenAIChatModel;
import io.agentscope.core.tool.Toolkit;
import org.slf4j.LoggerFactory;
import reactor.core.publisher.Mono;

public class 测试V2 {
static {
Logger targetLogger = (Logger) LoggerFactory.getLogger("io.agentscope.core.model.OpenAIClient");
targetLogger.setLevel(Level.DEBUG);
}

public static void main(String[] args) {

// =========================
// 1. 构建 Toolkit & ToolSchema
// =========================
Toolkit toolkit = new Toolkit();

toolkit.registerTool(new Tools());
Hook hook = new Hook() {

@Override
public Mono onEvent(T event) {
if (event instanceof PostActingEvent postActingEvent) {
String tool = postActingEvent.getToolUse().getName();
if (tool.equals("query_weather")) {
postActingEvent.stopAgent();
}
}
return Mono.just(event);
}
};

OpenAIChatModel model = OpenAIChatModel.builder()
.baseUrl("https://one-api.ketanyun.com/v1")
.apiKey("sk-xxx")
.modelName("qwen3-next-80b-a3b-instruct")
.stream(false)
.build();
Memory memory = new InMemoryMemory();

ReActAgent agent = ReActAgent.builder()
.name("Assistant")
.sysPrompt("""
你是一个有帮助的 AI 助手。
可使用get_current_date工具获取当前日期
""")
.model(model)
.memory(memory)
.toolkit(toolkit)
.hook(hook)
.modelExecutionConfig(ExecutionConfig.builder().maxAttempts(3).build())
.build();

Event event = agent.stream(
Msg.builder()
.textContent("上海明天的天气怎么样?")
.build()
).blockLast();

System.out.println(event.getMessage().getGenerateReason());
System.out.println(event.getMessage().getTextContent());
//模拟下一轮对话
event = agent.stream(Msg.builder().textContent("谢谢,再见").build()).blockLast();

System.out.println(event.getMessage().getTextContent());
}
}

package cn.com.qtgl.agents;

import io.agentscope.core.tool.Tool;
import io.agentscope.core.tool.ToolParam;

import java.time.LocalDate;

/**
* @author 杜文康
* @date 2026/1/19 22:23
*/
public class Tools {

@Tool(description = "获取指定城市的天气")
public String query_weather(
@ToolParam(name = "city", description = "城市名称") String city, @ToolParam(name = "date", description = "日期") String date) {
return city + " 的天气:晴天,25°C,日期:" + date;
}

@Tool(description = "获取当前日期")
public String get_current_date() {
return LocalDate.now().toString();
}

}
运行输出:
2026-01-19 22:49:39.047 [main] INFO i.a.c.tool.Toolkit: - Registered tool 'query_weather' in group 'ungrouped'
2026-01-19 22:49:39.051 [main] INFO i.a.c.tool.Toolkit: - Registered tool 'get_current_date' in group 'ungrouped'
2026-01-19 22:49:43.818 [main] DEBUG i.a.c.m.OpenAIClient: - OpenAI request to https://one-api.ketanyun.com/v1/chat/completions: {"model":"qwen3-next-80b-a3b-instruct","messages":[{"role":"system","content":"你是一个有帮助的 AI 助手。\n可使用get_current_date工具获取当前日期\n"},{"role":"user","content":"上海明天的天气怎么样?"}],"stream":false,"tools":[{"type":"function","function":{"name":"query_weather","description":"获取指定城市的天气","parameters":{"type":"object","properties":{"date":{"type":"string","description":"日期"},"city":{"type":"string","description":"城市名称"}},"required":["city","date"]}}},{"type":"function","function":{"name":"get_current_date","description":"获取当前日期","parameters":{"type":"object","properties":{}}}}]}
2026-01-19 22:49:45.110 [main] DEBUG i.a.c.m.OpenAIClient: - OpenAI response: {"choices":[{"message":{"content":"","role":"assistant","tool_calls":[{"function":{"arguments":"{\"city\": \"上海\", \"date\": \"明天\"}","name":"query_weather"},"id":"call_b8a1a535d398476297de04","index":0,"type":"function"}]},"finish_reason":"tool_calls","index":0,"logprobs":null}],"object":"chat.completion","usage":{"prompt_tokens":234,"completion_tokens":25,"total_tokens":259},"created":1768834185,"system_fingerprint":null,"model":"qwen3-next-80b-a3b-instruct","id":"chatcmpl-363e06ce-4497-90ec-8263-e447f06a7205"}
MODEL_STOP

2026-01-19 22:49:56.787 [main] DEBUG i.a.c.m.OpenAIClient: - OpenAI request to https://one-api.ketanyun.com/v1/chat/completions: {"model":"qwen3-next-80b-a3b-instruct","messages":[{"role":"system","content":"你是一个有帮助的 AI 助手。\n可使用get_current_date工具获取当前日期\n"},{"role":"user","content":"上海明天的天气怎么样?"},{"role":"assistant","name":"Assistant","tool_calls":[{"id":"call_b8a1a535d398476297de04","type":"function","function":{"name":"query_weather","arguments":"{\"city\": \"上海\", \"date\": \"明天\"}"}}]},{"role":"tool","content":"\"上海 的天气:晴天,25°C,日期:明天\"","tool_call_id":"call_b8a1a535d398476297de04"},{"role":"user","content":"谢谢,再见"}],"stream":false,"tools":[{"type":"function","function":{"name":"query_weather","description":"获取指定城市的天气","parameters":{"type":"object","properties":{"date":{"type":"string","description":"日期"},"city":{"type":"string","description":"城市名称"}},"required":["city","date"]}}},{"type":"function","function":{"name":"get_current_date","description":"获取当前日期","parameters":{"type":"object","properties":{}}}}]}
2026-01-19 22:49:57.791 [main] DEBUG i.a.c.m.OpenAIClient: - OpenAI response: {"choices":[{"message":{"content":"不客气!祝你明天有个愉快的一天!再见!","role":"assistant"},"finish_reason":"stop","index":0,"logprobs":null}],"object":"chat.completion","usage":{"prompt_tokens":296,"completion_tokens":13,"total_tokens":309},"created":1768834198,"system_fingerprint":null,"model":"qwen3-next-80b-a3b-instruct","id":"chatcmpl-c3777ac9-fe13-9ddb-970a-0f65a0c58960"}
不客气!祝你明天有个愉快的一天!再见!
2026-01-19 22:49:57.798 [HttpTransportFactory-ShutdownHook] INFO i.a.c.m.t.HttpTransportFactory: - Shutting down 1 managed HttpTransport(s)

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.