spring-ai-alibaba 1.0.0.2 学习(三)——配置
与spring-ai接入的其他大模型一样,spring-ai-alibaba也有大模型的通用配置和个性化配置
最小化样例
我们如果想要进行模型配置,有三种方式
第一种:通过配置文件自动装配
spring.ai.dashscope.chat.options.model=qwen-plus
通过上述配置,我们指定大模型型号为qwen-plus,生效的前提是在相关AutoConfiguration包中使用该属性进行了Bean属性声明
第二种:创建ChatClient时配置
chatClient = builder.defaultOptions(DashScopeChatOptions.builder().withModel("qwen-plus").build()).build();
第三种:调用大模型时配置
@GetMapping("/option")public String chat(String input) {return chatClient.prompt().options(DashScopeChatOptions.builder().withModel("qwen-plus").build() ).user(input).call().content();}
上述三种方法优先级依次提高,调用大模型时的配置最高,会覆盖其他配置
进阶知识
配置查找
那么知道了如何使用配置,我们如何确定spring-ai-alibaba中是否存在某个配置呢?
1)查看相关Options类
例如我们想对百炼大模型进行配置,找到DashScopeChatModel类中的配置类DashScopeChatOptions,可以查看其中有哪些配置项
但是此方法只适用于前面提到的第二种和第三种配置方法(defaultOptions和options),如果想要使用第一种配置方法(配置文件),如何找到类似spring.ai.dashscope.chat.options.model的配置名称?可以通过后面这两种方法
2)查看spring-configuration-metadata.json文件
我们可以查看相关AutoConfiguration包中的spring-configuration-metadata.json文件,该文件包含了此包用到的配置属性
例如,我们可以在spring-ai-alibaba-autoconfigure-dashscope包中的spring-configuration-metadata.json,通过搜索DashScopeChatOptions类找到spring.ai.dashscope.chat.options.model的配置
{"name": "spring.ai.dashscope.chat.options.model","type": "java.lang.String","sourceType": "com.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions"}
ps:双击shift,然后输入配置名也可以跳转到spring-configuration-metadata.json文件对应的位置
3)跟踪自动配置类
我们可以通过自动配置类的创建方法,跟踪其参数来源,结合ConfigurationProperties注解,确认其配置名称
例如,我们可以在spring-ai-alibaba-autoconfigure-dashscope包中的DashScopeChatAutoConfiguration类中找到百炼大模型DashScopeChatModel的创建方法,其入参中包含DashScopeConnectionProperties和DashScopeChatProperties两个参数类
DashScopeChatProperties上注解@ConfigurationProperties("spring.ai.dashscope.chat")表明其属性前缀为spring.ai.dashscope.chat,然后在其options属性中找到model,确认其最终配置名称为spring.ai.dashscope.chat.options.model
路线为:对应自动配置包 -> 对应自动配置类 -> 对应自动配置方法 -> 参数类 -> 注解+属性名
存在问题
文档较少:spring-ai-alibaba相比spring-ai增加了一些配置,然而在spring-ai-alibaba官方网站中,底层功能的相关教程仍然使用的spring-ai进行教学,并没有太多关于这些配置项的说明,我们只能类比其他模型的配置来估计这些配置的作用或通过源码查看
api-key问题:api-key尽量直接配置spring.ai.dashscope.api-key
如果只配置spring.ai.dashscope.chat.api-key,会报错提示spring.ai.dashscope.audio.synthesis.api-key未配置,即使你并不想使用这个模型(该模型配置没有enabled配置项)
而且即使是配置了spring.ai.dashscope.embedding.enabled=false,不配置spring.ai.dashscope.embedding.api-key的话也会报错