Spring AI和Ollama

概述

Spring AI 不仅提供了与 OpenAI 进行API交互,同样支持与 Ollama 进行API交互。Ollama 是一个发布在GitHub上的项目,专为运行、创建和分享大型语言模型而设计,可以轻松地在本地启动和运行大型语言模型。

Docker环境安装Ollama

1.获取Docker镜像。

docker pull ollama/ollama

2.在 Docker 容器内运行 Ollama。

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

3.现在您可以在容器内运行像 Llama 2 这样的模型。

docker exec -it ollama ollama run llama2

更多模型可以在Ollama 库中找到。

创建 Spring Boot 项目

首先引入相关依赖。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>3.2.0</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-ollama</artifactId>
        <version>0.8.0-SNAPSHOT</version>
    </dependency>
</dependencies>

<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <releases>
            <enabled>false</enabled>
        </releases>
    </repository>
</repositories>

在 application.yml 中配置 Ollama 地址和使用的模型。

spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      embedding:
        model: llama2

这里我们填写一个提示来测试下,ChatClient将调用Ollama的API接口。

@GetMapping("/top/fiction")
public String topCodeLanguage() {
    String message = "2023最受欢迎小说是什么";
    return chatClient.generate(message);
}

我们稍微对上面的接口做些更改,我首先将一个路径变量放入请求,这样我们就可以将年份模板化。PromptTemplate旨在帮助创建结构化提示,我们通过add()方法插入动态内容,render()会渲染为最终字符串格式。

@GetMapping("/top/fiction/{year}")
public String topCodeLanguageByYear(@PathVariable("year") Integer year) {
    String message = "{year}最受欢迎小说是什么";
    PromptTemplate promptTemplate = new PromptTemplate(message);
    promptTemplate.add("year", year);
    return chatClient.generate(promptTemplate.render());
}

结论

我们已经完成了Spring AI 与Ollama的基本示例,与往常一样,本文中使用的源代码可在 GitHub 上获得。

一起学习的小伙伴可以关注下我的公众号,我会经常更新技术实践类文章,所有文章都会有相应源码供大家学习交流!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python 模块搜索路径

前言 当我们import os的时候&#xff0c;Python解释器去哪找os模块呢&#xff1f;如果多处都有os模块&#xff0c;选择哪个os模块呢&#xff1f; 去哪找os模块&#xff1f; Python解释器不是很神奇&#xff0c;它会从以下2个地方找os模块 1、内置模块 sys.builtin_module_nam…

ROS-arbotix安装

方式一&#xff1a;命令行输入&#xff1a; sudo apt-get install ros-melodic-arbotix如果ROS为其他版本&#xff0c;可将melodic替换为对应版本。 方式二&#xff1a; 先从 github 下载源码&#xff0c;然后调用 catkin_make 编译 git clone https://github.com/vanadiumla…

P59 生成式对抗网络GAN-理论介绍 Theory behind GAN

Object Normal Distribution 的数据 经过 Generator 后生成分布更加复杂的PG. 真实数据的分布为 Pdata , 希望 PG和Pdata 越近越好 LOSS 是 两者之间的分布距离 问题: 如何计算 divergence? Sampling is goog enough Discriminator 希望V越大越好 y~Pdata 代表从 Pdata里…

项目整合积木报表-设计页面

项目整合积木报表-设计页面 <template><div><iframe id"dome" :srcsrc ></iframe></div> </template><script>export default {data(){return{src:configSrc.src"/jmreport/view/836138868821839872"}}} </…

BMTrain来高效训练预训练模型-大模型的福音

一.背景知识 在2018年&#xff0c;预训练语言模型技术的出现成为人工智能领域一场革命性的变革。研究表明&#xff0c;通过增加模型参数量和训练数据规模&#xff0c;可以有效提升语言模型的性能&#xff0c;因此十亿、百亿甚至千亿级大模型的探索成为业界的热门话题。这一趋势…

《网络是怎样连接的》2.3节图表(自用)

图4.1&#xff1a;TCP拆分数据与ACK号 图4.2&#xff1a;实际工作中ACK号与序号的交互过程 首先&#xff0c;客户端在连接时需要计算出与从客户端到服务器方向通信相关的序号初始值&#xff0c;并将这个值发送给服务器&#xff08;①&#xff09;。 接下来&#xff0c;服务器会…

macOS 老版本系统恢复中出现“MacBook Pro无法与恢复服务器取得联系”

macOS 老版本系统恢复中出现“MacBook Pro无法与恢复服务器取得联系” 网络问题系统时间问题镜像索引问题 网络问题 系统时间问题 镜像索引问题 恢复模式的 “实用工具 > 系统终端” 里执行如下 nvram IASUCatalogURLhttps://swscan.apple.com/content/catalogs/others/i…

PDF.js实现搜索多个不同的关键词高亮显示效果

