当前位置: 首页 > ops >正文

使用spring ai实现简单会话

前序文章

本地部署ollama及deepseek(linux版)

如何通过http访问ollama接口

1、首先要引入对应的jar包

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId><version>1.0.0-M6</version></dependency>

2、配置文件

spring:application:name: knowledge_aiai:ollama:base-url: http://192.168.1.116:11434chat:model: deepseek-r1:1.5b

3、 java类实现,目前是一个简单的DEMO,可以直接调用

package com.hxzy.knowledge_ai.controller;import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.chat.memory.InMemoryChatMemory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class OllamaController {private final ChatClient ollamaChatClient;private static final String DEFAULT_PROMPT = "你是一个博学的智能聊天助手,请根据用户提问回答!";public OllamaController(ChatClient.Builder chatClientBuilder) {this.ollamaChatClient = chatClientBuilder.defaultSystem(DEFAULT_PROMPT)// 实现 Chat Memory 的 Advisor// 在使用 Chat Memory 时,需要指定对话 ID,以便 Spring AI 处理上下文。.defaultAdvisors(new MessageChatMemoryAdvisor(new InMemoryChatMemory()))// 实现 Logger 的 Advisor.defaultAdvisors(new SimpleLoggerAdvisor())// 设置 ChatClient 中 ChatModel 的 Options 参数
//                .defaultOptions(
//                        OllamaOptions.builder().model("deepseek-r1:1.5b").build()
//
//                ).build();}@GetMapping("/simple/chat")public String simpleChat(String question) {return this.ollamaChatClient.prompt(question).call().content();}
}

4、调用接口

http://www.xdnf.cn/news/6144.html

相关文章:

  • PHP 编程:现代 Web 开发的基石与演进
  • 基于EMD-PCA-LSTM的光伏功率预测模型研究
  • 京东回应外卖业务中期目标:聚焦协同与体验,布局长远发展
  • 洞若观火 - 服务网格的可观测性魔法 (Istio 实例)
  • 第二十八节:直方图处理- 直方图计算与绘制
  • 使用termius连接腾讯云服务器
  • 使用Docker部署MongoDB
  • 实验五:以太网UDP全协议栈的实现(通过远程实验系统)
  • Milvus 视角看重排序模型(Rerankers)
  • 说说C/C++结构体大小计算(内存对齐)
  • 【MyBatis-9】MyBatis分页插件PageHelper深度解析与实践指南
  • 朱老师,3518e系列,第二季
  • (3)python开发经验
  • nacos:服务注册原理
  • 我的多条件查询
  • MCP(一)——QuickStart
  • Java—— 可变参数、集合工具类、集合嵌套
  • Vue.js---嵌套的effect与effect栈
  • Maven构建流程详解:如何正确管理微服务间的依赖关系-当依赖的模块更新后,我应该如何重新构建主项目
  • D. Eating【Codeforces Round 1005 (Div. 2)】
  • Spring 中常见的属性注入方式(XML配置文件)
  • 单调栈简单习题分析
  • Web安全核心内容与常见漏洞总结
  • EasyConnect卸载大汇总
  • vulnhub靶场——secarmy
  • 动态多因子策略
  • RDD的自定义分区器
  • stm32 ADC单通道转换
  • 反射, 注解, 动态代理
  • 【PSINS工具箱】基于工具箱的单独GNSS导航、单独INS导航、两者结合组合导航,三种导航的对比程序。附完整的代码