SpringAI——Java生态接入LLM

最近,Spring官网发布了SpringAI,可点此查看https://spring.io/blog/2024/03/12/spring-ai-0-8-1-released,对于SpringAI的介绍,可看官方文档:https://spring.io/projects/spring-ai#overview。
本文将使用SpringAI配合Ollama完成SpringAI的体验,下面分别介绍SpringAI和Ollama。

一、Spring AI

Spring AI是一个专为人工智能工程而设计的应用框架。它的目标是将Spring生态系统的设计原则,如可移植性和模块化设计,应用于人工智能领域,并推广使用纯Java对象(POJO)作为AI领域应用程序的构建块。

1.Spring AI的核心特性
  • 跨AI提供商的API支持:Spring AI提供了一套可移植的API,支持与多个AI服务提供商的聊天、文本到图像和嵌入模型进行交云。
  • 同步和流式API选项:框架支持同步和流式API,为开发者提供了灵活的交互方式。
  • 模型特定功能访问:允许开发者通过配置参数访问特定模型的功能,提供了更细致的控制。
2.支持的模型
  • 聊天模型:包括OpenAI、Azure Open AI、Amazon Bedrock、Cohere’s Command、AI21 Labs’ Jurassic-2、Meta’s LLama 2、Amazon’s Titan、Google Vertex AI Palm、Google Gemini、HuggingFace(包括Meta的Llama2等数千种模型)、Ollama(本地运行AI模型)、MistralAI等。
  • 文本到图像模型:如OpenAI的DALL-E、StabilityAI等。
  • 嵌入模型:包括OpenAI、Azure Open AI、Ollama、ONNX、PostgresML、Bedrock Cohere、Bedrock Titan、Google VertexAI、Mistal AI等。
3.向量存储API和向量数据库

Spring AI提供了跨不同提供商的向量存储API,具有类似SQL的元数据过滤API,保持了可移植性。支持的向量数据库包括Azure Vector Search、Chroma、Milvus、Neo4j、PostgreSQL/PGVector、PineCone、Redis、Weaviate、Qdrant等。

4.函数调用和ETL框架

Spring AI允许开发者声明java.util.Function实现,用于OpenAI模型的提示响应中。这一特性最小化了不必要的代码,并使AI模型能够请求更多信息以完成其响应。此外,框架还包括一个基于Java函数编程概念的ETL框架,帮助开发者将文档传输到模型提供商使用的向量存储中。

5.丰富的参考文档和示例应用

Spring AI配备了详尽的参考文档、示例应用程序和研讨会/课程材料,确保开发者拥有开始使用和充分利用框架所需的所有资源。

6.Spring AI的未来

Spring AI的未来版本将在当前基础上构建,计划提供对更多AI模型的访问,例如Google刚刚发布的Gemini多模态模型。框架还将引入评估AI应用程序效果的工具,更多的便利API和功能,以帮助解决查询/总结文档等常见用例。

7.Spring AI的使用

要开始使用Spring AI,只需几个简单的步骤:

  1. 安装Spring CLI。
  2. 在shell中运行以下命令创建一个新应用程序:
    spring boot new --from ai --name myai
  3. 这将创建一个用于与ChatGPT进行基本交互的应用程序。按照生成的README文件中的说明获取您的API密钥。
  4. 使用以下命令运行应用程序:
    ./mvw spring-boot:run
  5. 使用curl测试端点:
    curl localhost:8080/ai/simple

二、Ollama:本地运行大型语言模型的轻量级框架

Ollama是一个开源项目,旨在为用户提供一个简单、可扩展的框架,以便在本地机器上快速启动和运行大型语言模型。无论是研究人员、开发者还是对人工智能感兴趣的爱好者,Ollama都提供了一个便捷的途径来探索和利用最新的语言模型技术。

1.核心特性
  • 多平台支持:Ollama支持macOS、Windows预览版和Linux操作系统,确保了广泛的用户基础能够使用该框架。
  • Docker镜像:通过官方的Docker镜像ollama/ollama,用户可以轻松地在容器化环境中部署Ollama。
  • 丰富的模型库:项目支持包括Llama 2、Mistral、Gemma在内的多种大型语言模型,用户可以根据需要选择合适的模型。
  • 易于安装:Ollama提供了详细的安装指南,无论是通过下载压缩包还是使用命令行工具,用户都能轻松完成安装过程。
  • 模型自定义:用户可以通过创建Modelfile来导入GGUF模型,或者从PyTorch和Safetensors导入模型,实现模型的个性化定制。
  • 命令行界面(CLI):Ollama提供了一系列的CLI命令,简化了模型的创建、管理和运行过程。
  • REST API:通过REST API,用户可以编程方式运行和管理模型,为自动化和集成提供了便利。
  • 社区集成:Ollama与多个社区项目集成,包括Web和桌面应用程序、终端工具、数据库、包管理器和移动应用等,扩展了其应用范围。
2.模型安装和使用

Ollama官网:https://ollama.com/
Ollama Github地址:https://github.com/ollama/ollama

