ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI系列4:Spring AI调用智谱模型

AI系列4:Spring AI调用智谱模型 传送门PyCharm无法识别LangChain库的问题AI系列1Spring AIAI系列2Spring AI调用本地模型AI系列3什么是TokenAI系列5Spring AI的聊天模型API从聊天模型说起在AI系列1Spring AI中谈到过springAI出现的原因Spring AI is an application framework for AI engineering. Its goal is to apply to the AI domain Spring ecosystem design principles such as portability and modular design and promote using POJOs as the building blocks of an application to the AI domain.Spring AI 是一个面向 AI 工程的应用框架。其目标是将 Spring 生态系统的设计原则如可移植性和模块化设计应用到 AI 领域并提倡在 AI 领域中使用 POJO普通 Java 对象作为应用程序的构建模块。该项目从著名的 Python 项目如 LangChain 和 LlamaIndex中汲取灵感但 Spring AI 并不是这些项目的直接移植。 该项目的成立理念是下一波生成式 AI 应用程序将不仅适用于 Python 开发人员而且将在许多编程语言中无处不在。当时个人理解为大模型冲击下的被动应对在Spring做为JAVA应用事实标准的情况下不可能对这种情况视而不见或者说是这种挑战的应对。这种被动局面到现在情况也没有多大改变。就算是作为一个JAVA开发者在平时工作中将AI做为辅助开发生成代码还是做智能体平台级开发直接使用springAI框架的寥寥无几一方面是现在ai生态python更为适合又占据了先发优势二是对普通开发者使用各种cli工具已经成为主流Claude Code、OpenCode、Gemini CLI、Codex代码续写助手Copilot、Cline等但是这并不妨碍springAI对于JAVA应用尤其是使用spring生态系统来说的首选解决方案。仅仅是这个理由就足以去学习它这个过程肯定是要付出时间与精力。或许从最熟悉的语言入手也是切入学习大模型的一个良好契机比如前面通过springAI调用了deepseek、qwen等模型。选择讨论上面2个模型是有原因的。因为公司采购了3个商业模型Qwen3.5、DeepSeek-V4-Flash另外还有一个是智谱的glm.5。总体使用下来大家觉得还是glm的比较好用当然并不是说另外2种是垃圾。所以打算再讨论一下springAI对glm模型的集成算是对聊天模型使用的补充入门指南前提条件使用glm的API调用需要在glm进行注册以及创建API-KEYAPI Key。这个注册过程就不赘述了可以自行注册。正常来说在首次创建成功后会赠送一定的额度用来测试基本没有什么问题。依赖管理在pom文件中添加对glm模型的依赖dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-model-zhipuai/artifactId /dependency属性信息连接属性前缀spring.ai.zhiPu用作用于连接到 ZhiPuAI 的属性前缀属性描述默认值spring.ai.zhipuai.base-url要连接到的 URLopen.bigmodel.cn/api/paasspring.ai.zhipuai.api-keyAPI 密钥-配置属性PropertyDescriptionDefaultspring.ai.zhipuai.chat.enabled (Removed and no longer valid)启用 ZhiPuAI 聊天模型truespring.ai.model.chat启用 ZhiPuAI 聊天模型zhipuaispring.ai.zhipuai.chat.base-url可选覆盖spring.ai.zhipuai.base-url以提供特定于聊天的 urlhttps://open.bigmodel.cn/api/paasspring.ai.zhipuai.chat.api-key可选覆盖 spring.ai.zhipuai.api-key 以提供特定于聊天的 api-key-spring.ai.zhipuai.chat.options.model这是要使用的 ZhiPuAI Chat 模型glm-4-airspring.ai.zhipuai.chat.options.maxTokens在聊天补全中生成的最大Tokens数。输入标记和生成的标记的总长度受模型的上下文长度限制-spring.ai.zhipuai.chat.options.temperature要使用的采样温度介于 0 和 1 之间。较高的值如 0.8将使输出更加随机而较低的值如 0.2将使其更加集中和确定。我们通常建议更改此项或top_p但不能同时更改两者。0.7还有更多的一些属性可以按需查看聊天属性重试属性前缀spring.ai.retry用作属性前缀允许您为 ZhiPu AI 聊天模型配置重试机制。属性描述默认值spring.ai.retry.max-attempts最大重试尝试次数。10spring.ai.retry.backoff.initial-interval指数回退策略的初始休眠持续时间。2 秒spring.ai.retry.backoff.multiplierBackoff interval 乘数。5spring.ai.retry.backoff.max-interval最大回退持续时间。3 分钟模型调用可以在上个例子中调整配置或者新建一个测试项目。这里主要看看配置信息这里主要需要3个基本属性application.propertiesspring.ai.zhipuai.api-keyYOUR_API_KEY spring.ai.zhipuai.chat.options.modelglm-4-air spring.ai.zhipuai.chat.options.temperature0.7Controller代码同上RestController public class ChatController { private final ZhiPuAiChatModel chatModel; Autowired public ChatController(ZhiPuAiChatModel chatModel) { this.chatModel chatModel; } GetMapping(/ai/generate) public Map generate(RequestParam(value message, defaultValue Tell me a joke) String message) { return Map.of(generation, this.chatModel.call(message)); } GetMapping(/ai/generateStream) public FluxChatResponse generateStream(RequestParam(value message, defaultValue Tell me a joke) String message) { var prompt new Prompt(new UserMessage(message)); return this.chatModel.stream(prompt); } }测试glm模型把项目启动起来发起一个请求http://localhost:8080/ai/generate?message你是谁呀至此通过springAI接入glm模型就实现了。再谈聊天模型如果仔细观察动手实践了的话可以发现在application.properties里并没有配置glm模型的地址如果不配置默认为https://open.bigmodel.cn/api/paas这个可以从源码里面找到答案关于springAI聊天模型的设计官网上给出了对应的类图图片 Chat Model API :: Spring AI Reference这张图里面的信息很丰富它显示了springAI本身的设计类、以及来自不同提供商的各种 AI 聊天模型进行交互从而允许在不同的 AI 服务之间轻松集成和切换同时为客户端应用程序保持一致的 API。这个也可以通过本地源代码debug看出来而输入的问题最终也会转换成提示词对象Prompt这个也提示词对象其实也没有这么简单官网上对它的介绍如下后面一节开始会专门通过源码来讨论聊天模型并结合例子来看看提示词的相关使用
返回列表