agentscope笔记 todo
文章目录
- maven依赖
- 示例1
- AgentScopeConfig配置
- AgentScopeController类
- 示例2
- WeatherTools类
- 报错
- 报错 java.lang.NoClassDefFoundError: com/networknt/schema/SpecificationVersion
注:agentscope2.x和1.x改动极大,一定先弄清版本再说什么问题。
版本:
spring-boot # 3.3.5
langchain4j # 0.34.0
langgraph4j # 1.8.17
agentscope # 2.0.0-RC2
maven依赖
属性:<agentscope.version>2.0.0-RC2</agentscope.version><!-- AgentScope 核心模块 --><dependency><groupId>io.agentscope</groupId><artifactId>agentscope-core</artifactId><version>${agentscope.version}</version></dependency>示例1
AgentScopeConfig配置
直接在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;@RestController@RequestMapping("/api")publicclassAgentScopeController{// 直接注入 Spring 容器中配置好的模型@AutowiredprivateOpenAIChatModelagentScopeChatModel;@GetMapping("/agentscope/chat")publicStringchat(@RequestParamStringmessage){// 1. 构建 ReAct 智能体,直接传入注入的模型ReActAgentagent=ReActAgent.builder().name("StudentAgent").sysPrompt("你是一个乐于助人的AI助手,请用简短的中文回答。").model(agentScopeChatModel).build();// 2. 将字符串封装为 AgentScope 的 Msg 对象MsguserMsg=Msg.builder().textContent(message).build();// 3. 调用 call() 方法,使用 .block() 阻塞等待获取最终结果Msgresponse=agent.call(userMsg).block();// 4. 提取并返回纯文本内容returnresponse!=null?response.getTextContent():"未获取到回复";}}示例2
WeatherTools类
importio.agentscope.core.tool.Tool;importio.agentscope.core.tool.ToolParam;publicclassWeatherTools{@Tool(description="查询指定城市的当前天气")publicStringgetWeather(@ToolParam(name="city",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.jackson(FasterXML Jackson 的一个分支或新版本),而您的 Spring Boot 项目使用的是标准的 com.fasterxml.jackson。
类路径污染:当两个库同时存在时,类加载器会混乱,导致 tools.jackson 找不到它期望的类结构。
解决方案(最终未解决):
1、
属性:<json-schema-validator.version>1.0.87</json-schema-validator.version>显示依赖:<dependency><groupId>com.networknt</groupId><artifactId>json-schema-validator</artifactId><version>${json-schema-validator.version}</version></dependency>management里面也显式依赖:<dependency><groupId>com.networknt</groupId><artifactId>json-schema-validator</artifactId><version>${json-schema-validator.version}</version></dependency>2、update project
3、删除maven仓库下的2.0版本
4、clean并package
实测还是不行,直接升2.0了。
