SpringAI部署Ollama

Ollama简介

Ollama 是一个用于本地化部署和管理大型语言模型(LLM)的工具。它支持多种开源模型(如 LLaMA、Alpaca 等),并提供了简单的 API 接口,方便开发者调用。Ollama可以让你在自己的电脑上运行各种强大的 AI 模型,就像运行普通软件一样简单。

Ollama本地部署有什么好处

隐私与数据安全

本地部署确保所有数据处理和模型推理均在用户自己的设备上完成,避免敏感数据上传至第三方服务器。对于涉及商业机密或个人隐私的应用场景,本地部署能有效降低数据泄露风险。

离线可用性

无需依赖网络连接即可运行,适合网络不稳定或完全离线的环境(如内网、偏远地区)。模型响应速度不受带宽限制,尤其对实时性要求高的任务(如实时翻译、对话)更具优势。

定制化与灵活性

用户可自由选择模型版本(如Llama 2、Mistral等),并针对特定需求微调模型参数或训练数据。本地部署允许深度集成到现有工作流中,不受云服务API的限制。

长期成本优化

虽然初始硬件投入较高(如需要GPU支持),但长期使用可避免云服务的按量计费或订阅费用。对于高频使用场景,本地部署的总成本可能更低。

性能可控性

本地部署允许直接控制计算资源分配(如CPU/GPU优先级、内存占用),避免云服务的多租户资源竞争问题。用户可根据实际需求调整批处理大小、线程数等参数以优化性能。

合规与审计

某些行业(如医疗、金融)对数据存储和计算有严格合规要求。本地部署简化了合规流程,所有操作日志和数据留存均可自主管理,便于审计追踪。

安装Ollama

下载Ollama

访问Ollama官方网站(https://ollama.com/),根据操作系统选择对应的安装包:

  • Windows:下载.exe安装程序并运行。
  • macOS:下载.dmg文件并拖拽到应用程序文件夹。
  • Linux:通过命令行下载,例如:
    curl -fsSL https://ollama.com/install.sh | sh
    

注:

  • 模型默认安装在C盘,可以修改安装路径

  • 点击环境变量,选择下面新建一个系统环境变量 OLLAMA_MODELS ,然后指定想要安装模型的路径 ,比如 “D:\Ollama”
    在这里插入图片描述

  • 需要重启 Ollama生效

启动Ollama服务

安装完成后,启动Ollama服务:

  • Windows/macOS:通过桌面图标或应用程序列表启动。
  • Linux:运行以下命令启动服务:
    ollama serve
    
下载Deepseek模型

硬件配置建议

  • GPU选择(根据模型大小灵活调整):
    入门配置:NVIDIA显卡(≥8GB显存) → 适合7B/8B模型。
    高性能配置:NVIDIA显卡(≥16GB显存) → 支持14B大模型。
    无独立显卡用户:可使用CPU模式运行(速度约为GPU的20%)。

  • 内存要求:≥16GB(推荐32GB,处理长文本时不易卡顿)

  • 存储空间:≥50GB可用空间(建议SSD硬盘,加快模型加载速度)

  • 操作系统
    Windows 10/11(21H2及以上版本)。
    macOS Ventura 13.4+。
    Ubuntu 22.04 LTS/24.04 LTS

选择适合自己的版本 https://ollama.com/library/deepseek-r1

使用ollama pull命令下载模型,以1.5b举例:

ollama pull deepseek-r1:1.5b

等待模型下载完成,具体时间取决于网络速度和模型大小。

运行模型

下载完成后,通过以下命令与模型交互:

ollama run deepseek-r1:1.5b

输入问题或指令,模型会生成响应。例如:

>>> 你好

Spring AI部署代码

pom文件

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>ollama</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>ollama</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.8</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <spring-ai.version>1.0.0-M5</spring-ai.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>
        <dependency> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-starter-thymeleaf</artifactId> 
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</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>

    <!--下载spring-ai相关包需要用到的仓库地址-->
    <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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

yml配置文件

spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      model: deepseek-r1:1.5b
      chat:
        options:
          model: deepseek-r1:1.5b
          temperature: 0.7

代码

package org.example.service;

import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.chat.prompt.SystemPromptTemplate;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;

@RequiredArgsConstructor
@Service
public class AiService {
    @Autowired
    private OllamaChatModel ollamaChatModel ;

    // 简单的直接调用
    public String generate(String message) {
        return  ollamaChatModel .call(message);//返回文本
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值