玉泉路网站建设网络编程课

张小明 2025/12/30 15:46:53
玉泉路网站建设,网络编程课,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进行投诉反馈,一经查实,立即删除!

关于营销的网站有哪些wordpress zh_cn.po

SenseVoice热词增强:突破性语音识别技术实现行业术语95%精准识别 【免费下载链接】SenseVoice Multilingual Voice Understanding Model 项目地址: https://gitcode.com/gh_mirrors/se/SenseVoice 语音识别在专业场景中面临的最大挑战是什么?行业…

张小明 2025/12/30 23:36:35 网站建设

网站发布信息技巧审计实务网站建设论文

文章目录 系统截图项目技术简介可行性分析主要运用技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 系统截图 python django flask考研互助交流平台_c62p51fu–论文 项目技术简介 Python版本&#xff1…

张小明 2025/12/31 11:59:41 网站建设

网站建设业务拓展wordpress添加文件夹

如果你正在寻找一种方法来优化知识管理流程,Obsidian-Templates项目正是你需要的解决方案。这套开源模板集合专门为Obsidian用户设计,通过标准化的笔记结构大幅减少重复工作,让你专注于知识创作而非格式设计。 【免费下载链接】Obsidian-Temp…

张小明 2025/12/31 1:28:46 网站建设

网站开发 平台wordpress火车头采集发布模块

网络管理相关命令解释: ping 概念: ping ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序。 用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包,再根据返回的…

张小明 2025/12/31 14:00:48 网站建设

河南专业网站建设公司网站建设安全协议书

毕业设计实战:基于SpringBoot的入校申报审批系统,从需求到部署避坑全指南 当初做入校申报审批系统时,我在“健康码、行程码双码上传校验”功能上卡了整整三天——一开始没做文件格式和大小限制,结果用户传了个100MB的视频文件&…

张小明 2025/12/31 6:23:23 网站建设