本附录提供AgentScope-Java核心API的快速参考,方便开发者查阅常用接口和方法。
A.1 Agent API
A.1.1 ReActAgent
ReActAgent agent = ReActAgent.builder()
.name("AgentName")
.sysPrompt("You are a helpful assistant")
.model(chatModel)
.memory(memory)
.toolkit(toolkit)
.hooks(List.of(hook1, hook2))
.maxIters(10)
.longTermMemory(longTermMemory)
.knowledge(knowledge)
.ragMode(RAGMode.AGENTIC)
.enablePlan()
.structuredOutputReminder(StructuredOutputReminder.PROMPT)
.build();
Msg response = agent.call(userMsg).block();
Flux<Event> eventFlux = agent.stream(userMsg);
Msg response = agent.call(userMsg, Schema.class).block();
Msg response = agent.call().block();
agent.interrupt();
agent.saveTo(session, sessionId);
agent.loadFrom(session, sessionId);
agent.loadIfExists(session, sessionId);
A.1.2 UserAgent
UserAgent userAgent = UserAgent.builder()
.name("HumanUser")
.inputMethod(userInput)
.build();
public interface UserInputBase {
Mono<Msg> getUserInput(String prompt);
}
A.2 Model API
A.2.1 DashScopeChatModel
DashScopeChatModel model = DashScopeChatModel.builder()
.apiKey("sk-xxx")
.modelName("qwen-max")
.stream(true)
.enableThinking(true)
.formatter(new DashScopeChatFormatter())
.defaultOptions(GenerateOptions.builder()
.thinkingBudget(1024)
.temperature(0.7)
.maxTokens(4096)
.build())
.build();
A.2.2 OpenAIChatModel
OpenAIChatModel model = OpenAIChatModel.builder()
.apiKey("sk-xxx")
.modelName("gpt-4")
.baseUrl("https://api.openai.com/v1")
.formatter(new OpenAIChatFormatter())
.build();
A.2.3 GenerateOptions
GenerateOptions options = GenerateOptions.builder()
.temperature(0.7)
.maxTokens(4096)
.thinkingBudget(1024)
.topP(0.9)
.seed(42)
.build();
A.3 Memory API
A.3.1 InMemoryMemory
InMemoryMemory memory = new InMemoryMemory();
memory.addMessage(msg);
memory.addMessages(List.of(msg1, msg2));
List<Msg> messages = memory.getMessages();
List<Msg> recent = memory.getRecentMessages(10);
memory.clear();
A.3.2 AutoContextMemory
AutoContextConfig config = AutoContextConfig.builder()
.tokenRatio(0.4)
.lastKeep(10)
.build();
AutoContextMemory memory = new AutoContextMemory(config, model);
A.3.3 Mem0LongTermMemory
Mem0LongTermMemory longTermMemory = Mem0LongTermMemory.builder()
.apiKey("mem0-api-key")
.userId("user-123")
.agentName("MyAgent")
.apiBaseUrl("https://api.mem0.ai")
.build();
A.4 Message API
A.4.1 Msg
Msg userMsg = Msg.builder()
.role(MsgRole.USER)
.name("User")
.content(TextBlock.builder().text("Hello").build())
.metadata(Map.of("key", "value"))
.build();
String text = msg.getTextContent();
List<TextBlock> textBlocks = msg.getContentBlocks(TextBlock.class);
boolean hasTools = msg.hasContentBlocks(ToolUseBlock.class);
Schema data = msg.getStructuredData(Schema.class);
A.4.2 ContentBlock类型
| 类型 |
描述 |
| TextBlock |
文本内容 |
| ImageBlock |
图片内容 |
| AudioBlock |
音频内容 |
| VideoBlock |
视频内容 |
| ToolUseBlock |
工具调用请求 |
| ToolResultBlock |
工具执行结果 |
| ThinkingBlock |
思考过程 |
| FileBlock |
文件内容 |
A.4.3 MsgRole
| 角色 |
描述 |
| SYSTEM |
系统消息 |
| USER |
用户消息 |
| ASSISTANT |
助手消息 |
| TOOL |
工具结果 |
A.5 Tool API
A.5.1 工具注解
public class MyTools {
@Tool(
name = "tool_name",
description = "Tool description"
)
public String myTool(
@ToolParam(
name = "param1",
description = "Parameter description"
) String param1,
@ToolParam(
name = "param2",
description = "Optional param",
required = false
) Integer param2) {
return "result";
}
}
A.5.2 Toolkit
Toolkit toolkit = new Toolkit();
toolkit.registerTool(new MyTools());
Set<String> toolNames = toolkit.getToolNames();
List<ToolDefinition> tools = toolkit.getTools();
toolkit.registerMcpClient(mcpClient).block();
A.6 Pipeline API
A.6.1 MsgHub
try (MsgHub hub = MsgHub.builder()
.name("HubName")
.participants(agent1, agent2, agent3)
.announcement(announcementMsg)
.enableAutoBroadcast(true)
.build()) {
hub.enter().block();
agent1.call().block();
hub.broadcast(messages).block();
hub.setAutoBroadcast(false);
hub.exit().block();
}
A.6.2 SequentialPipeline
SequentialPipeline pipeline = SequentialPipeline.builder()
.addAgent(agent1)
.addAgent(agent2)
.addAgent(agent3)
.build();
Msg result = pipeline.execute(inputMsg)
.block(Duration.ofMinutes(3));
A.7 Hook API
A.7.1 Hook接口
public interface Hook {
<T extends HookEvent> Mono<T> onEvent(T event);
}
A.7.2 事件类型
| 事件类型 |
触发时机 |
| PreReasoningEvent |
推理前 |
| PostReasoningEvent |
推理后 |
| PreActingEvent |
执行前 |
| PostActingEvent |
执行后 |
| PostCallEvent |
调用完成后 |
| ErrorEvent |
发生错误时 |
A.7.3 PostReasoningEvent方法
postReasoningEvent.stopAgent();
postReasoningEvent.gotoReasoning();
Msg msg = postReasoningEvent.getReasoningMessage();
A.8 Session API
A.8.1 Session接口
public interface Session {
<T> void save(SessionKey key, String name, T value);
<T> T get(SessionKey key, String name, Class<T> type);
<T> void saveList(SessionKey key, String name, List<T> values, Class<T> elementType);
<T> List<T> getList(SessionKey key, String name, Class<T> elementType);
void delete(SessionKey key);
boolean exists(SessionKey key);
}
A.8.2 实现类
Session session = new InMemorySession();
Session session = new JsonSession(Paths.get("/path/to/sessions"));
A.9 RAG API
A.9.1 Knowledge
Knowledge knowledge = SimpleKnowledge.builder()
.embeddingModel(embeddingModel)
.embeddingStore(vectorStore)
.build();
knowledge.addDocuments(documents).block();
List<Document> results = knowledge.retrieve(query, limit).block();
A.9.2 RAGMode
| 模式 |
描述 |
| GENERIC |
每次查询自动检索 |
| AGENTIC |
Agent决定何时检索 |
A.10 Tracing API
A.10.1 TracerRegistry
TracerRegistry.register(tracer);
TracerRegistry.enableTracingHook();
TracerRegistry.disableTracingHook();
A.10.2 TelemetryTracer
TelemetryTracer tracer = TelemetryTracer.builder()
.endpoint("https://endpoint/v1/traces")
.addHeader("Authorization", "Bearer token")
.build();
A.11 A2A API
A.11.1 AgentRunner
public interface AgentRunner {
String getAgentName();
String getAgentDescription();
Flux<Event> stream(List<Msg> requestMessages, AgentRequestOptions options);
void stop(String taskId);
}
A.11.2 A2aClientAgent
A2aClientAgent remoteAgent = A2aClientAgent.builder()
.name("remote_agent")
.serverUrl("http://agent-service:8080")
.build();
所有评论(0)