ai天机学堂复习关键技术点 nacosnacos配置简单运用在nacos新建配置aigc-service.yamltj: ai: session: title: Hello我是天机AI助理 describe: 我是由天机学堂倾力打造的智能助理我不仅能推荐课程、答疑解惑还能为您激发创意、畅聊心事。 examples: - title: 课程推荐 describe: 能帮我推荐一个合适的课吗 - title: 课程推荐 describe: 最近有什么新课吗 - title: 课程推荐 describe: 如何选择适合我的课程 - title: 课程推荐 describe: 有哪些热门课程推荐 - title: 课程购买 describe: 我想要购买《Java进阶编程实战》 - title: 课程购买 describe: 我想要报名《Java高级架构与微服务》 - title: 课程购买 describe: 《Java进阶编程实战》的课程价格是多少 - title: 课程购买 describe: 《Java高级架构与微服务》的课程价格是多少 - title: 课程介绍 describe: 请帮我介绍一下《互联网产品运营实战》 - title: 课程介绍 describe: 《Java大数据处理与分析》这门课一共有多少节 - title: 课程介绍 describe: 《Java高级架构与微服务》能学到什么内容 - title: 课程介绍 describe: 《互联网产品运营实战》适合我学习吗 - title: 知识讲解 describe: 面向对象的三大特征是什么 - title: 知识讲解 describe: ArrayList和LinkedList有何区别 - title: 知识讲解 describe: Java多线程怎么实现 - title: 知识讲解 describe: Spring Boot和SSM有什么区别 - title: 知识讲解 describe: 列表和元组有什么区别 - title: 知识讲解 describe: Python如何管理内存 - title: 知识讲解 describe: 装饰器的作用是什么 - title: 知识讲解 describe: 多线程为什么有GIL限制编写配置类用于匹配nacos中的配置naocs里面的配置和java代码中yml的配置都是可以直接被读取的是本质相同的配置文件都是根据配置前缀匹配对应的配置Data Configuration ConfigurationProperties(prefix tj.ai.session) public class SessionProperties { /** * AI助手的标题用于显示助手的名称或身份。 */ private String title; /** * AI助手的描述简要介绍助手的功能或特点。 */ private String describe; /** * 示例列表包含一些使用助手的示例。 */ private ListSessionVO.Example examples; }tj: ai: session: title: Hello我是天机AI助理 describe: 我是由天机学堂倾力打造的智能助理我不仅能推荐课程、答疑解惑还能为您激发创意、畅聊心事。 examples: - title: 课程推荐 describe: 能帮我推荐一个合适的课吗这个配置文件前缀是tj.ai.session需要的配置为titledescribeexamples其实这部分知道原理就行其他的可以直接问aipackage com.tianji.ai.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Component; import java.util.List; Data Component RefreshScope // 核心注解开启配置热更新 ConfigurationProperties(prefix tj.ai) // 指定前缀 public class TjAiProperties { private Session session; Data public static class Session { private String title; private String describe; private ListExample examples; } Data public static class Example { private String title; private String describe; } }在java代码中读取配置其实在从nacos读取配置文件到java后端读取成类之后就可以按照普通类来处理只不过这个类是系统创建并配置好的可以直接使用的对象package com.tianji.ai.controller; import com.tianji.ai.config.TjAiProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; RestController RequestMapping(/ai) public class AiController { Autowired private TjAiProperties tjAiProperties; GetMapping(/session/info) public TjAiProperties.Session getSessionInfo() { return tjAiProperties.getSession(); } }服务热更新只需要加入一个注解项RefreshScope并且在yml文件中配置spring: cloud: refresh: enabled: true # 必须手动开启否则注解完全无效[reference:3]package com.tianji.ai.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Component; import java.util.List; Data Component RefreshScope // 核心注解开启配置热更新 ConfigurationProperties(prefix tj.ai) // 指定前缀 public class TjAiProperties { private Session session; Data public static class Session { private String title; private String describe; private ListExample examples; } Data public static class Example { private String title; private String describe; } }自己编写代码流程:1.根据前端页面或者接口文档确定后端contrller层该怎么写也就是如何接收请求2.根据返回类型和接收参数类型写dto或者vo这部分也可以交给ai3.编写代码--各种小组件再熟悉如何运用之后就没必要死记硬背了可以直接交给ai来复现Slf4j Service RequiredArgsConstructor public class ChatSessionServiceImpl extends ServiceImplChatSessionMapper, ChatSession implements ChatSessionService { private final TjAiProperties tjAiProperties; Override public AISessionVO createSession(Integer num) { var sessionVO BeanUtil.toBean(tjAiProperties, AISessionVO.class); // 随机获取examples sessionVO.setExamples(RandomUtil.randomEleList(tjAiProperties.getSession().getExamples(), num)); // 随机生成sessionId sessionVO.setSessionId(IdUtil.fastSimpleUUID()); // 构建持久化对象并持久化 var chatSession ChatSession.builder() .sessionId(sessionVO.getSessionId()) .userId(UserContext.getUser()) .build(); super.save(chatSession); return sessionVO; } }不能直接通过配置读取的要通过data_id来读取配置的基本代码同样可以copyAI智能体协同合作智能体抽象类