static\PDF\web\viewer.js 392行左右 // 自定义搜索关键词---------------------------------------- this.searchKeywords = keyword => {if (typeof PDFViewerApplication !== undefined) {PDFViewerApplication.eventBus.dispatch(find, {query: keyword,caseSensitive:…

环境配置 | 史上最详细的Anaconda安装教程

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。Anaconda是Python的一个发行版&#xff0c;它是一个集成了Python开发工具的平台&#xff0c;也是数据科学的利器。安装Anaconda可以方便地获取Python及其相关工具和库&#xff0c;而无需单独安装Python。&#x1f308; 目…

程序媛的mac修炼手册-- 靠谱的数据源网站

啊&#xff0c;今天还是要给大伙儿安利些干货&#xff0c;方才对得起大伙儿的关注支持啊&#xff5e; 我最开始用Mac&#xff0c;主要是做数据分析的。包括R语言、Python语言&#xff0c;这些分析工具在Mac上运行地都很流畅。但我很少用Mac自带的电子表单应用程序Numbers&…

小程序如何配置扫码点餐功能

在餐饮行业中&#xff0c;通过小程序扫码点餐是一种非常方便和高效的方式。下面具体介绍怎么给小程序设置扫码点餐功能。 一、给每个桌子设置单独的小程序码。管理员点击个人中心->我的管理->更多->门店码。 生成小程序码页面&#xff0c;各个字段解释如下。 会员卡…

【Sublime Text】| 02——常用插件安装及配置

系列文章目录 【Sublime Text】| 01——下载软件安装并注册 【Sublime Text】| 02——常用插件安装及配置 失败了也挺可爱&#xff0c;成功了就超帅。 文章目录 1. 汉化2. 更换颜色主题3. 更改编码插件—ConvertToUTF84. 对齐插件—Alignment5. 括号高亮插件—BracketHighligh…

HTML5大作业-精致版个人博客空间模板源码

文章目录 1.设计来源1.1 博客主页界面1.2 博主信息界面1.3 我的文章界面1.4 我的相册界面1.5 我的工具界面1.6 我的源码界面1.7 我的日记界面1.8 我的留言板界面1.9 联系博主界面 2.演示效果和结构及源码2.1 效果演示2.2 目录结构2.3 源代码 源码下载 作者&#xff1a;xcLeigh …

GPT/GPT4科研应用与AI绘图技术及论文高效写作教程

详情点击链接&#xff1a;GPT/GPT4科研实践应用与AI绘图技术及论文高效写作教程 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型…

深入浅出XTTS:Oracle数据库迁移升级利器

演讲大纲&#xff1a; 1. 什么是XTTS 2. 适用场景 3. XTTS的基本操作步骤 4. XTTS案例分享 今天主要跟大家分享一下XTTS,在网上曾看过相关讨论,但发现按网上讲的那些去实际操作的话,还是会遇到一些坑,并不能实际落下来,所以今天想跟大家分享一些实战干货. 一、什么是XTTS …

知识付费平台搭建?找明理信息科技,专业且高效

明理信息科技知识付费saas租户平台 在当今数字化时代&#xff0c;知识付费已经成为一种趋势&#xff0c;越来越多的人愿意为有价值的知识付费。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。同时&#xff0c;开发和…

C#,快速排序算法(Quick Sort)的非递归实现与数据可视化

排序算法是编程的基础。 常见的四种排序算法是&#xff1a;简单选择排序、冒泡排序、插入排序和快速排序。其中的快速排序的优势明显&#xff0c;一般使用递归方式实现&#xff0c;但遇到数据量大的情况则无法适用。实际工程中一般使用“非递归”方式实现。 快速排序(Quick Sor…

FSMC—扩展外部SRAM

一、SRAM控制原理 STM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间&#xff0c;但当程序较大&#xff0c;内存和程序空间不足时&#xff0c;就需要在STM32芯片的外部扩展存储器了。STM32F103ZE系列芯片可以扩展外部SRAM用作内存。 给STM32芯片扩展内存与给…

用友 NC IUpdateService XXE漏洞复现

0x01 产品简介 用友 NC 是用友网络科技股份有限公司开发的一款大型企业数字化平台。 0x02 漏洞概述 用友 NC IUpdateService接口存在XML实体注入漏洞,未经身份认证的攻击者可以通过此漏洞获取敏感信息,读取系统内部文件,使系统处于极不安全状态。 0x03 复现环境 FOFA:…

2024年5大海外代理IP测评推荐

在跨境电商行业&#xff0c;想要发送安全运营跨境电商账号&#xff0c;多账号社媒推广&#xff0c;独立站SEO优化等等的业务都少不了代理IP工具。安全高质的代理IP可以保障你的网络活动安全、匿名、高效。 面对众多代理IP商&#xff0c;您是否很难做出购买决定&#xff1f;哪些…