南山做网站联系电话wordpress开放注册

张小明 2026/1/14 11:50:29
南山做网站联系电话,wordpress开放注册,wordpress商店如何,怎样做外贸网站推广1. 工程结构概览Spring AI 通过 Spring Boot Starter 和 Auto Configuration 机制#xff0c;实现了零配置的 AI 应用开发。开发者只需要添加依赖和配置属性#xff0c;就能使用各种 AI 能力。spring-ai-spring-boot-starters/ # Starter 模块├── spring-ai-starter-model…1. 工程结构概览Spring AI 通过 Spring Boot Starter 和 Auto Configuration 机制实现了零配置的 AI 应用开发。开发者只需要添加依赖和配置属性就能使用各种 AI 能力。spring-ai-spring-boot-starters/ # Starter 模块├── spring-ai-starter-model-openai/ # OpenAI Starter├── spring-ai-starter-model-ollama/ # Ollama Starter├── spring-ai-starter-vector-store-pgvector/ # PGVector Starter└── ... (50 个 Starter)auto-configurations/ # 自动配置模块├── models/ # 模型自动配置│ ├── spring-ai-autoconfigure-model-openai/│ ├── spring-ai-autoconfigure-model-ollama/│ └── ...├── vector-stores/ # 向量存储自动配置│ ├── spring-ai-autoconfigure-vector-store-pgvector/│ └── ...├── common/ # 通用自动配置│ ├── spring-ai-autoconfigure-retry/│ └── spring-ai-autoconfigure-model-tool/└── mcp/ # MCP 自动配置2. 技术体系与模块关系Spring Boot 集成采用 Starter Auto Configuration 模式image.png3. 关键场景示例代码3.1 最简单的使用只需要添加依赖和配置dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-model-openai/artifactId/dependencyspring:ai:openai:api-key: ${OPENAI_API_KEY}chat:options:model: gpt-4RestControllerpublic class ChatController {Autowiredprivate ChatModel chatModel; // 自动注入GetMapping(/chat)public String chat(String message) {return chatModel.call(message);}}3.2 配置属性所有配置都通过 application.yml 或 application.propertiesspring:ai:openai:api-key: ${OPENAI_API_KEY}base-url: https://api.openai.comchat:options:model: gpt-4temperature: 0.7max-tokens: 1000embedding:options:model: text-embedding-3-small3.3 条件装配自动配置会根据条件决定是否启用AutoConfigurationConditionalOnClass(OpenAiChatModel.class)ConditionalOnProperty(prefix spring.ai.openai.chat,name enabled,havingValue true,matchIfMissing true)public class OpenAiChatAutoConfiguration {// ...}3.4 自定义 Bean可以覆盖自动配置的 BeanConfigurationpublic class CustomConfig {BeanPrimarypublic ChatModel customChatModel() {// 自定义实现return new CustomChatModel();}}4. 核心实现图4.1 自动配置流程image.png5. 入口类与关键类关系image.png6. 关键实现逻辑分析6.1 Starter 设计Starter 是一个空的 Maven 模块只包含依赖dependencies!-- 核心实现 --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-openai/artifactId/dependency!-- 自动配置 --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-autoconfigure-model-openai/artifactId/dependency!-- 通用自动配置 --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-autoconfigure-retry/artifactId/dependency/dependenciesStarter 的优势简化依赖管理用户只需要添加一个依赖版本统一所有相关依赖版本统一管理功能完整包含所有必需的依赖6.2 自动配置类实现自动配置类使用条件注解AutoConfigurationConditionalOnClass(OpenAiChatModel.class)ConditionalOnProperty(prefix spring.ai.openai.chat,name enabled,havingValue true,matchIfMissing true)EnableConfigurationProperties(OpenAiChatProperties.class)public class OpenAiChatAutoConfiguration {BeanConditionalOnMissingBeanpublic OpenAiChatModel chatModel(OpenAiChatProperties properties,RetryTemplate retryTemplate,RestClient.Builder restClientBuilder) {// 1. 构建 API 客户端OpenAiApi openAiApi new OpenAiApi(properties.getBaseUrl(),properties.getApiKey(),restClientBuilder,retryTemplate);// 2. 创建 ChatModelreturn new OpenAiChatModel(openAiApi,properties.getChat().getOptions());}BeanConditionalOnMissingBeanpublic OpenAiChatOptions chatOptions(OpenAiChatProperties properties) {return properties.getChat().getOptions();}}关键注解说明AutoConfiguration标记为自动配置类ConditionalOnClass只有当类路径存在指定类时才启用ConditionalOnProperty只有当配置属性满足条件时才启用ConditionalOnMissingBean只有当容器中不存在指定 Bean 时才创建EnableConfigurationProperties启用配置属性绑定6.3 配置属性绑定配置属性类使用 ConfigurationPropertiesConfigurationProperties(prefix spring.ai.openai)public class OpenAiChatProperties {private String apiKey;private String baseUrl https://api.openai.com;private Chat chat new Chat();public static class Chat {private boolean enabled true;private OpenAiChatOptions options new OpenAiChatOptions();// getters and setters}// getters and setters}配置属性支持类型安全强类型绑定IDE 提示通过 spring-boot-configuration-processor 生成元数据验证支持 JSR-303 验证注解6.4 自动配置注册自动配置类通过 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 注册org.springframework.ai.model.openai.autoconfigure.OpenAiChatAutoConfigurationorg.springframework.ai.model.openai.autoconfigure.OpenAiEmbeddingAutoConfigurationorg.springframework.ai.model.openai.autoconfigure.OpenAiImageAutoConfigurationSpring Boot 3.x 使用 AutoConfiguration.imports 文件替代了之前的 spring.factories。6.5 条件装配机制Spring AI 使用多种条件注解// 1. 类路径条件ConditionalOnClass(OpenAiChatModel.class)// 2. 配置属性条件ConditionalOnProperty(prefix spring.ai.openai.chat,name enabled,havingValue true)// 3. Bean 存在条件ConditionalOnMissingBean(ChatModel.class)// 4. 资源条件ConditionalOnResource(resources classpath:openai-config.properties)这些条件让自动配置变得智能按需加载只加载需要的配置避免冲突不会覆盖用户自定义的 Bean灵活配置可以通过配置属性控制行为6.6 重试机制自动配置重试是 AI 应用的重要能力AutoConfigurationConditionalOnClass(RetryUtils.class)EnableConfigurationProperties(SpringAiRetryProperties.class)public class SpringAiRetryAutoConfiguration {BeanConditionalOnMissingBeanpublic RetryTemplate retryTemplate(SpringAiRetryProperties properties) {return RetryTemplate.builder().maxAttempts(properties.getMaxAttempts()).retryOn(TransientAiException.class).retryOn(ResourceAccessException.class).exponentialBackoff(properties.getBackoff().getInitialInterval(),properties.getBackoff().getMultiplier(),properties.getBackoff().getMaxInterval()).build();}}配置示例spring:ai:retry:max-attempts: 3backoff:initial-interval: 1smultiplier: 2.0max-interval: 10s6.7 工具调用自动配置工具调用自动配置AutoConfigurationConditionalOnClass({ToolCallingManager.class, ChatModel.class})public class ToolCallingAutoConfiguration {BeanConditionalOnMissingBeanpublic ToolCallingManager toolCallingManager(ObservationRegistry observationRegistry,ToolCallbackResolver toolCallbackResolver) {return new DefaultToolCallingManager(observationRegistry,toolCallbackResolver,new DefaultToolExecutionExceptionProcessor());}BeanConditionalOnMissingBeanpublic ToolCallbackResolver toolCallbackResolver(ApplicationContext context) {return new DelegatingToolCallbackResolver(new SpringBeanToolCallbackResolver(context),new StaticToolCallbackResolver());}}7. 配置属性管理7.1 配置属性层次Spring AI 的配置属性采用层次结构spring:ai:openai: # 提供商级别api-key: xxxchat: # 功能级别enabled: trueoptions: # 选项级别model: gpt-4temperature: 0.77.2 配置属性验证支持 JSR-303 验证ConfigurationProperties(prefix spring.ai.openai)Validatedpublic class OpenAiChatProperties {NotBlankprivate String apiKey;Min(0)Max(2)private Double temperature;}7.3 配置属性提示通过 additional-spring-configuration-metadata.json 提供 IDE 提示{properties: [{name: spring.ai.openai.chat.options.model,type: java.lang.String,description: The model to use for chat completions.,defaultValue: gpt-3.5-turbo}]}8. Bean 创建流程8.1 Bean 创建顺序自动配置的 Bean 创建顺序配置属性 Bean首先创建配置属性 Bean依赖 Bean创建依赖的 Bean如 RetryTemplate核心 Bean创建核心功能 Bean如 ChatModel增强 Bean创建增强功能 Bean如 Advisor8.2 Bean 覆盖机制用户可以通过 Primary 或 ConditionalOnMissingBean 覆盖自动配置的 BeanConfigurationpublic class CustomConfig {BeanPrimary // 优先使用public ChatModel customChatModel() {return new CustomChatModel();}}9. 外部依赖9.1 Spring Bootspring-boot-starter核心 Starterspring-boot-autoconfigure自动配置支持spring-boot-configuration-processor配置属性处理9.2 Spring Frameworkspring-contextIoC 容器spring-beansBean 管理spring-core核心功能10. 工程总结Spring AI 的 Spring Boot 集成设计有几个亮点零配置理念。通过 Starter 和 Auto Configuration用户只需要添加依赖和配置属性就能使用 AI 能力无需编写任何配置代码。想用 OpenAI加个依赖配个 API Key就能用了。条件装配。使用 ConditionalOn* 注解让自动配置变得智能只加载需要的配置避免不必要的 Bean 创建配置属性驱动。所有配置都通过 application.yml 或 application.properties支持类型安全和 IDE 提示。写配置时有自动补全写错了编译期就能发现。可扩展性。用户可以轻松覆盖自动配置的 Bean实现自定义行为。想自定义 ChatModel加个 Primary 注解就行。模块化设计。每个功能都有独立的 Starter 和 Auto Configuration用户可以选择性地添加需要的功能。想用向量存储加个 spring-ai-starter-vector-store-pgvector 就行。总的来说Spring AI 的 Spring Boot 集成既简单又强大。简单的使用方式降低了学习成本强大的自动配置机制让系统可以适应各种场景。这种设计让开发者可以快速构建 AI 应用同时也能根据需求进行深度定制。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做网站优化的工资有多高手机设计网站

