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

张小明 2026/1/11 23:45:05
玉泉路网站建设,网络编程课,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进行投诉反馈,一经查实,立即删除!

襄阳论坛网站建设网页编辑器是什么

本科毕业论文(设计)任务书(学生填写用表)学生姓名学院专业班级学号指导教师姓名论文(设计)题目基于springboot框架的中小企业销售人员绩效管理系统设计与实现研究内容要求基于SpringBoot框架和Vue技术&…

张小明 2026/1/11 3:42:43 网站建设

色块设计网站深圳建设网站公司排名

一个准毕业码农的"史诗级"文件管理系统开发日记 各位码友大家好,我就是那个被10G大文件折磨得死去活来的山西大三狗!😭 血泪开发史 “老师,我这个文件管理系统能传10G文件!” —— 这话说出来我自己都不信…

张小明 2026/1/8 19:02:40 网站建设

宁波网站营销推广制作湖南雷锋建设有限公司网站

第一章:你还在浪费算力?Open-AutoGLM动态分配机制让资源利用率达98% 在传统大模型推理场景中,静态资源分配导致GPU长期处于低负载状态,平均利用率不足40%。Open-AutoGLM引入创新的动态算力调度引擎,通过实时监控请求密…

张小明 2026/1/10 20:29:30 网站建设

做标志的网站新闻发布会筹备方案

在当今竞争激烈的商业环境中,招聘效率与质量直接关系到企业的发展速度与竞争力。然而,传统面试往往陷入"经验陷阱",主观性强、评价标准模糊,导致企业难以精准识别真正有潜力的人才。尤其对于资源有限的中小企业而言&…

张小明 2026/1/11 11:01:25 网站建设

wordpress图片不显示正规seo排名公司

如何用沉浸式双语翻译工具告别阅读效率低下的困扰? 【免费下载链接】immersive-translate 沉浸式双语网页翻译扩展 , 支持输入框翻译, 鼠标悬停翻译, PDF, Epub, 字幕文件, TXT 文件翻译 - Immersive Dual Web Page Translation Extension …

张小明 2026/1/10 18:35:59 网站建设

网站招聘方案怎么做wordpress is tag

BetterNCM插件管理器:让你的网易云音乐脱胎换骨 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐功能单一而烦恼?想要打造专属的个性化音乐体验…

张小明 2026/1/11 11:26:27 网站建设