内容提要
Ollama 引入了对大型语言模型(LLM)的工具支持,Spring AI 已将此功能集成到 Spring 生态系统中。Spring AI 的 Ollama 函数调用支持使 Java 开发人员能够轻松地在其应用程序中利用此功能。其主要特点包括易于集成、灵活配置、自动 JSON 模式生成、支持多种功能以及运行时功能选择。要在 Spring AI 中使用 Ollama 函数调用,您需要在本地计算机上运行 Ollama 并添加必要的依赖项。提供了一个示例来演示如何在 Spring AI 中使用 Ollama 函数调用。该集成与 OpenAI 兼容,限制包括不支持流工具调用或工具选择。Spring AI 的 Ollama 函数调用提供了扩展 AI 功能、无缝集成、类型安全开发和减少样板代码等优势。
延伸解读
Spring AI 集成 Ollama 工具支持的核心机制
Spring AI 将 Ollama 的函数调用能力无缝整合到 Spring 生态中。开发者只需将 Java 函数注册为 Spring Bean,Spring AI 便会自动生成对应的 JSON Schema,供 Ollama 模型理解。当模型判断需要调用外部函数时,会生成包含函数名和参数的 JSON 对象,Spring AI 拦截该请求,执行对应的 Java 函数,并将结果返回给模型,模型最终将函数输出融入响应。这一流程使得 Java 开发者能够以类型安全的方式扩展 AI 功能,减少手动处理 JSON 的样板代码
使用前提与依赖配置
要使用 Spring AI 的 Ollama 函数调用,需先在本地运行 Ollama(0.2.8+),并拉取支持工具调用的模型,如 Llama 3.1、Mistral、Firefunction v2 或 Command-R+。在 Spring Boot 项目中,添加 spring-ai-ollama-spring-boot-starter 依赖,并引入 Spring AI BOM 管理版本。配置完成后,即可通过 ChatClient 的 functions() 方法引用注册的 Bean,实现函数调用。
OpenAI 兼容性与当前限制
Ollama 的 API 与 OpenAI 兼容,因此也可以使用 Spring AI 的 OpenAI 客户端连接 Ollama,只需设置 base-url 为 http://localhost:11434 并选择支持的模型。但需注意,目前 Ollama 的 API 尚不支持流式工具调用和工具选择,Spring AI 已准备好在这些限制解除后提供支持。开发者在设计应用时应考虑这些限制,避免依赖尚未实现的功能。
实际应用示例与优势
文章提供了一个天气查询示例:定义 weatherFunction Bean,当用户询问阿姆斯特丹和巴黎的天气时,模型自动调用该函数并返回模拟温度。这展示了 Spring AI 如何将现有 Spring Bean 无缝转化为 AI 可调用的工具。其优势包括:扩展 AI 能力、无缝集成现有基础设施、类型安全开发以及减少样板代码。开发者可参考完整示例代码(GitHub 链接)快速上手。
Q&A
Ollama 的工具支持有什么主要功能?
Ollama 的工具支持包括易于集成、灵活配置、自动 JSON 模式生成、支持多种功能和运行时功能选择。
如何在 Spring AI 中使用 Ollama 函数调用?
在 Spring AI 中使用 Ollama 函数调用需要在本地运行 Ollama,并添加必要的依赖项。
Spring AI 的 Ollama 函数调用与 OpenAI 兼容吗?
是的,Ollama 与 OpenAI 兼容,可以使用 Spring AI 的 OpenAI 客户端与 Ollama 进行交互。
使用 Spring AI 的 Ollama 函数调用有哪些优势?
优势包括扩展 AI 功能、无缝集成、类型安全开发和减少样板代码。
在 Spring AI 中如何定义和注册 Java 函数?
可以定义自定义 Java 函数并将其注册为 Spring beans,以便与 Ollama 模型一起使用。
Ollama 函数调用的限制是什么?
目前 Ollama 的 API 不支持流工具调用或工具选择。