漫画翻译神器manga-image-translator:3种使用方案帮你轻松搞定日漫翻译 🎯 【免费下载链接】manga-image-translator Translate manga/image 一键翻译各类图片内文字 https://cotrans.touhou.ai/ 项目地址: https://gitcode.com/gh_mirrors/ma/manga-i…

张小明 2026/1/9 15:31:50 网站建设

网站建设胶州家园c 网站开发入门视频

什么是GUI是即时模式游戏用户交互界面,在Unity中一般简称为GUI,是一个代码驱动的UI系统。GUI的主要作用1 作为程序员的调试工具,创建游戏内调试工具。2 为脚本组件创建自定义检视面板,创建新的编辑器窗口和工具扩展unity本身&…

张小明 2026/1/7 20:25:02 网站建设

app下载网站免费wordpress php环境

前言二叉搜索树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;是数据结构中最基础且应用广泛的树形结构&#xff0c;其核心特性是「左子树所有节点值 < 根节点值 < 右子树所有节点值」&#xff0c;基于这一特性可实现高效的查找、插入和遍历操作。本文将从底…

张小明 2026/1/7 21:01:39 网站建设

重庆做网站费用wordpress 顶部 空白

DownKyi终极指南&#xff1a;B站8K视频一键下载与批量处理全攻略 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#x…

张小明 2026/1/7 23:12:36 网站建设

四川建设厅官方网站四库一平台西安seo网站关键词优化

PowerToys下一代交互中台架构&#xff1a;重构用户意图与执行引擎的智能演进 【免费下载链接】PowerToys Windows 系统实用工具&#xff0c;用于最大化生产力。 项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys 在当今复杂的操作系统环境中&#xff0c;用户…

张小明 2026/1/8 2:18:35 网站建设

网站设计方案论文一等一网站

脚本杂谈:transpose、m1 宏处理器与 sed 快速参考 1. transpose 脚本 transpose 是一个简单却有趣的脚本,以下是它的测试示例: $ transpose test 1 5 9 2 6 10 3 7 11 4 8 12其程序逻辑是创建一个名为 row 的数组,将每个字段追加到数组元素中,最后通过 END 过程输…

张小明 2026/1/10 22:21:33 网站建设