2.1 macOS安装指南
  1. 下载Ollama压缩包:
    访问Ollama的GitHub页面或官方网站,找到适用于macOS的下载链接。
    Download Ollama for macOS
  2. 解压压缩包:
    将下载的Ollama-darwin.zip文件解压到希望安装Ollama的目录。
  3. 安装依赖(如果有):
    根据Ollama的README文件或官方文档,安装任何必要的依赖项。
  4. 运行Ollama:
    打开终端,切换到解压后的Ollama目录,运行Ollama的启动命令。
cd Ollama-darwin
./ollama
2.2 Windows安装指南
  1. 下载Ollama安装程序:
    在Ollama的GitHub页面上找到Windows预览版的下载链接。
    Download Ollama for Windows
  2. 运行安装程序:
    双击下载的OllamaSetup.exe文件,并按照安装向导的指示完成安装。
  3. 验证安装:
    安装完成后,可以通过运行Ollama的命令或启动桌面应用程序来验证安装是否成功。
2.3 Linux安装指南
  1. 通过curl安装:
    打开终端,运行以下命令来安装Ollama。
    curl -fsSL https://ollama.com/install.sh | sh
  2. 手动安装(可选):
    如果希望手动安装或需要更详细的安装步骤,可以参考Ollama的GitHub仓库中的Linux安装文档。
    Manual install instructions
  3. 运行Ollama:
    安装完成后,可以通过终端运行Ollama的命令来启动框架。
2.4 Docker安装指南
  1. 安装Docker(如果尚未安装):
    根据操作系统,从Docker官网下载并安装Docker。
  2. 拉取Ollama Docker镜像:
    在终端中运行以下命令来拉取官方的Ollama Docker镜像。
    docker pull ollama/ollama
  3. 运行Docker容器:
    使用以下命令运行Ollama容器。
    docker run -it ollama/ollama
2.5 验证安装

无论使用的是哪种安装方法,都可以通过运行以下命令来验证Ollama是否已成功安装并运行:
ollama run gemma:2b
这将启动Gemma:2b模型,可以通过与模型交互来测试其功能。Gemma:2b模型对中文相对友好一些,例如:
在这里插入图片描述

三、SpringAI与Ollama
1.首先创建一个Spring项目

在这里插入图片描述

2.选择要使用的模型依赖,这里我选择的是Ollama

在这里插入图片描述

3.Ollama模型选择,Ollama官网中有多个模型可以选择,本次使用gemma:2b这个模型

在这里插入图片描述

4.在配置文件中,配置Ollama模型的URL和要使用的模型
spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.model=gemma:2b
5.启动Ollama,并运行gemma:2b模型。安装完成Ollama后,在命令窗口使用ollama run gemma:2b命令运行该模型,如果系统没有gemma:2b model的话会自动下载,所以第一次会慢一些

在这里插入图片描述

gemma:2b model运行成功后,可通过http://localhost:11434查看状态
在这里插入图片描述

6.在Java代码中进行测试

在这里插入图片描述

支持流式访问,比如这里,给LLM一个提示词:你是一个高级运营,你擅长于写各种运营文案,根据:{message} 场景写一个不少于100字的文案。然后,告诉它一个场景,例如:旅游。
执行程序,给出的结果如下:

## 探索自然,打开无限之旅!你是否渴望沉浸在自然美景之中?在感受阳光轻轻抚过皮肤的温暖中?在聆听动听的森林鸟叫中?在品尝异国美食的滋味中?我们为您打造了一套精彩旅游解决方案,带您走进神秘自然之中!从沉浸式的森林冒险到神秘自然之旅,我们提供各种体验,让您在自然之中寻找属于自己的精彩。**加入我们,开启无限之旅!*** **体验神秘自然:** 在神秘森林中,感受自然的奇迹,体验自然界的美丽与神秘。
* **品尝异国美食:** 探索世界的味蕾,品尝当地特色美食,感受不同的文化与风味。
* **沉浸在自然之中:** 在自然公园中散步,体验自然风光,感受生命的活力。
* **与自然共存:** 在环保旅游中,与生态环境共存,创造属于自然界的文明。**立即开始你的自然之旅吧!**complete~!

在这里插入图片描述

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

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

相关文章

Github Copilot 工具,无需账号,一键激活

