Spring AI 接入本地大模型

在 Spring Boot 项目中使用 Spring AI 接入本地已经部署好的 Ollama + Qwen3-72B 模型。


🧩 一、准备工作

✅ 前提条件:

  1. Ollama 已安装并运行在本地(默认端口 11434
  2. Qwen3-72B 已通过 Ollama 安装或加载
  3. Java 环境(JDK 17+)
  4. Maven 或 Gradle 构建工具
  5. Spring Boot 项目基础环境

📦 二、添加依赖

Spring AI 是一个正在快速发展的项目,目前需要使用其最新快照版本或者官方发布版本。

如果使用 Maven,在 pom.xml 中添加如下依赖:

		<dependencies>
			<!-- Spring AI BOM -->
			<dependency>
				<groupId>org.springframework.ai</groupId>
				<artifactId>spring-ai-bom</artifactId>
				<version>1.0.0-M8</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

			<!-- Spring AI Starter Ollama -->
			<dependency>
				<groupId>org.springframework.ai</groupId>
				<artifactId>spring-ai-starter-model-ollama</artifactId>
				<version>1.0.0-M8</version>
			</dependency>

			<!--			web-->
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-web</artifactId>
				<version>3.4.5</version>
			</dependency>

		</dependencies>

⚠️ 注意:如果使用的是较旧的 Spring Boot 版本,请确保与 Spring AI 的兼容性。建议使用 Spring Boot 3.x + JDK 17+


🛠️ 三、配置 Ollama 客户端

application.propertiesapplication.yml 中添加配置:

# 配置 Ollama 服务地址
spring.ai.ollama.base-url=http://localhost:11434

🧠 四、编写代码调用 Qwen3-72B

创建一个简单的 Service 来调用模型:

示例:Qwen3Service.java

import org.springframework.ai.model.Model;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.ai.prompt.Prompt;
import org.springframework.ai.prompt.messages.UserMessage;
import org.springframework.stereotype.Service;

@Service
public class Qwen3Service {

    @Autowired
    private OllamaChatModel ollamaChatModel;

    @Override
    public Flux<String> stream(ChatDTO chatDTO) {
        if (chatDTO.model() == null) {
            throw new IllegalArgumentException("model不能为空");
        }

        String model = chatDTO.model();
        ChatOptions options = OllamaOptions.builder()
                .model(model)
                .build();

        String contents = chatDTO.message();
        Prompt prompt = Prompt.builder()
                .chatOptions(options)
                .content(contents)
                .build();

        return ollamaChatModel.stream(prompt)
                .map((response) -> response.getResult() != null && response.getResult().getOutput() != null && response.getResult().getOutput().getText() != null ? response.getResult().getOutput().getText() : "");

    }
}

🧪 五、测试调用

创建一个 Controller 测试接口:

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/ai")
public class Qwen3Controller {

    private final Qwen3Service qwen3Service;

    public Qwen3Controller(Qwen3Service qwen3Service) {
        this.qwen3Service = qwen3Service;
    }

    @RequestMapping(value = "/chat")
    public Flux<String> chat(@Valid @RequestBody ChatDTO chatDTO) {
        return qwen3Service.stream(chatDTO);
    }
}

启动 Spring Boot 应用后访问:

http://localhost:8080/api/ai/chat

📊 六、完整流程图

Spring Boot App → Spring AI → Ollama API → Qwen3-72B 模型 → 返回结果

📝 补充说明

  • Ollama 模型需提前加载,在终端执行过:

    ollama run qwen3
    
  • 如果你使用的是 GPU 加速版本,确保 Ollama 使用了 CUDA 支持的模型格式(如 GGUF + CUDA)

  • Spring AI 目前还在演进中,建议关注 Spring AI GitHub


✅ 总结

步骤内容
1添加 Spring AI 和 Ollama 依赖
2配置 Ollama 服务地址
3编写 Service 调用模型
4编写 Controller 提供 REST 接口
5浏览器或 Postman 测试接口

### Spring AI集成本地知识库的方法 在现代人工智能框架中,Spring AI 是一种用于构建复杂机器学习系统的工具集。为了将本地知识库接入Spring AI 系统中,可以通过以下方式实现: #### 1. 数据预处理与标准化 在将本地知识库接入之前,需要对其进行数据清洗和标准化操作。这一步骤通常涉及解析原始数据并将其转换为统一的格式。例如,如果知识库是以 RDF 或 OWL 格式存储,则可以使用 Python 库如 `RDFLib` 来加载和查询这些数据[^1]。 ```python from rdflib import Graph def load_knowledge_base(file_path): g = Graph() g.parse(file_path, format=&#39;xml&#39;) # 假设文件是 RDF/XML 格式的 return g ``` 通过上述方法,可以从本地磁盘读取知识库,并将其转化为可被程序理解的形式。 #### 2. 构建知识图谱模型 一旦完成数据准备阶段,下一步就是基于已有的知识库创建一个适合于 Spring AI 的知识图谱模型。此过程可能涉及到设计节点间的关系以及属性定义等工作。对于大规模的知识图谱来说,采用 GCN (Graph Convolutional Networks) 技术能够有效提升分类性能,但需要注意的是深层网络可能会引发过度平滑问题。因此,在实际部署过程中可以选择浅层架构或者引入跳跃连接机制来缓解这一现象的影响。 #### 3. 集成Spring AI 平台 最后一步即将所构建好的知识图谱模块无缝嵌入到整个 Spring AI 流程当中去。具体做法取决于项目需求和技术栈的选择情况;然而一般而言都会遵循 RESTful API 设计原则以便其他服务调用该功能组件。下面给出一段简单的 Flask 路由示例代码展示如何暴露接口供外部访问: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route(&#39;/query&#39;, methods=[&#39;POST&#39;]) def query(): data = request.json kb_graph = load_knowledge_base(&#39;local_kb.owl&#39;) results = [] for item in data[&#39;queries&#39;]: result = list(kb_graph.query(item)) results.append(result) return jsonify(results=results) if __name__ == &#39;__main__&#39;: app.run(debug=True) ``` 以上脚本展示了如何设置 HTTP POST 请求处理器以接收客户端发送过来的一系列 SPARQL 查询语句并对它们逐一执行返回结果列表给前端界面显示出来。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值