首页 / 资讯中心 / 文章详情

LangChain4jConfig的详解

LangChain4jConfig的详解 ★ FEATURED ARTICLE
Config文件一览这个模块解决什么把第三方模型客户端LangChain4j 的 OpenAiChatModel​纳入 Spring 容器并套上主备路由 熔断的外壳——让上层AgentLoop只认 ChatModel 接口完全不知道背后有几个模型、哪个挂了chatModel() L87–L138 ← 根①同步路径的 ChatModel Bean ├── warnIfKeyMissing() L237–L248 ← 叶子缺 key 时打 WARN ├── effectiveApiKey() L233–L235 ← 叶子哨兵值 └── circuitBreakerRegistry() L200–L212 ← 叶子被两个根共用 streamingChatModel() L152–L190 ← 根②流式路径的 StreamingChatModel Bean ├── effectiveApiKey() 复用 └── circuitBreakerRegistry() 复用effectiveApiKey()验证ApiKey有效/** * LangChain4j 会校验 apiKey 非空为空时直接抛异常会让整个应用起不来。 * 这里放哨兵值保证可启动真正调用时由模型端返回 401业务层兜底成友好提示。 */privateStringeffectiveApiKey(){// L233return(apiKeynull||apiKey.isBlank())?not-configured:apiKey;}没配 key 的机器比如别人 clone 下来直接 mvn spring-boot:run根本起不来——而这本该只是AI 用不了不该是整个服务挂掉warnIfKeyMissing()privatevoidwarnIfKeyMissing(){// L237if(apiKeynull||apiKey.isBlank()){// L238log.warn();log.warn( 未配置大模型 API KeyAI 对话将不可用。请任选一种方式);log.warn( 1) 设置环境变量 SCENIC_LLM_API_KEYxxx);log.warn( 2) 新建 backend-java/src/main/resources/application-local.yml:);log.warn( llm:);log.warn( api-key: xxx);log.warn( 当前 base-url {} , chat-model {},baseUrl,chatModelName);log.warn();}}缺 key 时打一段带分隔线的多行提示且直接给出两种可操作的配置方式环境变量 /application-local.yml顺带打印当前的 base-url 和 model —— 便于排查是不是地址配错了不缺 key 时完全静默if 之外没有任何日志不污染正常日志比较友好circuitBreakerRegistry()造熔断器BeanpublicCircuitBreakerRegistrycircuitBreakerRegistry(){// L201CircuitBreakerConfigconfigCircuitBreakerConfig.custom().slidingWindowType(CircuitBreakerConfig.SlidingWindowType.COUNT_BASED).slidingWindowSize(cbSlidingWindowSize).minimumNumberOfCalls(cbMinimumCalls).failureRateThreshold(cbFailureRateThreshold).waitDurationInOpenState(Duration.ofSeconds(cbWaitSeconds)).permittedNumberOfCallsInHalfOpenState(cbHalfOpenCalls).automaticTransitionFromOpenToHalfOpenEnabled(true).build();returnCircuitBreakerRegistry.of(config);}
阅读完成 · 觉得有帮助?
咨询建站