运行时选项
OllamaChatOptions类提供了模型配置,如要使用的模型、温度、思考模式等。
OllamaOptions类已被弃用。对于聊天模型使用OllamaChatOptions,而对于嵌入模型则使用OllamaEmbeddingOptions。新类提供类型安全、特定于模型的配置选项。
启动时,可以通过OllamaChatModel(api, options)构造函数或spring.ai.ollama.chat.options.*属性来配置默认选项。
在运行时,您可以通过向Prompt调用添加新的、特定于请求的选项来覆盖默认选项。例如,要为特定请求覆盖默认的模型和温度:
ChatResponse response = chatModel.call(new Prompt("Generate the names of 5 famous pirates.",OllamaChatOptions.builder().model(OllamaModel.LLAMA3_1).temperature(0.4).build()));
除了特定于模型的OllamaChatOptions之外,您还可以使用一个便携式的ChatOptions实例,该实例是通过ChatOptions#builder()创建的。
自动拉取模型
当您的Ollama实例中模型不可用时,Spring AI Ollama可以自动拉取模型。此功能对于开发和测试以及将应用程序部署到新环境特别有用。
您还可以按名称提取数千个免费的GGUF Hugging Face模型中的任何一个。
拉取模型有三种策略:
always(在PullModelStrategy.ALWAYS中定义):即使模型已经可用,也始终进行拉取。这有助于确保您使用的是模型的最新版本。
when_missing(在PullModelStrategy.WHEN_MISSING中定义):仅在模型不可用时才进行拉取。这可能会导致使用模型的旧版本。
never(在PullModelStrategy.NEVER中定义):绝不自动拉取模型。
由于下载模型时可能存在延迟,因此不建议在生产环境中使用自动拉取功能。相反,应考虑提前评估并预下载必要的模型。
所有通过配置属性和默认选项定义的模型,在启动时都可以自动加载。您可以使用配置属性来配置加载策略、超时时间和最大重试次数:
spring:ai:ollama:init:pull-model-strategy: alwaystimeout: 60smax-retries: 1
在Ollama中所有指定模型都可用之前,应用程序将无法完成初始化。根据模型大小和互联网连接速度的不同,这可能会显著减慢应用程序的启动时间。
您可以在启动时初始化其他模型,这对于在运行时动态使用的模型非常有用:
spring:ai:ollama:init:pull-model-strategy: alwayschat:additional-models:- llama3.2- qwen2.5
如果您只想对特定类型的模型应用拉取策略,则可以在初始化任务中排除聊天模型:
spring:ai:ollama:init:pull-model-strategy: alwayschat:include: false
此配置将对除聊天模型之外的所有模型应用拉取策略。
函数调用
您可以使用OllamaChatModel注册自定义Java函数,并让Ollama模型智能地选择输出一个包含参数的JSON对象来调用一个或多个注册的函数。这是一种将LLM功能与外部工具和API连接起来的强大技术。阅读更多关于工具调用的信息。
您需要安装Ollama 0.2.8或更高版本才能使用其功能调用能力,而要在流模式下使用这些功能,则需要安装Ollama 0.4.6或更高版本。