agentscope-ai / agentscope-ai/agentscope-java

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

Đang mở
#602 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
area/core/agent bug
Ngôn ngữ chính
Java
Star
5.6k
Fork
1.3k
Merge trung bình
4 ngày 12 giờ
Pull request đã merge (30 ngày)
77

Mô tả

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)

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.