一文带你springai+ollama实现chat

news2024/11/15 15:53:48

Spring AI

Spring AI 项目旨在简化开发集成了人工智能功能的应用程序,而不增加不必要的复杂性。该项目从一些著名的 Python 项目中汲取灵感,例如 LangChainLlamaIndex,但 Spring AI 并不是这些项目的直接移植。该项目的创立基于这样的信念:下一波生成式 AI 应用不仅限于 Python 开发者,而是将在多种编程语言中普及。其核心在于,Spring AI 解决了 AI 集成的基本挑战:将企业数据和 API 与 AI 模型连接起来官方网址

项目搭建

版本相关,

目前springai支持Spring Boot 3.2.x and 3.3.x,JDK17

添加里程碑和快照仓库

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

依赖管理

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在根据需要引入实际的组件

此处以ollama为例

<dependency>
   <groupId>io.springboot.ai</groupId>
   <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
   <version>1.0.0</version>
  </dependency>

配置模型和地址

spring:
  application:
    name: spring-ai-ollama
  ai:
    ollama:
      base-url: http://127.0.0.1:11434
      chat:
        options:
          model: llama3.1:8b

controller发布服务

@Resource
    private OllamaChatClient ollamaChatClient;



    @PostMapping("/ai")
    String sendMessage(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {

        String call = ollamaChatClient.call(message);
        return call;
    }

测试

测试的前提是本地已经启动了ollama的服务,搭建参考前一篇文章:

大型语言模型(Large Language Model, LLM)了解一下?

d7cf3b6e4945faa6b790a948333ac970.png

postman测试

b8288b17e07de6a709e93153f0a654dc.png fe588bdf2fee0f93130575c5e5b53174.png

往期推荐

大型语言模型(Large Language Model, LLM)了解一下?

常用的JVM参数与命令你知道吗?

推荐两款程序员高效工作神器

Git命令基操必须要会!

非常nice! IDEA远程Debug调试程序

DataX二次开发之达梦数据库插件


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

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

相关文章

龙芯+FreeRTOS+LVGL实战笔记(新)——02准备工程和驱动文件

本专栏是笔者另一个专栏《龙芯RT-ThreadLVGL实战笔记》的姊妹篇&#xff0c;主要的区别在于实时操作系统的不同&#xff0c;章节的安排和任务的推进保持一致&#xff0c;并对源码做了完善与优化&#xff0c;各位可以先到本人主页下去浏览另一专栏的博客列表&#xff08;目前已撰…

基于Java的图书推荐系统的设计与实现(论文+源码)_kaic

摘要 随着中国城市现代化的发展进程越来越快&#xff0c;网络信息无论是数量还是传播速度早已超过纸质传媒&#xff0c;图书推荐系统是否能提供高效和优质的服务己成为图书阅读的重要环节。因此&#xff0c;需要构建一套基于Java编程语言的图书推荐系统。本系统使用Java语言和S…

嵌入式全栈开发学习笔记---shell脚本

目录 shell脚本有什么用&#xff1f; 第一个shell脚本 shell基本语法 shell变量 shell三种变量 环境级变量 用户级变量 系统级变量 在shell脚本中进行数学运算 shell数组 基本数组 关联数组 流程控制 If语句 Case语句 循环语句 While语句 For语句 上节我们学…

这可能是你在编程学习中最容易忽视的一课

引言 在编程学习的道路上&#xff0c;你是否曾感到困惑&#xff0c;面对着一堆复杂的术语和工具&#xff0c;不知道从何下手&#xff1f;刚开始编程时&#xff0c;是不是总觉得像走进了一片迷雾&#xff1f;别担心&#xff0c;你并不孤单。这篇文章将为你揭示“计算机教育中缺…

深度学习资料集合

社区推荐 AIQ 是一个专注于人工智能和机器学习的交流平台&#xff0c;旨在推动行业内的知识分享与技术交流。 专知 是一个聚焦于前沿科技和多领域知识的平台&#xff0c;提供丰富的文章和讨论&#xff0c;使用户能够深入理解机器学习及其应用。 DataTau DataTau 是一个数据…

Facebook与区块链:构建更安全的社交网络生态

随着数字化时代的不断推进&#xff0c;社交网络的安全性和隐私保护成为了用户最为关注的问题之一。Facebook&#xff0c;作为全球领先的社交媒体平台&#xff0c;正在探索如何利用区块链技术来增强其平台的安全性和透明度。这一探索不仅是对现有技术的补充&#xff0c;更是对未…

Android运行时权限详解

文章目录 Android运行时权限详解Android权限机制详解在程序运行时申请权限 Android运行时权限详解 Android的权限机制并不是什么新鲜事物&#xff0c;从系统的第一个版本开始就已经存在了。但其实之前Android的权限机制在保护用户安全和隐私等方面起到的作用比较有限&#xff…

利用OSINT追踪勒索组织活动

0X00前言 众所周知&#xff0c;勒索组织一直是臭名昭著的代名词。在当今网络世界上时时刻刻都存在着勒索软件的身影。正所谓&#xff0c;不知攻&#xff0c;焉知防。我们可以更据OSINT的方法&#xff0c;去追踪分析各大勒索组织的活动&#xff0c;以及状态。为应对可能的勒索攻…

【Python基础】元组类型

本文收录于 《Python编程入门》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程基础知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、Python 元组2.1 创建特殊元组2.2 访问元组2.3 删除元组2.4 元组截取2.5 元组运算符2.6 元组内置函…

佰朔资本:9月券商金股出炉,这类股获机构力推

现在&#xff0c;券商新一批月度金股近期连续出炉。到9月1日&#xff0c;14家券商发布9月月度金股&#xff0c;举荐的104只金股会集分布在电子、机械设备、传媒、汽车等工作中。从个股来看&#xff0c;比亚迪、我国安全、阳光电源获2家以上券商共同举荐。别的&#xff0c;北方华…

30 静态路由

静态路由 一、配置静态路由 &#xff08;一&#xff09;静态路由特点 ​ 主要特点&#xff1a; ​ 由管理员手工配置&#xff0c;为单向条目通信双方的边缘路由器都需要指定&#xff0c;否则会导致数据包有去无回 &#xff08;二&#xff09;静态路由配置 ​ 使用ip rout…

开学季儿童护眼台灯怎么选择?盘点央视公布十大护眼灯!

随着年级的升高和学习内容的增加&#xff0c;学生的休闲娱乐时间逐渐减少&#xff0c;相反&#xff0c;他们在书桌前度过的时间却越来越多。近年来&#xff0c;由于电子产品的广泛使用&#xff0c;我国青少年的用眼负担显著增加。据权威机构预测&#xff0c;到2050年&#xff0…

ActiViz实战:使用vtkDistanceWidget实现两点测距功能

文章目录 一、效果图预览二、实现步骤三、C#完整实例代码一、效果图预览 二、实现步骤 1、通过vtkCellPicker拾取点坐标 2、通过vtkDistanceRepresentation2D设置起始点和结束点位置 3、通过vtkDistanceRepresentation2D的GetAxis()获取vtkAxisActor2D对象,并设置连线的样式 …

前端安全:如何防范跨站脚本攻击(XSS)

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介前端安全&#xff1a;如何防范跨站脚本攻击 (XSS)1. 引言2. 什么是跨站脚本攻击 (XSS)&#xff1f;2.1 XSS的分类 3. XSS攻击的危害4. XSS的常见攻击手法4.1 注入恶意脚本4.2 伪造表单和链接4.3 操纵DOM结构 5. 如何防范XSS攻击5.1…

Git使用(命令+idea快捷)

目录 一、概述 1.什么是Git 2.Git能干什么 3.简介 4.下载和安装 二、Git代码托管服务 1.常用的Git代码托管服务 2.使用码云代码托管服务 三、Git全局设置&#xff08;常用命令&#xff09; 1.命令 2.实现 四、获取Git仓库&#xff08;常用命令&#xff09; 1.两种方…

基于 cuda sdk 12.4.1安装cudnn8.9.7 步骤备忘——与cudnn9有差别

cuda环境崩了&#xff0c;运行 nvidia-smi后无法 连接 drvier&#xff0c;重装了 cuda 12.4.1 cudnn 8.9.7 因为看到pytorch daily 代码目前是支持 12.4的。发现 cudnn8 与 nv官网提供的cudnn9的安装时在文字上稍微有些差别&#xff0c; 主要是 cudnn8: sudo apt-get -y i…

水凝胶支架进行4D生化光定制?有啥用?快来看看!

大家好&#xff0c;今天我们来了解一项关于水凝胶支架的技术——4D生化光定制——《4D Biochemical Photocustomization of Hydrogel Scaffolds for Biomimetic Tissue Engineering》发表于《Accounts of Materials Research》。随着科技的发展&#xff0c;人们对组织工程和生物…

【C++】C++STL 揭秘:Strng背后的底层逻辑

C语法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理模板初阶String使用 在上篇介绍string类的使用与理解&#xff0c;本篇将为大家来带关于string的底层实现逻辑&…

「SpEL Validator」使用指南(一套无敌的参数校验组件)

前言 这是一套全新的参数校验组件&#xff0c;并非造轮子。 看完本文你可能会觉得用不上或不屑于使用&#xff0c;但这玩意确实有应用场景&#xff0c;你不妨稍微留意一下&#xff0c;日后你总会发现有用得上的时候。 此乃系列文章&#xff0c;当前为第②篇&#xff0c;其他…

Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping

概述 随着互联网的发展&#xff0c;网页数据抓取&#xff08;Web Scraping&#xff09;已成为数据分析和市场调研的重要手段之一。Puppeteer作为一款强大的无头浏览器自动化工具&#xff0c;能够在Node.js环境中模拟用户行为&#xff0c;从而高效地抓取网页数据。然而&#xf…