本地部署 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 等多种主流大语言模型和代码语言模型,我们可以在 官网 查看 Ollama 支持的所有模型及其相关信息和使用命令。 本机运行 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

下载

访问 Ollama 官网,选择操作系统,然后点击 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/> <!-- lookup parent from repository -->
    </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>
        <!-- spring ai -->
            <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>
        <!-- spring ai -->
        <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 模型生成的回答内容还是比较有限)
    在这里插入图片描述

总结

本地部署的大模型可以脱离网络离线使用,但是要达到实际使用的要求,还需要对模型进行细致化的配置,当然部署模型的参数量越大,使用效果会更好,但也要考虑本机电脑的配置限制。对于学习了解大模型及其相关的技术知识而言,在条件允许的情况下,本机部署确实是一个不错的选择。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

<think>好的,用户想了解如何通过Docker部署Open-WebUIOllama,需要教程或指南。首先,我需要回忆一下Docker的基本操作,因为用户可能对Docker不太熟悉,所以需要先简单提一下Docker的作用,但根据引用中的内容,引用[3]已经解释了Docker,所以可能不需要详细说明。 接下来,用户需要具体的部署步骤。Open-WebUIOllama都是需要容器化的应用。Ollama可能是一个后端服务,而Open-WebUI是前端界面。需要确认这两个服务是否有现成的Docker镜像,或者是否需要自己构建。根据常见的部署方式,可能Ollama有官方镜像,而Open-WebUI可能需要从GitHub拉取或者构建。 然后,用户可能需要使用Docker Compose来编排这两个服务,这样方便管理容器之间的网络连接。例如,Ollama可能在某个端口运行,而Open-WebUI需要连接到这个端口。因此,在docker-compose.yml中需要定义两个服务,并设置网络端口映射。 另外,用户可能需要了解如何配置环境变量,比如指定Ollama的API地址。例如,Open-WebUI可能需要通过环境变量连接到Ollama的后端。需要检查Open-WebUI的文档,确认需要哪些环境变量。 还有,持久化存储的问题。Ollama可能下载模型到本地,所以需要将卷挂载到容器中,防止数据丢失。同样,Open-WebUI可能有配置文件需要持久化。 用户可能遇到的问题包括网络配置错误、环境变量未正确设置、镜像拉取失败等。需要给出常见问题的解决方法,比如检查端口是否开放,查看容器日志等。 最后,根据引用中的信息,引用[1]提到使用docker stack deploy进行动态部署,但用户可能更熟悉docker-compose up,所以需要说明两种方法,但以docker-compose为主,因为更简单。引用[2]中的脚本执行方法可能对用户有帮助,但可能需要调整步骤。 总结步骤:安装Docker -> 编写docker-compose.yml -> 配置服务环境变量 -> 启动容器 -> 验证部署。同时需要确保版本兼容性,比如Docker版本是否支持Compose的语法。 需要验证每个步骤的正确性,例如Ollama的镜像名称是否正确,端口是否匹配,网络是否连通。可能还需要提醒用户查看官方文档获取最新信息,因为Docker镜像可能会有更新。 最后生成相关问题,需要涵盖Docker基础、网络配置、持久化存储、性能优化等方面的问题,帮助用户深入理解。</think>以下是通过Docker部署Open-WebUIOllama的分步指南: ### 一、准备工作 1. 安装Docker及Docker Compose 确保系统已安装Docker Engine(版本≥20.10)Docker Compose(版本≥2.17)。验证命令: ```bash $ docker --version && docker compose version ``` 2. 创建项目目录 ```bash $ mkdir openwebui-ollama && cd openwebui-ollama ``` ### 二、配置Docker Compose 创建`docker-compose.yml`文件,内容如下: ```yaml version: &#39;3.8&#39; services: ollama: image: ollama/ollama:latest ports: - "11434:11434" volumes: - ollama_data:/root/.ollama networks: - ai-net open-webui: image: ghcr.io/open-webui/open-webui:main ports: - "3000:8080" environment: - OLLAMA_API_BASE_URL=http://ollama:11434/api depends_on: - ollama volumes: - openwebui_data:/app/backend/data networks: - ai-net volumes: ollama_data: openwebui_data: networks: ai-net: driver: bridge ``` ### 三、关键配置说明 1. **Ollama服务** - 使用官方镜像`ollama/ollama` - 通过卷`ollama_data`持久化模型数据 - 暴露API端口`11434`,供Open-WebUI调用[^3] 2. **Open-WebUI服务** - 使用GitHub容器镜像`ghcr.io/open-webui/open-webui` - 通过环境变量`OLLAMA_API_BASE_URL`指定后端地址 - 将Web界面映射到宿主机的`3000`端口 3. **网络配置** - 创建自定义桥接网络`ai-net`,确保容器间通过服务名通信 ### 四、部署与验证 1. 启动服务 ```bash $ docker compose up -d ``` 2. 检查容器状态 ```bash $ docker compose ps ``` 3. 访问服务 - Open-WebUI:浏览器访问`http://localhost:3000` - Ollama API:验证端点`http://localhost:11434` ### 五、模型管理示例 1. 通过Open-WebUI下载模型 ```bash $ docker exec ollama ollama pull llama2 ``` 2. 查看已下载模型 ```bash $ docker exec ollama ollama list ``` ### 六、常见问题排查 1. **端口冲突** 修改`docker-compose.yml`中的宿主机端口映射,如将`3000:8080`改为`3001:8080` 2. **容器启动失败** 查看日志定位问题: ```bash $ docker compose logs ollama ``` 3. **模型加载失败** 检查存储卷权限: ```bash $ docker volume inspect openwebui-ollama_ollama_data ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值