Spring AI支持智谱AI的各种AI语言模型。您可以与智谱AI语言模型进行交互,并基于智谱AI模型创建一个多语言对话助手。
如果你不会说中文,可以访问智普AI的国际网站Z.ai。
前提条件
您需要使用智谱AI创建一个API,以便访问智谱AI语言模型。
在智谱AI注册页面(或Z.ai注册页面)创建一个账户,并在API密钥页面(或Z.ai API密钥页面)生成令牌。
Spring AI项目定义了一个名为spring.ai.zhipuai.api-key的配置属性,您应将其设置为从API密钥页面获取的API密钥的值。
您可以在application.properties文件中设置此配置属性:
spring.ai.zhipuai.api-key=<your-zhipuai-api-key>
为了在处理API密钥等敏感信息时增强安全性,您可以使用Spring表达式语言(SpEL)来引用自定义环境变量:
# In application.ymlspring: ai: zhipuai: api-key: ${ZHIPUAI_API_KEY}
# In your environment or .env fileexport ZHIPUAI_API_KEY=<your-zhipuai-api-key>
您还可以在应用程序代码中以编程方式设置此配置:
// Retrieve API key from a secure source or environment variableString apiKey = System.getenv("ZHIPUAI_API_KEY");
添加仓库和BOM
Spring AI 构件发布在 Maven Central 和 Spring Snapshot 仓库中。请参阅“构件仓库”部分,以将这些仓库添加到您的构建系统中。
为了协助进行依赖管理,Spring AI 提供了一个物料清单 (BOM),以确保在整个项目中使用一致版本的 Spring AI。请参阅“依赖管理”部分,将 Spring AI BOM 添加到您的构建系统中。
自动配置
Spring AI 为 ZhiPuAI 聊天客户端提供了 Spring Boot 自动配置功能。要启用该功能,请将以下依赖项添加到项目的 Maven pom.xml 文件中:
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-zhipuai</artifactId></dependency>
或者添加到你的Gradle build.gradle构建文件中。
dependencies { implementation 'org.springframework.ai:spring-ai-starter-model-zhipuai'}
聊天属性
重试属性
前缀“spring.ai.retry”用作属性前缀,可用于配置智谱AI聊天模型的重试机制。
| 属性 | | 默认值 |
|---|
spring.ai.retry.max-attempts | 重试尝试的最大次数。 | 10 |
spring.ai.retry.backoff.initial-interval | 指数回退策略的初始睡眠持续时间。 | 2秒 |
spring.ai.retry.backoff.multiplier | 回退间隔倍数。 | 5 |
spring.ai.retry.backoff.max-interval | 最大回退持续时间。 | 3分钟 |
spring.ai.retry.on-client-errors | 如果为false,则抛出NonTransientAiException,并且不尝试重试 4xx客户端错误代码
| false |
spring.ai.retry.exclude-on-http-codes | 不应该触发重试的HTTP状态代码列表(例如,抛出NonTransientAiException)。 | empty |
spring.ai.retry.on-http-codes | 应该触发重试的HTTP状态代码列表(例如,抛出TransientAiException)。 | empty |
连接属性
前缀“spring.ai.zhipuai”用作属性前缀,可让您连接到ZhiPuAI。
| 属性 | 描述 | 默认值 |
|---|
spring.ai.zhipuai.base-url | 连接至智普AI API的URL。 如果您使用的是Z.ai平台,则需要将其设置为https://api.z.ai/api/paas。 | https://open.bigmodel.cn/api/paas
|
spring.ai.zhipuai.api-key | API密钥 | - |
配置属性
聊天自动配置的启用和禁用是通过带有前缀“spring.ai.model.chat”的顶级属性来配置的。
要启用,请将 spring.ai.model.chat 设置为 zhipuai(默认情况下已启用)
要禁用,请将 spring.ai.model.chat 设置为 none(或任何与 zhipuai 不匹配的值)
这一更改是为了支持配置多个模型。
前缀“spring.ai.zhipuai.chat”是属性前缀,用于配置ZhiPuAI的聊天模型实现。
| 属性 | 描述 | 默认值 |
|---|
spring.ai.zhipuai.chat.enabled(已删除,不再有效) | 启用智普AI聊天模式。 | true |
spring.ai.model.chat | 启用智普AI聊天模式。 | zhipuai |
spring.ai.zhipuai.chat.base-url | 可选,覆盖spring.ai.zhipuai.base-url以提供聊天特定的url。 如果您使用的是Z.ai平台,则需要将其设置为https://api.z.ai/api/paas。 | https://open.bigmodel.cn/api/paas
|
spring.ai.zhipuai.chat.api-key | 可选,覆盖spring.ai.zhipuai.api-key以提供聊天特定的api-key。 | - |
spring.ai.zhipuai.chat.options.model | 这就是智普AI Chat的模式。您可以在型号之间进行选择,例如: glm-4.6、glm-4.5、glm-4-air等。
| glm-4-air
https://open.bigmodel.cn/api/paas
|
spring.ai.zhipuai.chat.options.maxTokens | 聊天结束时生成的最大令牌数。输入令牌和生成令牌的总长度受到模型上下文长度的限制。 | - |
spring.ai.zhipuai.chat.options.temperature | 使用什么样的采样温度,介于0和1之间。较高的值(如0.8)将使输出更随机,而较低的值(如0.2)将使其更集中和确定性。我们通常建议更改this或top_p,但不要同时更改两者。 | 0.7 |
spring.ai.zhipuai.chat.options.topP | 温度采样的替代方案,称为核采样,其中模型考虑具有top_p概率质量的令牌的结果。因此,0.1意味着只考虑包含前10%概率质量的令牌。我们通常建议改变这个或温度,但不是两者兼而有之。 | 1.0 |
spring.ai.zhipuai.chat.options.stop | 模型将停止生成stop指定的字符,目前仅支持单个stop word,格式为[“stop_word1”] | - |
spring.ai.zhipuai.chat.options.user | 代表您的最终用户的唯一标识符,可以帮助ZhiPuAI监控和检测滥用行为。 | - |
spring.ai.zhipuai.chat.options.requestId | 参数由客户端传递,必须确保唯一性。它用于区分每个请求的唯一标识符。如果客户端没有提供,平台会默认生成。 | - |
spring.ai.zhipuai.chat.options.doSample | 当do_sample设置为true时,启用采样策略。如果do_sample为false,则采样策略参数temperature和top_p将不生效。 | true |
spring.ai.zhipuai.chat.options.response-format.type | 控制模型输出的格式。设置为 json_object以确保消息是有效的JSON对象。可用选项:text或json_object。
| - |
spring.ai.zhipuai.chat.options.thinking.type | 控制是否启用大型模型的思维链。可用选项: enabled或disabled。
| - |
spring.ai.zhipuai.chat.options.tool-names | 工具列表,由其名称标识,用于在单个提示请求中启用函数调用。ToolCallback注册表中必须存在具有这些名称的工具。 | - |
spring.ai.zhipuai.chat.options.tool-callbacks | 注册ChatModel的工具回调。 | - |
spring.ai.zhipuai.chat.options.internal-tool-execution-enabled | 如果为false,Spring AI不会在内部处理工具调用,而是将它们代理给客户端。然后,客户端负责处理工具调用,将它们分派给适当的函数,并返回结果。如果为true(默认值),Spring AI将在内部处理函数调用。仅适用于支持函数调用的聊天模型 | true |
你可以为ChatModel实现覆盖公共的spring.ai.zhipuai.base-url和spring.ai.zhipuai.api-key。如果设置了spring.ai.zhipuai.chat.base-url和spring.ai.zhipuai.chat.api-key属性,则这些属性将优先于公共属性。如果你想为不同的模型和不同的模型端点使用不同的ZhiPuAI账户,这将非常有用。
所有以“spring.ai.zhipuai.chat.options”为前缀的属性,都可以在运行时通过向Prompt调用添加特定于请求的运行时选项来进行覆盖。