2026-10-21 17:57:27.786 INFO 354893 --- [io-6100-exec-12] o.s.core.mp.plugins.SqlLogInterceptor : ============== Sql Start ============== Execute SQL : insert into ai_conversation (id, resource_type, channel, title, user_id , anonymous, message_count, last_time, tenant_id, create_user , create_dept, create_time, update_user, update_time, status , is_deleted) values (2112845714524479489, 'assistant', 'web', 'hello', 2016093354253729794 , false, 0, TIMESTAMP '2026-10-21 17:57:27.773', '000000', 2016093354253729794 , 2031199933474873345, TIMESTAMP '2026-10-21 17:57:27.773', 2016093354253729794, TIMESTAMP '2026-10-21 17:57:27.773', 1 , 0) Execute Time: 6.584ms ============== Sql End ============== 2026-10-21 17:57:27.786 INFO 354893 --- [io-6100-exec-12] o.s.a.e.i.process.BladeChatMemoryLoader : 对话记忆: 自动创建会话, conversationId=2112845714524479489, model=deepseek-v4-pro 2026-10-21 17:57:27.796 INFO 354893 --- [io-6100-exec-12] o.s.core.mp.plugins.SqlLogInterceptor : ============== Sql Start ============== Execute SQL : insert into ai_run (id, resource_type, channel, conversation_id, user_id , ip, state, total_tokens, inputs, tenant_id , create_user, create_dept, create_time, update_user, update_time , is_deleted) values (2112845714574811138, 'assistant', 'web', 2112845714524479489, 2016093354253729794 , '0:0:0:0:0:0:0:1', 'running', 0, 'hello', '000000' , 2016093354253729794, 2031199933474873345, TIMESTAMP '2026-10-21 17:57:27.786', 2016093354253729794, TIMESTAMP '2026-10-21 17:57:27.786' , 0) Execute Time: 4.721ms ============== Sql End ============== 2026-10-21 17:57:30.207 WARN 354893 --- [ async-task-8] o.s.a.e.i.l.p.ProviderResponseProcessor : DeepSeek 流式数据解析失败,原始数据: {"id":"chatcmpl-db23d224-5018-9de8-b839-cb5f4531c10c","object":"chat.completion.chunk","created":1792576650,"model":"deepseek-v4-pro","choices":[],"usage":{"prompt_tokens":5,"total_tokens":63,"completion_tokens":58,"prompt_tokens_details":{"cached_tokens":0},"completion_tokens_details":{"reasoning_tokens":48}}} 2026-10-21 17:57:30.208 WARN 354893 --- [ async-task-8] o.s.a.e.i.l.p.ProviderResponseProcessor : DeepSeek 流式调用失败 org.springblade.ai.engine.inference.exception.InferenceException: DeepSeek 响应解析失败: Cannot invoke "tools.jackson.databind.JsonNode.get(String)" because "choiceNode" is null Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below: Assembly trace from producer [reactor.core.publisher.FluxHandleFuseable] : reactor.core.publisher.Flux.mapNotNull(Flux.java:6654) org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:83) Error has been observed at the following site(s): *__Flux.mapNotNull ⇢ at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:83) |_ Flux.onErrorMap ⇢ at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:84) Original Stack Trace: Caused by: java.lang.NullPointerException: Cannot invoke "tools.jackson.databind.JsonNode.get(String)" because "choiceNode" is null at org.springblade.ai.engine.inference.language.provider.deepseek.DeepSeekTemplate.buildStreamResponse(DeepSeekTemplate.java:124) at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.parseMessage(ProviderResponseProcessor.java:146) at reactor.core.publisher.Flux.lambda$mapNotNull$0(Flux.java:6655) at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:182) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:338) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onNext(MonoFlatMapMany.java:251) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:80) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:258) at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:868) at reactor.core.publisher.FluxConcatMap$WeakScalarSubscription.request(FluxConcatMap.java:482) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:338) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.request(MonoFlatMapMany.java:113) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.request(FluxFilterFuseable.java:411) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:262) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.SerializedSubscriber.request(SerializedSubscriber.java:152) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.StrictSubscriber.request(StrictSubscriber.java:140) at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.run(ReactiveTypeHandler.java:358) at org.springblade.core.context.BladeRunnableWrapper.run(BladeRunnableWrapper.java:63) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) 2026-10-21 17:57:30.213 ERROR 354893 --- [io-6100-exec-16] o.s.c.l.e.BladeRestExceptionTranslator : 业务异常 org.springblade.ai.engine.inference.exception.InferenceException: DeepSeek 响应解析失败: Cannot invoke "tools.jackson.databind.JsonNode.get(String)" because "choiceNode" is null Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below: Assembly trace from producer [reactor.core.publisher.FluxHandleFuseable] : reactor.core.publisher.Flux.mapNotNull(Flux.java:6654) org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:83) Error has been observed at the following site(s): *_______Flux.mapNotNull ⇢ at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:83) |_ Flux.onErrorMap ⇢ at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:84) |_ Flux.doOnError ⇢ at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:86) |_ Flux.doOnCancel ⇢ at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:87) |_ Flux.transform ⇢ at org.springblade.ai.engine.inference.language.provider.AbstractLanguageModelTemplate.doChatStreamRequest(AbstractLanguageModelTemplate.java:227) |_ Flux.retryWhen ⇢ at org.springblade.ai.engine.inference.language.provider.AbstractLanguageModelTemplate.chatStream(AbstractLanguageModelTemplate.java:164) |_ Flux.doOnNext ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:120) |_ Flux.doOnNext ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:121) |_ Flux.doOnNext ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:122) |_ Flux.doOnNext ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:123) |_ Flux.doOnError ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:124) |_ Flux.doFinally ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:126) *________Flux.concatMap ⇢ at reactor.util.retry.RetryBackoffSpec.lambda$generateCompanion$0(RetryBackoffSpec.java:592) |_ Flux.onErrorStop ⇢ at reactor.util.retry.RetryBackoffSpec.lambda$generateCompanion$0(RetryBackoffSpec.java:657) *__Flux.deferContextual ⇢ at reactor.util.retry.RetryBackoffSpec.generateCompanion(RetryBackoffSpec.java:590) Original Stack Trace: Caused by: java.lang.NullPointerException: Cannot invoke "tools.jackson.databind.JsonNode.get(String)" because "choiceNode" is null at org.springblade.ai.engine.inference.language.provider.deepseek.DeepSeekTemplate.buildStreamResponse(DeepSeekTemplate.java:124) at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.parseMessage(ProviderResponseProcessor.java:146) at reactor.core.publisher.Flux.lambda$mapNotNull$0(Flux.java:6655) at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:182) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:338) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onNext(MonoFlatMapMany.java:251) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:80) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:258) at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:868) at reactor.core.publisher.FluxConcatMap$WeakScalarSubscription.request(FluxConcatMap.java:482) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:338) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.request(MonoFlatMapMany.java:113) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.request(FluxFilterFuseable.java:411) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:262) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.SerializedSubscriber.request(SerializedSubscriber.java:152) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.StrictSubscriber.request(StrictSubscriber.java:140) at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.run(ReactiveTypeHandler.java:358) at org.springblade.core.context.BladeRunnableWrapper.run(BladeRunnableWrapper.java:63) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) 2026-10-21 17:57:30.214 WARN 354893 --- [io-6100-exec-16] .m.m.a.ExceptionHandlerExceptionResolver : Failure in @ExceptionHandler org.springblade.core.log.error.BladeRestExceptionTranslator#handleError(ServiceException) org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class org.springblade.core.tool.api.R] with preset Content-Type 'text/event-stream;charset=UTF-8' at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:363) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213) at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135) at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:460) at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:72) at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:176) at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:78) at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1227) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1035) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:132) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111) at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:110) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:512) at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:443) at org.apache.catalina.core.AsyncContextImpl$AsyncRunnable.run(AsyncContextImpl.java:710) at org.apache.catalina.core.AsyncContextImpl.doInternalDispatch(AsyncContextImpl.java:443) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:163) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:77) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:535) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:86) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:71) at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:241) at org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:269) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:1307) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:2036) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:74) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:949) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:483) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:74) at java.base/java.lang.Thread.run(Thread.java:1583) 2026-10-21 17:57:30.215 ERROR 354893 --- [io-6100-exec-16] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] threw exception java.lang.NullPointerException: Cannot invoke "tools.jackson.databind.JsonNode.get(String)" because "choiceNode" is null at org.springblade.ai.engine.inference.language.provider.deepseek.DeepSeekTemplate.buildStreamResponse(DeepSeekTemplate.java:124) at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.parseMessage(ProviderResponseProcessor.java:146) at reactor.core.publisher.Flux.lambda$mapNotNull$0(Flux.java:6655) at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:182) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:338) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onNext(MonoFlatMapMany.java:251) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:80) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:258) at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:868) at reactor.core.publisher.FluxConcatMap$WeakScalarSubscription.request(FluxConcatMap.java:482) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:338) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.request(MonoFlatMapMany.java:113) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.request(FluxFilterFuseable.java:411) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:262) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.SerializedSubscriber.request(SerializedSubscriber.java:152) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.StrictSubscriber.request(StrictSubscriber.java:140) at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.run(ReactiveTypeHandler.java:358) at org.springblade.core.context.BladeRunnableWrapper.run(BladeRunnableWrapper.java:63) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) 2026-10-21 17:57:30.216 ERROR 354893 --- [io-6100-exec-16] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springblade.ai.engine.inference.exception.InferenceException: DeepSeek 响应解析失败: Cannot invoke "tools.jackson.databind.JsonNode.get(String)" because "choiceNode" is null] with root cause java.lang.NullPointerException: Cannot invoke "tools.jackson.databind.JsonNode.get(String)" because "choiceNode" is null at org.springblade.ai.engine.inference.language.provider.deepseek.DeepSeekTemplate.buildStreamResponse(DeepSeekTemplate.java:124) at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.parseMessage(ProviderResponseProcessor.java:146) at reactor.core.publisher.Flux.lambda$mapNotNull$0(Flux.java:6655) at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:182) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:338) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onNext(MonoFlatMapMany.java:251) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:80) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:258) at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:868) at reactor.core.publisher.FluxConcatMap$WeakScalarSubscription.request(FluxConcatMap.java:482) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:338) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.request(MonoFlatMapMany.java:113) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.request(FluxFilterFuseable.java:411) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:262) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.SerializedSubscriber.request(SerializedSubscriber.java:152) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.StrictSubscriber.request(StrictSubscriber.java:140) at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.run(ReactiveTypeHandler.java:358) at org.springblade.core.context.BladeRunnableWrapper.run(BladeRunnableWrapper.java:63) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) 2026-10-21 17:57:30.218 ERROR 354893 --- [io-6100-exec-16] o.s.core.log.error.BladeErrorAttributes : URL:/inference/chat error status:200 org.springblade.ai.engine.inference.exception.InferenceException: DeepSeek 响应解析失败: Cannot invoke "tools.jackson.databind.JsonNode.get(String)" because "choiceNode" is null Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below: Assembly trace from producer [reactor.core.publisher.FluxHandleFuseable] : reactor.core.publisher.Flux.mapNotNull(Flux.java:6654) org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:83) Error has been observed at the following site(s): *_______Flux.mapNotNull ⇢ at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:83) |_ Flux.onErrorMap ⇢ at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:84) |_ Flux.doOnError ⇢ at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:86) |_ Flux.doOnCancel ⇢ at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.process(ProviderResponseProcessor.java:87) |_ Flux.transform ⇢ at org.springblade.ai.engine.inference.language.provider.AbstractLanguageModelTemplate.doChatStreamRequest(AbstractLanguageModelTemplate.java:227) |_ Flux.retryWhen ⇢ at org.springblade.ai.engine.inference.language.provider.AbstractLanguageModelTemplate.chatStream(AbstractLanguageModelTemplate.java:164) |_ Flux.doOnNext ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:120) |_ Flux.doOnNext ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:121) |_ Flux.doOnNext ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:122) |_ Flux.doOnNext ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:123) |_ Flux.doOnError ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:124) |_ Flux.doFinally ⇢ at org.springblade.ai.engine.inference.service.impl.ChatServiceImpl.chatStream(ChatServiceImpl.java:126) *________Flux.concatMap ⇢ at reactor.util.retry.RetryBackoffSpec.lambda$generateCompanion$0(RetryBackoffSpec.java:592) |_ Flux.onErrorStop ⇢ at reactor.util.retry.RetryBackoffSpec.lambda$generateCompanion$0(RetryBackoffSpec.java:657) *__Flux.deferContextual ⇢ at reactor.util.retry.RetryBackoffSpec.generateCompanion(RetryBackoffSpec.java:590) Original Stack Trace: Caused by: java.lang.NullPointerException: Cannot invoke "tools.jackson.databind.JsonNode.get(String)" because "choiceNode" is null at org.springblade.ai.engine.inference.language.provider.deepseek.DeepSeekTemplate.buildStreamResponse(DeepSeekTemplate.java:124) at org.springblade.ai.engine.inference.language.provider.ProviderResponseProcessor.parseMessage(ProviderResponseProcessor.java:146) at reactor.core.publisher.Flux.lambda$mapNotNull$0(Flux.java:6655) at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:182) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:338) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onNext(MonoFlatMapMany.java:251) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:80) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:540) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:258) at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:868) at reactor.core.publisher.FluxConcatMap$WeakScalarSubscription.request(FluxConcatMap.java:482) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:338) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.request(MonoFlatMapMany.java:113) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.request(FluxFilterFuseable.java:411) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:262) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2325) at reactor.core.publisher.SerializedSubscriber.request(SerializedSubscriber.java:152) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:653) at reactor.core.publisher.StrictSubscriber.request(StrictSubscriber.java:140) at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.run(ReactiveTypeHandler.java:358) at org.springblade.core.context.BladeRunnableWrapper.run(BladeRunnableWrapper.java:63) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) 2026-10-21 17:57:30.219 WARN 354893 --- [io-6100-exec-16] o.springblade.core.tool.utils.WebUtil : WebUtil获取RequestBody失败: java.io.IOException: Stream closed at org.apache.catalina.connector.InputBuffer.throwIfClosed(InputBuffer.java:596) at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:396) at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:92) at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:350) at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:393) at java.base/sun.nio.cs.StreamDecoder.lockedRead(StreamDecoder.java:217) at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:171) at java.base/java.io.InputStreamReader.read(InputStreamReader.java:188) at java.base/java.io.BufferedReader.fill(BufferedReader.java:160) at java.base/java.io.BufferedReader.implReadLine(BufferedReader.java:370) at java.base/java.io.BufferedReader.readLine(BufferedReader.java:347) at java.base/java.io.BufferedReader.readLine(BufferedReader.java:436) at org.springblade.core.tool.utils.WebUtil.getRequestBody(WebUtil.java:326) at org.springblade.core.tool.utils.WebUtil.getRequestContent(WebUtil.java:350) at org.springblade.core.log.utils.LogAbstractUtil.addRequestInfoToLog(LogAbstractUtil.java:61) at org.springblade.core.log.publisher.ErrorLogPublisher.publishEvent(ErrorLogPublisher.java:66) at org.springblade.core.log.error.BladeErrorAttributes.getErrorAttributes(BladeErrorAttributes.java:69) at org.springframework.boot.webmvc.autoconfigure.error.AbstractErrorController.getErrorAttributes(AbstractErrorController.java:78) at org.springframework.boot.webmvc.autoconfigure.error.BasicErrorController.error(BasicErrorController.java:103) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:132) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:512) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:413) at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:360) at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:209) at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:286) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:149) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:86) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:71) at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:241) at org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:269) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:1307) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:2036) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:74) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:949) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:483) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:74) at java.base/java.lang.Thread.run(Thread.java:1583) 2026-10-21 17:57:30.221 WARN 354893 --- [io-6100-exec-16] o.s.a.b.api.exception.SseErrorHandler : Response already committed. Ignoring: org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class org.springblade.core.tool.api.R$$BladeBeanMapByCGLIB$$429040c6] with preset Content-Type 'text/event-stream;charset=UTF-8' 2026-10-21 17:57:30.222 INFO 354893 --- [oundedElastic-9] o.s.core.mp.plugins.SqlLogInterceptor : ============== Sql Start ============== Execute SQL : update ai_run set conversation_id = 2112845714524479489, message_id = 2112845724737609731, state = 'error', duration_ms = 2412, total_tokens = 62, outputs = 'Hello! How can I help you today?', error = 'DeepSeek 响应解析失败: Cannot invoke "tools.jackson.databind.JsonNode.get(String)" because "choiceNode" is null', update_time = TIMESTAMP '2026-10-21 17:57:30.210' where id = 2112845714574811138 and is_deleted = 0 Execute Time: 4.366ms ============== Sql End ============== 2026-10-21 17:57:30.223 INFO 354893 --- [oundedElastic-6] o.s.core.mp.plugins.SqlLogInterceptor : ============== Sql Start ============== Execute SQL : insert into ai_message (id, conversation_id, run_id, role, content , state, tokens, tenant_id, create_user, create_dept , create_time, update_time, is_deleted) values (2112845724737609730, 2112845714524479489, 2112845714574811138, 'user', 'hello' , 'done', 5, '000000', 2016093354253729794, 2031199933474873345 , TIMESTAMP '2026-10-21 17:57:30.209', TIMESTAMP '2026-10-21 17:57:30.209', 0) Execute Time: 3.842ms ============== Sql End ============== 2026-10-21 17:57:30.224 WARN 354893 --- [ async-task-11] RetryableFeignBlockingLoadBalancerClient : Service instance was not resolved, executing the original request 2026-10-21 17:57:30.225 INFO 354893 --- [oundedElastic-7] o.s.core.mp.plugins.SqlLogInterceptor : ============== Sql Start ============== Execute SQL : insert into ai_message (id, conversation_id, run_id, role, content , reasoning, reasoning_ms, state, error, tokens , model, tenant_id, create_user, create_dept, create_time , update_time, is_deleted) values (2112845724737609731, 2112845714524479489, 2112845714574811138, 'assistant', 'Hello! How can I help you today?' , 'We are given: "hello". This is a simple greeting. I need to respond appropriately as an AI assistant. I should be friendly and helpful, offering assistance. I''ll reply with a greeting and an inquiry about how I can help.', 1171, 'error', 'DeepSeek 响应解析失败: Cannot invoke "tools.jackson.databind.JsonNode.get(String)" because "choiceNode" is null', 57 , 'deepseek-v4-pro', '000000', 2016093354253729794, 2031199933474873345, TIMESTAMP '2026-10-21 17:57:30.209' , TIMESTAMP '2026-10-21 17:57:30.209', 0) Execute Time: 3.552ms ============== Sql End ============== 2026-10-21 17:57:30.235 INFO 354893 --- [oundedElastic-8] o.s.core.mp.plugins.SqlLogInterceptor : ============== Sql Start ============== Execute SQL : insert into ai_usage (id, model_id, model, category, provider , prompt_tokens, completion_tokens, total_tokens, cost, run_id , conversation_id, message_id, resource_type, user_id, duration_ms , quantity, unit, tenant_id, create_user, create_dept , create_time, update_time, status, is_deleted) values (2112845724758581250, 2112843135753134082, 'deepseek-v4-pro', 'chat', 'deepseek' , 5, 57, 62, 0, 2112845714574811138 , 2112845714524479489, 2112845724737609731, 'assistant', 2016093354253729794, 2412 , 62, 'token', '000000', 2016093354253729794, 2031199933474873345 , TIMESTAMP '2026-10-21 17:57:30.213', TIMESTAMP '2026-10-21 17:57:30.213', 1, 0) Execute Time: 4.484ms ============== Sql End ============== 2026-10-21 17:57:30.236 INFO 354893 --- [oundedElastic-6] o.s.core.mp.plugins.SqlLogInterceptor : ============== Sql Start ============== Execute SQL : update ai_conversation set message_count = COALESCE(message_count, 0) + 1, last_time = TIMESTAMP '2026-10-21 17:57:30.209' where is_deleted = 0 and (id = 2112845714524479489) Execute Time: 2.945ms ============== Sql End ============== 2026-10-21 17:57:30.240 INFO 354893 --- [oundedElastic-7] o.s.core.mp.plugins.SqlLogInterceptor : ============== Sql Start ============== Execute SQL : update ai_conversation set message_count = COALESCE(message_count, 0) + 1, last_time = TIMESTAMP '2026-10-21 17:57:30.209' where is_deleted = 0 and (id = 2112845714524479489) Execute Time: 5.051ms ============== Sql End ==============