Spring AI学习

📅 发布时间:2026/7/13 11:01:52 👁️ 浏览次数:
Spring AI学习
ChatClient是一个用于与 LLM 进行聊天对话交互的客户端封装。它屏蔽了很多底层 HTTP 调用、请求构造、响应解析等细节开发者只需要通过它简单的 API就可以发起问题并得到 AI 的回答。核心功能● 自动注入底层模型如 OpenAI、DeepSeek 等● 支持设置默认的 system prompt系统角色描述● 支持拦截器advisor扩展比如记录日志、预处理消息等● 提供同步/异步的聊天接口ChatClient的配置BeanpublicChatClientchatClient(DeepSeekChatModelmodel){returnChatClient.builder(model).build();}public ChatClient chatClient(DeepSeekChatModel model)定义一个返回ChatClient的Bean方法并接收一个DeepSeekChatModel对象作为参数是Spring AI 中对DeepSeek模型的封装负责和DeepSeek API通信。ChatClient.builder(model)创建一个ChatClient的构建器告诉客户端使用哪个模型。示例RestControllerRequestMapping(/simple)publicclassSimpleChatController{ResourceprivateChatClientchatClient;RequestMapping(value/chat,producestext/html;charsetutf-8)publicFluxStringchat(RequestParam(prompt)Stringprompt){returnchatClient.prompt()//传入用户的对话.user(prompt)//进行调用,流式调用.stream()//返回内容.content();}}SpringAI – Advisor设计思想类似于AOP是于大模型Chat请求和响应的拦截器。在请求发给LLM之前做一些事情比如记录日志检查输入添加元数据在LLM返回响应之后做一些事情比如记录响应对响应进行过滤修改请求--Advisor前置处理--模型调用--Advisor后置处理--返回响应SpringAI – SimpleLoggerAdvisor是SpringAI官方内置的一个简单日志记录器作用打印请求和响应不会做任何修改参数校验或安全检查privatevoidlogRequest(ChatClientRequestrequest){logger.debug(request: {},this.requestToString.apply(request));}privatevoidlogResponse(ChatClientResponsechatClientResponse){logger.debug(response: {},this.responseToString.apply(chatClientResponse.chatResponse()));}**注意**SimpleLoggerAdvisor的打印日志级别是debug所以要把把项目log4j中的配置文件改成debug级别ConsolenameConsoletargetSYSTEM_OUT!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--!--ThresholdFilterleveltraceonMatchACCEPTonMismatchDENY/--!--输出日志的格式--PatternLayoutpattern${PATTERN}/ThresholdFilterleveldebug//ConsoleLoggers!--过滤掉spring和mybatis的一些无用的DEBUG信息--logger nameorg.springframeworkleveldebugadditivitytrue/logger nameorg.mybatisleveldebugadditivitytrue/!--配置日志的根节点--root leveldebugappender-ref refConsole/appender-ref refRollingFile/appender-ref refRollingFileError//root/LoggersSpringAI - defaultAdvisors在SpringAI 的ChatClient构建时传入的一个 全局默认拦截器列表。所有通过这个ChatClient发出的请求都会经过这些advisor简单类比AOP就是串联一系列的切面。.defaultAdvisors(newSimpleLoggerAdvisor())提示词BeanpublicChatClientchatClient(DeepSeekChatModelmodel){returnChatClient.builder(model).defaultSystem(你是一位智能助手你的特点是温柔、善良你的名字叫智能小艾要结合你的特点积极的回答用户的问题。).defaultAdvisors(newSimpleLoggerAdvisor()).build();}