跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaAIjava

本地部署 Llama 3.1:Ollama、OpenWeb UI 与 Spring AI 集成指南

综述由AI生成详细阐述了在本地环境中部署 Llama 3.1 大模型的全流程。首先介绍使用 Ollama 工具进行模型下载与运行,随后通过 Docker 部署 OpenWeb UI 以提供图形化管理界面。重点讲解了如何利用 Spring AI 框架在 Java 项目中集成 Ollama API,包含 Maven 依赖配置、application.yaml 设置及 Controller 接口实现。此外,补充了性能优化建议与常见问题排查方法,帮助开发者实现大模型的本地化离线应用开发。

机器人发布于 2025/2/7更新于 2026/6/425 浏览
本地部署 Llama 3.1:Ollama、OpenWeb UI 与 Spring AI 集成指南

本地部署 Llama 3.1:Ollama、OpenWeb UI 和 Spring AI 的综合指南

本文介绍如何使用 Ollama 在本地部署 Llama 3.1:8B 模型,并通过 OpenWeb UI 和 Spring AI 来增强模型交互体验和简化 API 的调用过程。

Ollama

Ollama 是一个开源的大语言模型服务工具,旨在简化大模型的本地部署和运行过程。用户只需要输入一行命令(如:ollama run llama3.1),即可在本地硬件环境中部署和使用大语言模型。Ollama 还提供了 REST API 接口,下文中会介绍如何使用 Spring AI 集成 Ollama,实现与大模型 API 接口的交互。

Ollama 支持下载 Llama、Gemma、qwen 和 glm4 等多种主流大语言模型和代码语言模型。本机运行 7B 参数量的模型至少需要 8GB 内存,运行 13B 参数量的模型至少需要 16GB 内存,运行 33B 参数量的模型至少需要 32GB 内存。

模型参数大小使用命令
Llama 3.18B4.7GBollama run llama3.1
Llama 3.170B40GBollama run llama3.1:70b
Llama 3.1405B231GBollama run llama3.1:405b
Gemma 29B5.5GBollama run gemma2
Gemma 227B16GBollama run gemma2:27b
qwen27B4.4GBollama run qwen2
qwen272B41GBollama run qwen2:72b
glm49B5.5GBollama run glm4

下载

访问官网,选择操作系统,然后点击 download 按钮进行下载。操作系统要求 MacOS 11 和 Windows 10 及以上版本。下载完成后的 Ollama 其实是一个命令行工具,我们可以直接在终端中使用 Ollama。(执行 ollama --help 可查看 Ollama 提供的命令)

部署 Llama 3.1

在终端中执行命令 ollama run llama3.1,即可下载 Llama3.1:8B 模型。模型下载完成后,会自动启动大模型,进入命令行交互模式,直接输入指令,就可以和模型进行对话了。

通过 Ollama,我们轻松的实现了本地大模型的部署和命令行式的交互,但是为了更好的使用大模型,以及对大模型进行管理和配置等方面的需求,就需要借助 Ollama 社区中一些强大的工具了,其中代表性的工具之一是 OpenWeb UI(之前称为 Ollama WebUI)。

OpenWeb UI

OpenWeb UI 是一个功能丰富且易于使用的大模型管理工具,它为用户提供了一个直观的图形化界面,以及广泛的功能和灵活的配置选项。

  • 方便部署:使用 Docker 实现简单快捷的部署。
  • 用户友好的页面:国际化多语言支持,提供多种主题样式,响应式设计,模型参数、Prompt 等便捷配置。
  • 功能丰富:本地 RAG 支持,Web 浏览功能(可以在对话中访问网站),语音交互等。
  • API 支持:支持 OpenAI API 和其他兼容 API。
  • 多模型支持:支持同时管理和操作多个大语言模型。

下载与部署

部署 OpenWeb UI 需要使用 Docker 环境,本机的 Docker 版本是 24.0.2。OpenWeb UI 提供了集成 Ollama 的部署方式,因为 Ollama 已经下载到本机上了,所以只需要执行以下命令即可完成部署。

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

容器启动成功后,可以访问 3000 端口,查看页面。首次登陆需要先填写邮箱和密码注册账号。登陆进来后,可以看到,OpenWeb UI 已经自动加载到了我们本地部署的 Llama3.1 模型。

在模型编辑页面,我们可以修改模型的配置参数和 Prompt 等信息,并利用 Document 和 Tools 等工具来增强模型的能力和使用体验。

Spring AI

Spring AI 是 Spring 生态里人工智能方向的应用框架,它提供了与各种大语言模型交互的高级抽象接口,极大地简化了 Java 人工智能应用程序的开发过程,让 Java 开发者也能够开发 AI 应用。

接下来将详细介绍 Spring AI 的使用流程,以及如何调用 Ollama 的 API 接口,与我们本地的 Llama 3.1 进行交互。

集成 Ollama

  1. 创建一个新的 Spring Boot 项目,版本要求 Spring Boot 3 + JDK 17。
  2. 引入 Spring AI + Ollama 依赖。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.1</version>
        <relativePath/>
    </parent>
    <groupId>com.cleaner</groupId>
    <artifactId>culture-ai</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Cleaner-ai</name>
    <description>culture-ai</description>
    <properties>
        <java.version>17</java.version>
        <spring-ai.version>1.0.0-SNAPSHOT</spring-ai.version>
    </properties>
    <dependencies>
        <!-- ollama -->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
