SpringAI集成本地AI大模型ollama(调用篇)非常简单!!

news2024/11/24 18:40:40

一,前提准备本地ai模型

1,首先需要去ollama官网下载开源ai到本地

网址:Ollama

直接下载到本地,然后启动ollama

启动完成后,我们可以在cmd中执行ollama可以看到相关命令行

2, 下载ai moudle

然后我们需要在这个ai中给它下载好一个已有模型给我们自己使用

将命令行运行即可下载。

二, 准备本地代码

1,首先准备pom文件中的相关依赖
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>3.2.5</version>
        </dependency>

        <dependency>
            <groupId>io.springboot.ai</groupId>
            <artifactId>spring-ai-ollama</artifactId>
            <version>1.0.3</version>
        </dependency>
    </dependencies>
2,搭建一个简单的springboot框架

启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
yaml配置
spring:
  ai:
    ollama:
      base-url: localhost:11434
具体代码实现--controller
import com.rojer.delegete.OllamaDelegete;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OllamaController {

    @Autowired(required=true)
    OllamaDelegete ollamaDelegete;

    @GetMapping("/ai/getMsg")
    public Object getOllame(@RequestParam(value = "msg") String msg) {
        return ollamaDelegete.getOllame(msg);
    }

    @GetMapping("/ai/stream/getMsg")
    public Object getOllameByStream(@RequestParam(value = "msg") String msg) {
        return ollamaDelegete.getOllameByStream(msg);
    }
具体代码实现--impl
import com.rojer.delegete.OllamaDelegete;
import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatClient;
import org.springframework.ai.ollama.api.OllamaApi;
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class OllamaImpl implements OllamaDelegete {

    OllamaApi ollamaApi;
    OllamaChatClient chatClient;
    {   
        // 实例化ollama
        ollamaApi = new OllamaApi();
        OllamaOptions options = new OllamaOptions();
        options.setModel("llama3");
        chatClient = new OllamaChatClient(ollamaApi).withDefaultOptions(options);
    }

    /**
     * 普通文本调用
     * 
     * @param msg
     * @return
     */
    @Override
    public Object getOllame(String msg) {
        Prompt prompt = new Prompt(msg);
        ChatResponse call = chatClient.call(prompt);
        return call.getResult().getOutput().getContent();
    }

    /**
     * 流式调用
     * 
     * @param msg
     * @return
     */
    @Override
    public Object getOllameByStream(String msg) {
        Prompt prompt = new Prompt(msg);
        Flux<ChatResponse> stream = chatClient.stream(prompt);
        List<String> result = stream.toStream().map(a -> {
            return a.getResult().getOutput().getContent();
        }).collect(Collectors.toList());
        return result;
    }

}

三,调用展示

我们看看普通调用的展示

流式调用的展示(我们跟ai聊天,回答不是一下子就出来的,就是这种流式调用所展示的这般)

这里不做具体的代码深挖,只做基本基础的运用。后期有机会会出个人模型训练方法。另外我们可以去spring官网查看,目前支持的ai模型有哪些,我这里简单截个图,希望各位看官老爷点个赞,加个关注,谢谢!Spring AI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1672873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MQTT】paho.mqtt.c 库的“介绍、下载、交叉编译” 详解,以及编写MQTT客户端例子源码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-05-13 1…

《系统架构设计师教程(第2版)》第11章-未来信息综合技术-01-信息物理系统(CPS)技术概述

文章目录 1. 信息物理系统&#xff08;CPS&#xff09;1.1 来源1.2 定义1.3 本质 2. CPS的实现2.1 CPS 的体系架构2.1.1 单元级2.1.2 系统级2.1.3 SoS级 2.2 CPS 的技术体系2.2.1 感知和自动控制1&#xff09;智能感知技术2&#xff09;虚实融合控制技术 2.2.2 工业软件2.2.3 工…

常用的内外网文件传输方式及优缺点

在现代企业环境中&#xff0c;内外网文件传输是一项至关重要的任务。这涉及到数据的安全性、传输效率以及操作的便捷性等多个方面。 每种方式都有其独特的优缺点&#xff0c;下面我们将逐一进行分析。 1、FileLink 优势&#xff1a;FileLink是一款专用于企业内外网隔离后的文…

Cocos Creator 3.8.x 透明带滚动功能的容器

ScrollView 是一种带滚动功能的容器 1、删除ScrollView下Sprite组件的SpriteFrame 2、ScrollView下scrollBar的Sprite组件的Color设为&#xff1a;FFFFFF00 3、ScrollView下view的Graphics组件的FillColor设为&#xff1a;FFFFFF00

python下载及安装

1、python下载地址&#xff1a; Python Releases for Windows | Python.orgThe official home of the Python Programming Languagehttps://www.python.org/downloads/windows/ 2、python安装 &#xff08;1&#xff09; 直接点击下载后的可执行文件.exe &#xff08;2&…

高频电源模块TL22010-T2整流模块TL22010-T3用途

直流屏充电模块TL22010-T2电源模块TL22010-T3&#xff0c;整流模块TL11010-T3&#xff0c;其他TL系列型号有&#xff1a;TL11020-T3&#xff0c;TL11010-T2&#xff0c;TL11020-T2&#xff0c;TL22010-T&#xff0c;TL-22010-T&#xff0c;TL-11010-T&#xff0c;TL-22005-T&am…

Django5.0入门基本使用

文章目录 一、安装1、安装django环境2、创建项目3、启动服务器4、创建第一个应用&#xff08;1&#xff09;创建应用&#xff08;2&#xff09;编写视图&#xff08;3&#xff09;映射url&#xff08;4&#xff09;测试 二、核心概念1、django.urls 函数&#xff08;1&#xff…

本周日直播:基于动力学软件CarSim 2024的车辆性能及控制算法开发在线直播课

CarSim2024 为乘用车和轻型卡车的性能模拟提供了最准确、最详细、最高效的方法。经过汽车工程师二十年的实际验证,CarSim 已成为分析汽车动力学、开发主动控制器、计算汽车性能功能和设计下一代主动安全系统的首选工具。 直播版本:2024.0 CarSim 2024 的优势: 全球有 110 …

化学式的分子量计算——字符转数字

【题目描述】 给出一种物质的分子式&#xff08;不带括号&#xff09;&#xff0c;求分子量。本题中的分子式只包含4种原子&#xff0c;分别为C, H, O, N&#xff0c;原子量分别为12.01, 1.008, 16.00, 14.01&#xff08;单位&#xff1a;g/mol&#xff09;。例如&#xff0c;…

实验名称:TCP 连接管理

目录 前言 TCP报文段格式 TCP建立连接 TCP释放连接 实验目的 实验原理 实验步骤 1. 启动WireShark&#xff0c;设置抓包状态 2. 访问指定服务器 &#xff0c;通过Wireshark抓取通信数据报文 3. 分析TCP连接建立的三次握手和连接释放的四次握手过程 原始数据记录 实验…

ubuntu下使用docker安装es和kibana以及ik分词器还有logstash

友情提醒&#xff1a;es和kibana的版本最好一致 0.准备工作 mkdir -p /home/elasticsearch/data/ mkdir -p /home/elasticsearch/config/ mkdir -p /home/elasticsearch/plugins/ chmod -R 777 /home/elasticsearch 编写配置文件 echo http.host: 0.0.0.0 http.cors.ena…

上传到 PyPI

将软件包上传到 PyPI&#xff08;Python Package Index&#xff09;&#xff0c;您需要遵循以下步骤&#xff1a; 准备软件包&#xff1a;确保您的软件包满足以下要求&#xff1a; 包含一个 setup.py 文件&#xff0c;用于描述软件包的元数据和依赖项。包含软件包的源代码和必要…

【Mac】Adobe2022~2024软件安装前必读

前言 安装2022-2024 adobe 系列软件之前&#xff0c;一定要先安装好Adobe Creative Cloud&#xff08;ACC&#xff09;&#xff0c;没有这个软件安装启动都会报错&#xff01;因为从Adobe 2022版本开始重写了Creative Cloud模块&#xff0c;必须联网才能使用。 温馨提示 安装…

【408真题】2009-10

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

数字水印 | Python 基于离散小波变换 DWT 的图像水印嵌入(上)

&#x1f34d;原文&#xff1a; 基于 dwt (离散小波变换) 实现彩色图像水印嵌入部分_1.0 &#x1f34d;写在前面&#xff1a; 本文在原文的基础上进行了代码补全。 正文 本文的内容主要为&#xff1a;水印图像经过 A r n o l d \mathsf{Arnold} Arnold 置乱算法后&#xff0…

Django模型进阶

接上一节 4.查询数据 在Django中&#xff0c;正向查询&#xff08;Forward Query&#xff09;和反向查询&#xff08;Reverse Query&#xff09;是ORM&#xff08;Object-Relational Mapping&#xff0c;对象关系映射&#xff09;中用于处理数据库表间关系时的两种查询方式&a…

代码随想录 打卡day23,24,25

1 二叉搜索树的最小绝对差 注意审题&#xff0c;题目当值说到是一个二叉搜索树&#xff0c;因此我们只需进行中序遍历即可&#xff0c;然后得到一个有序数组之后进行编辑&#xff0c;统计出来最小差。 class solution{ private:vector<int> vec;void traversal(TreeNode…

【经典文献】光声立体成像的对极几何

文献标题&#xff1a;《Epipolar Geometry of Opti-Acoustic Stereo Imaging》作者列表&#xff1a;Shahriar Negahdaripour发表期刊&#xff1a;IEEE Transactions on Pattern Analysis and Machine Intelligence发表年份&#xff1a;2007DOI链接&#xff1a;10.1109/TPAMI.20…

电流反馈型运放设计要点总结

目录 前言 基本架构 CFB和VFB运算放大器的差异 总结&#xff1a;电流反馈(CFB)与电压反馈(VFB) 前言 最近一个项目用到THS3491&#xff0c;发生了震荡&#xff0c;这是一个电流型反馈运放&#xff0c;借此机会&#xff0c;温故一下&#xff0c;电流运放的相关设计知识 基本架…

小米手机删除照片视频后没有释放手机存储空间

问题描述&#xff1a;小米手机11青春版&#xff0c;删除照片视频后&#xff0c;手机的存储空间没有变化&#xff1b; 问题原因&#xff1a;因为并没有真正的删除&#xff1b; 解决方案&#xff1a;手机 > 设置 > 我的设备 > 存储空间 > 应用公共文件(在最底部) &…