最近,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~!

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