</project>
  1. 编写 application.yaml 配置文件,添加 Ollama 的相关配置。
server:
  port: 8888
spring:
  application:
    name: Cleaner-AI
  ai:
    ollama:
      # ollama API Server 地址
      base-url: http://localhost:11434
      chat:
        enabled: true
        # 使用的模型名称
        model:
          llama3.1:8b
        options:
          temperature: 0.7
  1. 编写接口。
package com.cleaner.ai.controller;

import jakarta.annotation.Resource;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

@RestController
@RequestMapping("/ollama")
public class OllamaController {

    @Resource
    private OllamaChatModel ollamaChatModel;

    /**
     * 流式对话
     *
     * @param message 用户指令
     * @return
     */
    @GetMapping("/streamChat")
    public Flux<ChatResponse> generateStream(@RequestParam("message") String message) {
        message = "请使用中文简体回答:" + message;
        Prompt prompt = new Prompt(new UserMessage(message));
        return ollamaChatModel.stream(prompt);
    }

    /**
     * 普通对话
     * @param message   用户指令
     * @return
     */
    @GetMapping("/chat")
    public String generate(@RequestParam("message") String message) {
        message = "请使用中文简体回答:" + message;
        Prompt prompt = new Prompt(new UserMessage(message));
        ChatResponse chatResponse = ollamaChatModel.call(prompt);
        String content = chatResponse.getResult().getOutput().getContent();
        System.out.println("content = " + content);
        return chatResponse.toString();
    }
}
  1. 调用接口,可以看到 API 接口调用成功。(8B 模型生成的回答内容还是比较有限)

常见问题与优化建议

为了提升本地部署的体验和稳定性,以下是一些常见的优化建议和故障排查方法。

性能优化

  1. 量化模型:如果显存或内存不足,可以尝试使用量化版本(如 Q4_K_M)的模型,这能显著降低资源占用。
  2. 并发控制:在 Spring AI 配置中,可以通过调整线程池大小来控制并发请求数,避免 Ollama 进程过载。
  3. 缓存机制:对于重复的 Prompt,可以在应用层增加缓存策略,减少不必要的 API 调用。

故障排查

  1. 连接拒绝:如果 Spring Boot 无法连接 Ollama,请检查 base-url 是否正确,确保 Ollama 服务正在运行(curl http://localhost:11434/api/tags)。
  2. 模型未找到:确认 application.yaml 中的 model 名称与 Ollama 实际下载的模型名称一致(例如 llama3.1:8b 而非 llama3.1)。
  3. Docker 网络问题:在 Linux 环境下,Docker 容器可能无法直接访问 localhost,需使用 host.docker.internal 或配置正确的网络桥接。

安全建议

  1. 限制访问:不要将 Ollama 或 OpenWeb UI 的端口直接暴露在公网,建议使用反向代理并配置认证。
  2. 数据隐私:本地部署的优势在于数据不出域,请确保存储模型数据的卷(Volume)权限设置正确。

总结

本地部署的大模型可以脱离网络离线使用,但是要达到实际使用的要求,还需要对模型进行细致化的配置。当然,部署模型的参数量越大,使用效果会更好,但也要考虑本机电脑的配置限制。对于学习了解大模型及其相关的技术知识而言,在条件允许的情况下,本机部署确实是一个不错的选择。通过结合 Ollama、OpenWeb UI 和 Spring AI,开发者可以构建出既灵活又安全的本地 AI 应用架构。

目录

  1. 本地部署 Llama 3.1:Ollama、OpenWeb UI 和 Spring AI 的综合指南
  2. Ollama
  3. 下载
  4. 部署 Llama 3.1
  5. OpenWeb UI
  6. 下载与部署
  7. Spring AI
  8. 集成 Ollama
  9. 常见问题与优化建议
  10. 性能优化
  11. 故障排查
  12. 安全建议
  13. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 网络安全自学指南:三个阶段与核心学习路线
  • C++ string 类详解:初始化、遍历与常用成员函数
  • C++进阶:unordered_set 和 unordered_map 详解及哈希表模拟实现
  • Go 语言快速学习总结
  • 文心一言开源版部署与多维度测评实践
  • 数据结构:快速排序算法详解与实现
  • Qwen3-VL 基于 Llama-Factory 的 QLoRA 微调与部署全流程实战
  • OpenClaw 配置 GLM-4.7 Flash 与 DuckDuckGo 实现飞书机器人联网问答
  • Java 冷热钱包架构与用户资产安全保护
  • Prompt 提示词编写指南:如何发挥大语言模型最大潜力
  • 深入解析 LlamaIndex Workflows:构建复杂 RAG 与智能体工作流
  • 基于 Python 和 Dlib 的人脸相似度对比实现
  • 基于算法的 LLM 代码翻译新范式:解决意图丢失问题
  • UniApp 微信小程序多商家助农农产品商城系统架构
  • Python 学习指南:核心优势与应用场景解析
  • ChatBI Agent 架构详解:构建高效数据统计系统
  • 基于 AI 快速开发 MCP 服务插件并实现本地与线上部署
  • Windows 下安装 Python 3.8 与 PyCharm 开发环境配置指南
  • Cline 插件 IDEA 安装与配置指南
  • ROS导航实战:如何用mpc_local_planner让机器人高效避障(附参数调优技巧)

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online