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

做网站 做好把我踢开/微信软文模板

做网站 做好把我踢开,微信软文模板,厦门网站设计公司排名,wordpress独立关键词描述随着AI的发展,我们的编程也发生了改变,那么AI给我们带来了哪些改变和提升呢?本文就Spring AI框架引入大模型来看一下基于SpringAI框架下的大模型开发。 一、大模型部署 首先,我们看一下国内的大模型的部署,这里使用的是…

   随着AI的发展,我们的编程也发生了改变,那么AI给我们带来了哪些改变和提升呢?本文就Spring AI框架引入大模型来看一下基于SpringAI框架下的大模型开发。

一、大模型部署

   首先,我们看一下国内的大模型的部署,这里使用的是阿里云百炼:

Ollama下载ollama并安装: Ollama 

运行:

此时,一个Deepseek的本地大模型就部署完成,我们测试一下:

二、大模型调用

使用Postmain调用:

                                   三、SpringAI

3.1 对话机器人

3.1.1创建spring boot项目,并导入以下依赖:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

注意:上面的lombok推荐使用手动配置,不要使用spring boot创建时自带的(有问题)

3.1.2 配置文件
spring:application:name: ollama-aiai:ollama:
#      base-url: http://localhost:11434chat:model: deepseek-r1:1.5b
3.1.3 配置类
package com.song.ollama.config;import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author TonySong* @date 2025/4/11 0011* @time 17:32*/
@Configuration
public class CommonConfig {@Beanpublic ChatClient chatClient(OllamaChatModel ollamaChatModel) {return ChatClient.builder(ollamaChatModel).build();}
}
3.1.4 控制器
package com.song.ollama.controller;import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @author TonySong* @date 2025/4/11 0011* @time 17:39*/
@RestController
@RequestMapping("/ai")
@RequiredArgsConstructor//启用带参构造完成创建
public class ChatController {private final ChatClient chatClient;//    public ChatController(ChatClient chatClient) {
//        this.chatClient = chatClient;
//    }@RequestMapping("/chat") public String chat(@RequestParam(value = "message",defaultValue = "你是谁") String message) {return chatClient.prompt().user(message).call().content();}
}

测试并检查输出结果:

以上的输出需要等待一会儿(阻塞式),修改代码为非阻塞(Stram)调用:

@RequestMapping("/chat")
public Flux<String> chat(@RequestParam(value = "message",defaultValue = "你是谁") String message) {return chatClient.prompt().user(message).stream().content();
}

我们可以看到输出结果是乱码,修改代码:

@RequestMapping(value = "/chat",produces = "text/html;charset=utf-8")
public Flux<String> chat(@RequestParam(value = "message",defaultValue = "你是谁") String message) {return chatClient.prompt().user(message).stream().content();
}
3.1.5 会话日志

修改配置类:

@Configuration
public class CommonConfig {@Beanpublic ChatClient chatClient(OllamaChatModel ollamaChatModel) {return ChatClient.builder(ollamaChatModel).defaultAdvisors(new SimpleLoggerAdvisor()) //新增简单日志.build();}
}

修改配置文件,新增日志相关:

logging:level:org.springframework.ai.chat.client.advisor: debugcom.song.ollama: debug

此时,我们看控制台输出:

3.1.6 会话记忆

在配置类中,新增如下代码:

@Bean
public ChatMemory chatMemory() {return new InMemoryChatMemory(); 
}
@Bean
public ChatClient chatClient(OllamaChatModel ollamaChatModel,ChatMemory chatMemory) {return ChatClient.builder(ollamaChatModel).defaultAdvisors(new SimpleLoggerAdvisor(),new MessageChatMemoryAdvisor(chatMemory)).build();
}
3.1.7 会话历史

新增接口:

public interface ChatHistoryRepository {/*** 保存会话记录* @param type* @param charId*/void save(String type,String charId);/*** 获取会话记录* @param type* @return*/List<String> getChatIds(String type);
}

接口实现:

package com.song.ollama.repository;import org.springframework.stereotype.Component;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @author TonySong* @date 2025/4/12 0012* @time 10:35*/
@Component
public class InMemoryChatRepository implements ChatHistoryRepository{private final Map<String,List<String>> chatHistory= new HashMap<>();@Overridepublic void save(String type, String charId) {
//        if(!chatHistory.containsKey(type)){
//            chatHistory.put(charId,new ArrayList<>());
//        }
//        List<String> charIds = chatHistory.get(type);List<String> charIds = chatHistory.computeIfAbsent(type, k -> new ArrayList<>());if(charIds.contains(charId)){return;}charIds.add(charId);}@Overridepublic List<String> getChatIds(String type) {
//        List<String> list = chatHistory.get(type);
//        return list==null? List.of():list;return chatHistory.getOrDefault(type,List.of());}
}

修改会话实现:

package com.song.ollama.controller;import com.song.ollama.repository.ChatHistoryRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;/*** @author TonySong* @date 2025/4/11 0011* @time 17:39*/
@RestController
@RequestMapping("/ai")
@RequiredArgsConstructor//启用带参构造完成创建
public class ChatController {private final ChatClient chatClient;private final ChatHistoryRepository  chatHistoryRepository;@RequestMapping(value = "/chat",produces = "text/html;charset=utf-8")public Flux<String> chat(@RequestParam(value = "message",defaultValue = "你是谁") String message) {//1、保存会话chatHistoryRepository.save("chat",message);//2、获取会话return chatClient.prompt().user(message).stream().content();}
}

http://www.whsansanxincailiao.cn/news/30244134.html

相关文章:

  • 怎么样自己做网站赚钱年入40万/网上推广平台
  • 做一份seo网站诊断/中国突然宣布一重磅消息
  • 上孩做网站/编程培训机构排名前十
  • 一级a做爰片免费网站 新闻/接单平台app
  • 怎么给网站做域名重定向/大数据营销系统怎么样
  • html用表格来做网站布局/余姚seo智能优化
  • 加强政府网站网络信息安全建设/seo优化推广软件
  • 门户cms系统/提升关键词排名seo软件
  • 东莞阳光网官方网站/武汉seo网站推广
  • 东方建设官方网站/seo页面内容优化
  • 动漫做3d游戏下载网站/百度推广需要什么条件
  • 小企业网站建设公司哪家好/热搜榜百度一下你就知道
  • 福安市代理做网站/网络舆情优化公司
  • 大连网站制作开发/优化防疫措施
  • 重庆做网站letide/企业网站推广公司
  • wordpress云建站系统/上海seo推广整站
  • 2018做网站赚钱不/2345网址大全浏览器
  • 网站维护升级/直播回放老卡怎么回事
  • 黄山旅游攻略二日游自由行攻略/百度seo发帖推广
  • 网站和系统哪个好做/qq关键词排名优化
  • 工商网站如何下载建设银行u盾证书/怎么建立自己的企业网站
  • 谷哇网站建设/线上销售的方法和技巧
  • 做网站之前要备案是什么意思/南昌seo排名扣费
  • 关于怎样把网站建设好的一些建议/精准营销案例
  • 南昌网站建设模板文档/什么是seo什么是sem
  • 建站宝盒做的网站/北京做网站的公司有哪些
  • 武汉网站建设whjzyh/一般的电脑培训班要多少钱
  • win2008sr怎么用iis做网站/郴州seo快速排名
  • 网页模版网站/cdq百度指数
  • 不会被封的网站谁做/免费的网站申请