agentscope笔记 todo
文章目录maven依赖示例1AgentScopeConfig配置AgentScopeController类示例2WeatherTools类报错报错 java.lang.NoClassDefFoundError: com/networknt/schema/SpecificationVersion注agentscope2.x和1.x改动极大一定先弄清版本再说什么问题。版本spring-boot # 3.3.5langchain4j # 0.34.0langgraph4j # 1.8.17agentscope # 2.0.0-RC2maven依赖属性agentscope.version2.0.0-RC2/agentscope.version!-- AgentScope 核心模块 --dependencygroupIdio.agentscope/groupIdartifactIdagentscope-core/artifactIdversion${agentscope.version}/version/dependency示例1AgentScopeConfig配置直接在controller或service写也能用就是代码丑些写成配置便于复用chatModel。importio.agentscope.core.model.OpenAIChatModel;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;ConfigurationpublicclassAgentScopeConfig{// 直接复用您现有的配置项无需在 yml 中重复配置Value(${langchain4j.open-ai.chat-model.api-key})privateStringapiKey;Value(${langchain4j.open-ai.chat-model.base-url})privateStringbaseUrl;Value(${langchain4j.open-ai.chat-model.model-name})privateStringmodelName;BeanpublicOpenAIChatModelagentScopeChatModel(){returnOpenAIChatModel.builder().apiKey(apiKey).baseUrl(baseUrl).modelName(modelName).stream(true)// AgentScope 默认推荐开启流式体验更好.build();}}AgentScopeController类importio.agentscope.core.ReActAgent;importio.agentscope.core.model.OpenAIChatModel;importio.agentscope.core.message.Msg;// 引入消息类importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;RestControllerRequestMapping(/api)publicclassAgentScopeController{// 直接注入 Spring 容器中配置好的模型AutowiredprivateOpenAIChatModelagentScopeChatModel;GetMapping(/agentscope/chat)publicStringchat(RequestParamStringmessage){// 1. 构建 ReAct 智能体直接传入注入的模型ReActAgentagentReActAgent.builder().name(StudentAgent).sysPrompt(你是一个乐于助人的AI助手请用简短的中文回答。).model(agentScopeChatModel).build();// 2. 将字符串封装为 AgentScope 的 Msg 对象MsguserMsgMsg.builder().textContent(message).build();// 3. 调用 call() 方法使用 .block() 阻塞等待获取最终结果Msgresponseagent.call(userMsg).block();// 4. 提取并返回纯文本内容returnresponse!null?response.getTextContent():未获取到回复;}}示例2WeatherTools类importio.agentscope.core.tool.Tool;importio.agentscope.core.tool.ToolParam;publicclassWeatherTools{Tool(description查询指定城市的当前天气)publicStringgetWeather(ToolParam(namecity,description城市名称)Stringcity){return城市 city 当前天气晴朗24℃;}}报错报错 java.lang.NoClassDefFoundError: com/networknt/schema/SpecificationVersion原因AgentScope 的依赖AgentScope 内部使用了 com.networknt:json-schema-validator 来校验工具参数。版本不匹配json-schema-validator 的某些新版本如 3.0.1开始使用 tools.jacksonFasterXML Jackson 的一个分支或新版本而您的 Spring Boot 项目使用的是标准的 com.fasterxml.jackson。类路径污染当两个库同时存在时类加载器会混乱导致 tools.jackson 找不到它期望的类结构。解决方案(最终未解决)1、属性json-schema-validator.version1.0.87/json-schema-validator.version显示依赖dependencygroupIdcom.networknt/groupIdartifactIdjson-schema-validator/artifactIdversion${json-schema-validator.version}/version/dependencymanagement里面也显式依赖dependencygroupIdcom.networknt/groupIdartifactIdjson-schema-validator/artifactIdversion${json-schema-validator.version}/version/dependency2、update project3、删除maven仓库下的2.0版本4、clean并package实测还是不行直接升2.0了。