① 无需账号,100%认证成功!0风险,可联网可更新,,支持copilot版本升级,支持chat ② 支持windows、mac、linux系统等设备 ③一号通用,支持所有IDE(AppCode,CLion,DataGrip,GoLand,IntelliJ IDEA …

【计算机网络】https的工作原理以及和http的区别

目录 前言 1. HTTP协议存在的问题 2. 什么是HTTPS协议? 3. HTTP和HTTPS有哪些区别? 4. HTTPS的工作原理 加密方式 前言 在日常的Web项目练习中,我们会发现老师会让我们在打开服务器之后使用 http://localhost/...进行项目效果测试和预览…

zookeeper基础学习之六: zookeeper java客户端curator

简介 Curator是Netflix公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等。Patrixck Hunt(Zookeeper)以一句“Guava is to Java…

无人机助力智慧农田除草新模式,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建无人机航拍场景下的农田杂草检测识别系统

科技发展到今天,无人机喷洒药物已经不是一件新鲜事情了,在很多高危的工作领域中,比如高空电力设备除冰,电力设备部件传送更换等等,无人机都可以扮演非常出色的作用,前面回到老家一段时间,最近正…

压铸模实现3D打印关键在材料

3D打印技术通过逐层堆积粉末状材料,可以制造出具有复杂形状和内部结构的模具零件,突破了传统加工方法的限制。这种设计自由度的提升使得模具制造更加精准和高效,如3D打印随形水路、随形透气钢等的应用,满足了现代制造业对高精度、…

每日学习笔记:C++ STL 的map、multimap

定义 特点 操作函数 意思就是,使用tuple中的元素来初始化pair,即string(“hello”)、complex(3.4,7.8) 元素的移除讨论

springCloudeAlibaba的使用

父pom文件&#xff1a; <?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.o…

CSS学习(1)-选择器

一、基本选择器 1. 通配选择器 作用&#xff1a;可以选中所有的 HTML 元素。 语法&#xff1a; * { 属性名: 属性值; }举例&#xff1a; /* 选中所有元素 */ * { color: orange; font-size: 40px; }主要用于&#xff1a;清除样式。 2. 元素选择器 作用&#xff1a;为页面…

JavaWeb笔记 --- 四、HTMlCSS

四、HTMl&CSS HTML入门 基本标签 图片、音频、视频标签 尺寸单位 px&#xff1a;像素 百分比 超链接标签 列表标签 表格标签 布局标签 表单标签 CSS导入方式 CSS选择器

Python Web开发记录 Day12:Django part6 用户登录

名人说&#xff1a;东边日出西边雨&#xff0c;道是无晴却有晴。——刘禹锡《竹枝词》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、登录界面2、用户名密码校验3、cookie与session配置①cookie与session②配置…

ideaSSM失物招领管理系统网页模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 失物招领管理系统是一套完善的完整信息管理系统&#xff0c;结合SSM框架完成本系统SpringMVC spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数…

pytorch 入门基础知识二(Pytorch 02)

一 微积分 1.1 导数和微分 微分就是求导&#xff1a; %matplotlib inline import numpy as np from matplotlib_inline import backend_inline from d2l import torch as d2l def f(x):return 3 * x ** 2 - 4 * x 定义&#xff1a; 然后求 f(x) 在 x 1 时的导数&#xff…

掌握人工智能:人工智能工程师必须了解的顶级编程语言

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Linux-centos如何搭建yum源仓库

1.本地搭建&#xff08;无需连接外网&#xff09; 1.1检查网络配置&#xff0c;及网络连接 打开虚拟机&#xff0c;点击【编辑——虚拟网络编辑器】 点击【仅主机模式】查看子网段是否和局内IP匹配 进入局内&#xff0c;查看网络IP是否在你上述设置的网段内&#xff0c;如果不…

Linux操作系统-汇编LED驱动程序基础

一、汇编LED原理分析 IMX6ULL-LED灯硬件原理分析&#xff1a; 1、使能时钟&#xff0c;CCGR0-CCGR6这7个寄存器控制着IMX6ULL所有外设时钟的使能。为了简单&#xff0c;设置CCGR0-CCGR6这7个寄存器全部为0XFFFFFFFF&#xff0c;相当于使能全部外设时钟。&#xff08;在IMX6ULL芯…

学习数据结构和算法的第16天

单链表的实现 链表的基本结构 #pragma once #include<stdio.h> #include<stlib.h> typedf int SLTDataType; typedy struct SListNode {SLTDataType data;struct SListNode*next; }SLTNode;void Slisprint(SLTNode*phead); void SListPushBack(SLTNode**pphead,S…

SQLiteC/C++接口详细介绍之sqlite3类(十三)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十二&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十四&#xff09;&#xff08;未发表&#xff09; 40.sqlite3…

相机拍照与摄影学基础

1.相机拍照 相机可能形状和大小不同&#xff0c;但基本功能相同&#xff0c;包括快门速度、光圈和感光度&#xff0c;这些是摄影的通用概念。即使是一次性相机也是基于这三个理念工作的。不同类型相机在这三个概念上的唯一区别是你可以控制这些功能的程度。这三个参数被称为相…

HCIP—OSPF课后练习一

本实验模拟了一个企业网络场景&#xff0c;R1、R2、R3为公司总部网络的路由器&#xff0c;R4、R5分别为企业分支机构1和分支机构2的路由器&#xff0c;并且都采用双上行方式与企业总部相连。整个网络都运行OSPF协议&#xff0c;R1、R2、R3之间的链路位于区域0&#xff0c;R4与R…

计算机设计大赛 题目:基于大数据的用户画像分析系统 数据分析 开题

文章目录 1 前言2 用户画像分析概述2.1 用户画像构建的相关技术2.2 标签体系2.3 标签优先级 3 实站 - 百货商场用户画像描述与价值分析3.1 数据格式3.2 数据预处理3.3 会员年龄构成3.4 订单占比 消费画像3.5 季度偏好画像3.6 会员用户画像与特征3.6.1 构建会员用户业务特征标签…