1 Ollama

Ollama是一个开源工具,它能在本地电脑上运行大语言模型(LLMs),比如deepseek-r1、gemma3、qwen3等。它把大语言模型复杂的安装和配置过程大大简化了,使得有技术背景的用户和无任何技术背景的用户都能轻松地体验这些强大的模型。

1.1 主要特点

Ollama的主要特点如下:

  • 简单易用:只需要下载并安装Ollama,然后通过简单的命令行就能拉取和运行模型。它把各种依赖和配置都打包好了,省去了很多麻烦。

  • 本地运行:所有的计算都在你的电脑上进行,这意味着你的数据是完全私密的。你不必担心数据上传到云端,这对于注重隐私的用户来说非常重要。

  • 支持多种模型:Ollama的模型库非常丰富,它支持多种主流的开源模型。你可以访问它的官方网站或者在终端使用命令“ollama list”来查看所有可用的模型。

  • 兼容性好:Ollama支持macOS、Linux和Windows系统。

  • API接口:Ollama还提供一个易于使用的API。开发者可以利用API将本地模型集成到自己的应用程序中,这为构建本地AI应用提供了极大的便利。

  • 模型定制:你可以通过修改模型文件(Modelfile)来创建自己的模型,比如将不同的模型合并,或者在基础模型上进行微调。

1.2 开始使用

进入Ollama的下载页面,根据你使用的操作系统选择对应Ollama版本即可。

ollama-download

Ollama提供了一个图形化的交互界面,可以使用户方便地完成问答、替换模型等操作。例如下图,只需在文本框中输入想问的问题并发送,稍等一会儿即可看到Ollama输出的答案。

q_and_a

注意,这里的“稍等一会儿”的时长,主要取决于你的电脑硬件配置以及所选的大语言模型大小。越高的硬件配置、越小型的模型,Ollama输出的速度越快;反之越慢。如果你想更换目前使用的模型,换成更小巧的。只需点击下图红框处即可。

change_m

关于Ollama提供了哪些可选模型,这些模型的大小/参数等信息,下一小节会说明。

1.3 可选模型

Ollama提供了非常多的主流大语言模型可供选择,并且这个支持列表会随着模型版本的更新而不断增加。具体见此页面

m_list

Ollama支持的模型列表页面中,显示了每个模型的下载量(反映出该模型的受欢迎程度)以及每个模型的参数版本(一般越少的参数数量代表越小的模型尺寸)。点击具体的模型可以进入到该模型的详情页面,进行更详细的了解。

1.4 LM Studio

LM Studio是另一个可以在本地运行大语言模型的工具。它提供了免费版本与付费版本,经常与Ollama拿来做对比。这里就不详细介绍了,感兴趣的话可以自行了解。

lm_studio

2 Spring AI

Ollama提供了HTTP协议的API接口,方便与外部程序集成。以下我以Java + Spring为例,进行说明:

Spring框架提供了专门面向AI的工程——Spring AI。它是一个面向人工智能的应用框架,其目标是将Spring生态系统的设计原则(如可移植性和模块化设计)应用于人工智能领域,并推动在人工智能领域使用POJO(普通 Java 对象)作为应用程序的构建模块。

spring_ai

2.1 生成Maven工程

Spring initializr页面生成一个样例工程。注意引入Ollama依赖和Spring Web依赖。

spring_ai_ollama

工程生成后,可以看到pom.xml文件中已引入spring-ai-bom(最新版本是1.0.3)与spring-ai-starter-model-ollama。

spring_pom

2.2 集成Ollama

新建一个@RestController,用来演示调用Ollama接口。具体代码如下:

import java.util.Map;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.prompt.ChatOptions;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.chat.prompt.PromptTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/chat")
public class ChatController {
	
    public ChatController(ChatClient.Builder chatClientBuilder, ChatMemory chatMemory) {
        this.chatClient = chatClientBuilder
        		// 指定模型
        		.defaultOptions(ChatOptions.builder().model("gemma3:1b").build())
                .build();
    }

    @GetMapping("/{tool}")
    String evaluateTools(@PathVariable("tool") String tool) {
    	// Prompt模版
        PromptTemplate pt = new PromptTemplate("""
                工具{tool}好用吗?
                """);
        // 设置模版参数
        Prompt p = pt.create(Map.of("tool", tool));

        return this.chatClient.prompt(p)
                .call()
                .content();
    }

    /**
     * attribute(s)
     */
	private ChatClient chatClient;
}

在构造方法ChatController中,通过

ChatOptions.builder().model("gemma3:1b").build()

指定了使用的模型是gemma,参数数量是1b。ProptTemplate设定了提示词模版,其中包含变量{tool}。这个变量由访问的URL路径中的{tool}来指定,并通过Map类型传入提示词模版中。

当启动这个Spring AI的应用后,访问http://127.0.0.1:8080/chat/Ollama,可以看到类似如下输出内容:

spring_ai_output

至此,一个最简单的Spring AI + Ollama本地大语言模型程序就完成了。其中spring-ai-starter-model-ollama封装了很多细节,感兴趣的话可以查看它的GitHub地址

3 总结

Ollama让普通用户在本地电脑上运行LLMs变得前所未有的简单。无论你是想保护隐私,还是想在没有网络连接的情况下使用AI,或者只是单纯地想体验一下最新的开源模型,Ollama都是一个非常好的选择。而Spring AI则让一直做工程开发的程序员,可以更加容易地体验在程序中集成AI能力的快乐。