如何通过 RAG 提高 LLM
2025/12/26 0:18:51
packagecom.visy.filter;importcn.hutool.core.util.ObjectUtil;importorg.springframework.core.Ordered;importorg.springframework.core.annotation.Order;importorg.springframework.stereotype.Component;importorg.springframework.web.filter.OncePerRequestFilter;importjavax.servlet.FilterChain;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;@Component@Order(Ordered.HIGHEST_PRECEDENCE)publicclassTestFilterextendsOncePerRequestFilter{@OverrideprotectedvoiddoFilterInternal(HttpServletRequestrequest,HttpServletResponseresponse,FilterChainfilterChain)throwsServletException,IOException{StringtestValue=request.getHeader("Test-Key");if(ObjectUtil.isNull(testValue)){// 创建可修改的请求包装器MutableHttpServletRequestmutableRequest=newMutableHttpServletRequest(request);mutableRequest.addHeader("Test-Key","hello");filterChain.doFilter(mutableRequest,response);}else{filterChain.doFilter(request,response);}}}packagecom.visy.filter;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletRequestWrapper;importjava.util.*;publicclassMutableHttpServletRequestextendsHttpServletRequestWrapper{privatefinalMap<String,String>customHeaders;publicMutableHttpServletRequest(HttpServletRequestrequest){super(request);customHeaders=newHashMap<>();}publicvoidaddHeader(Stringname,Stringvalue){this.customHeaders.put(name,value);}@OverridepublicStringgetHeader(Stringname){StringheaderValue=customHeaders.get(name);if(headerValue!=null){returnheaderValue;}return((HttpServletRequest)getRequest()).getHeader(name);}// Tips: 一定要写,不然@RequestHeader单个值的时候获取不到参数@OverridepublicEnumeration<String>getHeaders(Stringname){Stringvalue=getHeader(name);if(value!=null){returnCollections.enumeration(Collections.singletonList(value));}returnsuper.getHeaders(name);}@OverridepublicEnumeration<String>getHeaderNames(){Set<String>headerNames=newHashSet<>(customHeaders.keySet());Enumeration<String>e=((HttpServletRequest)getRequest()).getHeaderNames();while(e.hasMoreElements()){headerNames.add(e.nextElement());}returnCollections.enumeration(headerNames);}}@PostMapping({"/test"})publicvoidtest(@RequestHeaderMap<String,String>headers,@RequestHeader("Test-Key")StringtestKey,HttpServletRequestservletRequest){System.out.println("testKey1: "+headers.get("Test-Key"));//helloSystem.out.println("testKey2: "+testKey);//helloSystem.out.println("testKey3: "+servletRequest.getHeader("Test-Key"));//hello}