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

LangChain4J-XiaozhiAI 项目分析报告

LangChain4J-XiaozhiAI 项目分析报告

GitHub 链接

1. 项目概述

本项目名为 “硅谷小智(医疗版)”,是一个基于 Java 技术栈和 LangChain4J 框架构建的 AI 聊天助手应用。其核心目标是利用大型语言模型(LLM)的能力,结合本地知识库和外部工具,提供一个专注于医疗领域的智能问答和辅助服务。项目采用了前后端分离的架构,后端使用 Spring Boot 框架,深度集成了 LangChain4J 库来实现与大模型的交互、记忆管理、工具调用(函数调用)以及检索增强生成(RAG)等功能。前端则采用 Vue.js 构建用户交互界面。

根据项目提供的 尚硅谷-Java+大模型-硅谷小智(医疗版).md 文档,该项目似乎是一个教学或演示项目,旨在展示如何使用 LangChain4J 将大模型能力集成到 Java 应用中,特别是针对医疗场景。项目配置使用了阿里云的百炼平台(DashScope)提供的通义千问(Qwen)系列模型,同时也展示了如何接入其他模型(如 DeepSeek)以及本地部署模型(通过 Ollama)。

2. 技术栈

后端:

  • 核心框架: Spring Boot 3.2.6
  • AI 框架: LangChain4J 1.0.0-beta3
  • 语言: Java 17
  • 构建工具: Maven
  • 数据库:
    • MySQL (使用 Mybatis-Plus 操作,存储如预约信息等业务数据)
    • MongoDB (存储聊天记忆)
  • 大模型平台: 阿里云百炼 (DashScope),支持 Qwen 系列模型,配置中也提到了 OpenAI 兼容接口(可用于 DeepSeek 等)
  • API 文档: Knife4j
  • 其他: Spring WebFlux (用于流式响应), Reactor

前端:

  • 框架: Vue.js (具体版本需查看 package.json)
  • 构建工具: Vite
  • UI 组件库: (可能使用,需查看 package.json 和代码)

3. 项目结构分析

项目主要包含以下几个模块:

  • LangChain4j-ai-demo3: 后端 Spring Boot + LangChain4J 核心模块。
  • xiaozhi-ui: 前端 Vue.js 应用模块。
  • knowledge: 存放用于 RAG 的本地知识库文件(包含 .md, .pdf, .txt 格式)。
  • images: 存放项目相关的图片资源,包括文档中的截图。
  • 尚硅谷-Java+大模型-硅谷小智(医疗版).md: 项目的说明和教程文档。

3.1 后端 (LangChain4j-ai-demo3) 结构

后端遵循典型的 Spring Boot 项目结构:

  • src/main/java/org/example: Java 源代码根目录。
    • XiaozhiApp.java: Spring Boot 应用启动类。
    • assistant: 包含 LangChain4J 的 AI 服务接口和可能的实现类。
      • XiaozhiAgent.java: 核心 AI 服务接口,使用 @AiService 注解配置模型、记忆、工具和 RAG。
    • bean: 数据传输对象 (DTO),如 ChatForm, ChatMessages
    • config: Spring 配置类,用于配置 LangChain4J 组件,如 EmbeddingStore, ChatMemoryProvider 等。
    • controller: Spring MVC 控制器,处理 HTTP 请求。
      • XiaozhiController.java: 提供 /xiaozhi/chat API 端点,接收用户消息并调用 XiaozhiAgent
    • entity: JPA/Mybatis-Plus 实体类,映射数据库表,如 Appointment
    • mapper: Mybatis-Plus Mapper 接口,定义数据库操作,如 AppointmentMapper
    • service: 业务逻辑服务层接口和实现。
      • AppointmentService.java / impl: 处理预约相关的业务逻辑。
    • store: 数据存储相关实现。
      • MongoChatMemoryStore.java: 使用 MongoDB 实现 LangChain4J 的 ChatMemoryStore
    • tools: LangChain4J 工具类,用于函数调用。
      • AppointmentTools.java: 提供预约相关的工具方法供 LLM 调用。
      • CalculatorTools.java: 提供计算器工具方法供 LLM 调用。
  • src/main/resources: 资源文件目录。
    • application.properties: Spring Boot 配置文件,包含服务器端口、数据库连接信息、LangChain4J 模型 API Key 和模型名称等配置。
    • mapper: Mybatis-Plus XML 映射文件,如 AppointmentMapper.xml
    • *.txt: LangChain4J 使用的提示模板文件,如 xiaozhi-prompt-template.txt
    • knowledge: (推测可能用于存放处理后的知识文件,但实际知识库在项目根目录的 knowledge 文件夹下)
  • src/test/java: 单元测试和集成测试代码。
  • pom.xml: Maven 项目配置文件,定义项目依赖和构建配置。

3.2 前端 (xiaozhi-ui) 结构

前端是一个基于 Vite 构建的 Vue.js 项目:

  • public: 静态资源目录。
  • src: 前端源代码目录。
    • main.js: Vue 应用入口文件。
    • App.vue: 根组件。
    • components: 可复用的 Vue 组件。
      • ChatWindow.vue: 核心的聊天窗口界面组件。
    • assets: 存放图片、样式等资源。
  • index.html: HTML 入口文件。
  • package.json: Node.js 项目配置文件,定义前端依赖和脚本。
  • vite.config.js: Vite 配置文件。
  • README.md: 前端模块的说明文件。

4. 核心功能分析

4.1 AI 交互核心 (XiaozhiAgent)

项目的 AI 交互核心是 XiaozhiAgent 接口,通过 LangChain4J 的 @AiService 注解进行配置。这个注解极大地简化了与 LLM 的集成:

@AiService(wiringMode = AiServiceWiringMode.EXPLICIT, // 显式指定要使用的 Bean// chatModel = "qwenChatModel", // 非流式模型(注释掉了)// 用于流式输出的模型streamingChatModel = "qwenStreamingChatModel", // 聊天记忆提供者chatMemoryProvider = "chatMemoryProviderXiaozhi", // 工具(函数调用)tools = "appointmentTools", // 内容检索器(RAG),这里配置了 Pinecone,但代码中也有注释掉的本地实现contentRetriever = "contentRetrieverXiaozhiPincone" 
)
public interface XiaozhiAgent {// 流式输出方法@SystemMessage(fromResource = "xiaozhi-prompt-template.txt") // 指定系统提示模板Flux<String> chat(@MemoryId Long memoryId, @UserMessage String userMessage);
}
  • 模型集成: 配置了 qwenStreamingChatModel Bean 作为流式聊天模型。该 Bean 的具体配置(如 API Key, 模型名称)在 application.properties 中定义,并通过 LangChain4J 的 Spring Boot Starter 自动配置或自定义配置类注入。
  • 流式输出: 接口方法返回 Flux<String>,结合 Spring WebFlux,实现了聊天响应的流式输出,提升了用户体验。
  • 聊天记忆: 通过 chatMemoryProvider = "chatMemoryProviderXiaozhi" 指定了聊天记忆的提供者 Bean。结合 @MemoryId Long memoryId 参数,可以为不同的用户或会话维护独立的聊天历史。MongoChatMemoryStore 提供了基于 MongoDB 的持久化记忆存储。
  • 工具调用 (Function Calling): 通过 tools = "appointmentTools" 集成了 AppointmentTools Bean 中定义的方法。这使得 LLM 能够调用 Java 方法来执行特定任务,例如查询或创建预约。
  • 检索增强生成 (RAG): 通过 contentRetriever = "contentRetrieverXiaozhiPincone" 集成了内容检索器。这允许 LLM 在回答问题前,先从指定的知识库(向量数据库 Pinecone 或本地文件)中检索相关信息,并将这些信息注入到提示中,从而让 LLM 能够基于特定领域的知识进行回答。知识库的来源是项目根目录下的 knowledge 文件夹中的文档。
  • 系统提示: 使用 @SystemMessage(fromResource = "xiaozhi-prompt-template.txt") 从外部文件加载系统提示,用于设定 AI 的角色、行为和指令。

4.2 API 端点 (XiaozhiController)

XiaozhiController 提供了一个简单的 RESTful API 端点 /xiaozhi/chat (POST),用于接收前端发送的聊天请求。请求体是一个 ChatForm 对象,包含 memoryId 和用户消息 message。控制器直接调用 XiaozhiAgentchat 方法,并将返回的 Flux<String> 作为流式响应返回给前端。

4.3 知识库与 RAG 实现

项目包含一个 knowledge 目录,存放了 .md, .pdf, .txt 等格式的医疗相关文档(如医院信息、科室信息等)。这些文档是 RAG 的基础。

LangChain4J 提供了文档加载、切分、向量化和存储的工具。虽然具体的 RAG 配置代码(如 EmbeddingStoreConfig.java 和文档处理流程)没有在当前分析中完全展示,但从 XiaozhiAgent 的配置可以看出,项目旨在利用这些知识文件:

  1. 文档加载与切分: 使用 LangChain4J 的 DocumentLoader 加载 knowledge 目录下的文件,并使用 DocumentSplitter 将长文档切分成小块。
  2. 向量化: 使用配置的 Embedding Model(application.properties 中配置了阿里百炼的 text-embedding-v3)将文本块转换为向量。
  3. 向量存储: 将文本块及其向量存储到向量数据库中。XiaozhiAgent 配置指向了 contentRetrieverXiaozhiPincone,表明可能使用了 Pinecone 云向量数据库。但也可能存在本地存储的配置(如 EmbeddingStoreConfig 中可能配置了内存或文件系统的向量存储)。
  4. 检索: 当用户提问时,先将问题向量化,然后在向量数据库中查找最相似的文本块。
  5. 增强: 将检索到的文本块内容整合到发送给 LLM 的提示中。
  6. 生成: LLM 基于原始问题和检索到的上下文信息生成回答。

4.4 函数调用实现 (AppointmentTools)

AppointmentTools 类包含了带有 @Tool 注解的方法,这些方法可以被 LLM 调用。

// 示例(基于 LangChain4J 常见用法推测)
public class AppointmentTools {@Autowiredprivate AppointmentService appointmentService;@Tool("查询指定日期和科室的可用预约时段")public List<String> findAvailableSlots(String date, String department) {// 调用 AppointmentService 查询数据库return appointmentService.getAvailableSlots(date, department);}@Tool("为用户创建预约")public String createAppointment(String patientName, String date, String time, String department) {// 调用 AppointmentService 创建预约return appointmentService.createAppointment(patientName, date, time, department);}
}

当用户的提问涉及到查询或创建预约时,LLM 可以识别出意图,并决定调用这些工具方法。LangChain4J 负责处理 LLM 的函数调用请求,执行相应的 Java 方法,并将结果返回给 LLM,LLM 再根据结果生成最终的自然语言回复。

4.5 前端交互 (ChatWindow.vue)

前端的核心是 ChatWindow.vue 组件,它负责:

  1. 展示聊天界面: 显示用户消息和 AI 回复。
  2. 接收用户输入: 提供输入框供用户输入问题。
  3. 调用后端 API: 当用户发送消息时,向后端的 /xiaozhi/chat 发送 POST 请求,包含用户消息和会话 ID (memoryId)。
  4. 处理流式响应: 接收并逐步显示后端返回的流式数据。
  5. 管理会话: 可能生成或管理 memoryId 以维持多轮对话的上下文。

5. 配置与依赖

5.1 关键配置 (application.properties)

  • server.port: 后端服务端口 (8080)。
  • langchain4j.community.dashscope.*: 配置阿里百炼平台的 API Key 和模型名称 (qwen-max, qwen-plus, text-embedding-v3)。API Key 通过环境变量 ${LANGCHAIN4J_KEY} 获取。
  • spring.data.mongodb.uri: MongoDB 连接字符串,用于存储聊天记忆。
  • spring.datasource.*: MySQL 数据库连接信息,用于存储业务数据(如预约)。
  • mybatis-plus.configuration.log-impl: 开启 Mybatis-Plus 的 SQL 日志打印。
  • logging.level.root: 全局日志级别。

5.2 主要依赖 (pom.xml)

  • spring-boot-starter-web: Spring Boot Web 核心。
  • spring-boot-starter-test: 测试框架。
  • knife4j-openapi3-jakarta-spring-boot-starter: API 文档工具。
  • langchain4j-open-ai-spring-boot-starter: LangChain4J OpenAI 兼容接口的 Spring Boot Starter。
  • langchain4j-community-dashscope-spring-boot-starter: LangChain4J 阿里百炼 (DashScope) 的 Spring Boot Starter。
  • langchain4j-spring-boot-starter: LangChain4J 核心功能的 Spring Boot Starter (提供 @AiService 等)。
  • spring-boot-starter-data-mongodb: Spring Data MongoDB 支持。
  • mysql-connector-j: MySQL JDBC 驱动。
  • mybatis-plus-spring-boot3-starter: Mybatis-Plus 集成。
  • langchain4j-document-parser-apache-pdfbox: LangChain4J PDF 文档解析器。
  • langchain4j-easy-rag: (可能用于简化 RAG 配置,但核心 RAG 依赖于 core 和 embedding store)
  • langchain4j-pinecone: LangChain4J Pinecone 向量数据库集成。
  • spring-boot-starter-webflux, langchain4j-reactor: 支持响应式编程和流式输出。

6. 总结

LangChain4J-XiaozhiAI 是一个功能相对完善的 AI 助手演示项目,有效地展示了如何利用 LangChain4J 框架在 Java (Spring Boot) 环境下构建集成 LLM 的应用。它涵盖了 LangChain4J 的多项核心功能,包括:

  • 多模型支持: 通过配置文件灵活接入不同的 LLM(阿里百炼 Qwen, DeepSeek 等)。
  • AI 服务抽象: 使用 @AiService 简化了与 LLM 的交互逻辑。
  • 流式输出: 提供了流畅的实时聊天体验。
  • 持久化聊天记忆: 利用 MongoDB 存储对话历史,实现上下文感知。
  • 工具调用: 使 LLM 能够与外部系统(通过 Java 代码)交互,执行查询、创建预约等操作。
  • 检索增强生成 (RAG): 通过集成向量数据库和本地知识文件,使 LLM 能够基于特定领域的知识回答问题。

GitHub 链接

该项目为学习和实践如何在 Java 生态中应用大模型技术提供了一个很好的起点和参考案例,特别是在医疗等需要结合特定知识和工具的领域。

相关文章:

LangChain4J-XiaozhiAI 项目分析报告

LangChain4J-XiaozhiAI 项目分析报告 GitHub 链接 1. 项目概述 本项目名为 “硅谷小智&#xff08;医疗版&#xff09;”&#xff0c;是一个基于 Java 技术栈和 LangChain4J 框架构建的 AI 聊天助手应用。其核心目标是利用大型语言模型&#xff08;LLM&#xff09;的能力&am…...

学习spring boot-拦截器Interceptor,过滤器Filter

目录 拦截器Interceptor 过滤器Filter 关于过滤器的前置知识可以参考&#xff1a; 过滤器在springboot项目的应用 一&#xff0c;使用WebfilterServletComponentScan 注解 1 创建过滤器类实现Filter接口 2 在启动类中添加 ServletComponentScan 注解 二&#xff0c;创建…...

【程序+论文】大规模新能源并网下的火电机组深度调峰经济调度

目录 1 主要内容 讲解重点 2 讲解视频及代码 1 主要内容 该视频为《大规模新能源并网下的火电机组深度调峰经济调度》代码讲解内容&#xff0c;该程序有完全对照的论文&#xff0c;以改进IEEE30节点作为研究对象&#xff0c;系统包括5个火电机组和2个新能源机组&#xff0c;…...

【win11 】win11 键盘测试

我的键盘是支持mac和win的&#xff0c;fn tab 就能切换&#xff0c;有可能是用错了模式&#xff0c;导致 我alt a 就会弹出 win11的 wifi 等菜单控制 键盘测试网站 https://keyboard.bmcx.com/ 识别到我按下的是alt...

再识动静态库

动静态库 1 手动制作静态库2 手动调用静态库方式一&#xff1a;&#xff08;安装到系统&#xff09;方式二&#xff1a;&#xff08;和源文件一起&#xff09;方式三&#xff1a;&#xff08;使用带路径的库&#xff09; 3 动态库制作与使用方式一&#xff1a;拷贝到系统方式二…...

前端 uni-app 初步使用指南

在数字化浪潮下&#xff0c;实现应用多端适配成为开发者的刚需。uni-app 凭借 “一次编写&#xff0c;多端运行” 的特性&#xff0c;极大提升了开发效率&#xff0c;成为前端开发的热门选择。如果你是首次接触 uni-app&#xff0c;这篇文章将带你开启 uni-app 的使用之旅&…...

尼卡音乐 1.1.1 | 免费畅听全网音乐,支持无损下载,无广告无需注册登录

尼卡音乐是一款可以免费畅听全网音乐的应用程序&#xff0c;支持免费下载无损高品质音源&#xff0c;并且没有任何广告&#xff0c;无需注册登录。用户可以轻松搜索全网无损音质音源&#xff0c;并可将其他音乐APP的歌单导入&#xff0c;让音乐陪你开心一整天。该应用彻底拒绝臃…...

33.降速提高EMC能力

降速提高EMC能力 1. 电磁兼容问题的错误累积效应2. 降速减少累积效应的机理分析 1. 电磁兼容问题的错误累积效应 2. 降速减少累积效应的机理分析 降速之后&#xff0c;信号的波形更完整&#xff0c;容错空间更大&#xff1b;另外边沿变缓&#xff0c;对外干扰也会减小。...

【赵渝强老师】TiDB的MVCC机制

TiDB是一款开源的国产分布式关系型数据库。TiKV是TiDB的行存引擎&#xff0c;它支持多版本并发控制(Multi-Version Concurrency Control,MVCC)。假设有这样一种场景&#xff1a;某客户端A在写一个Key&#xff0c;另一个客户端B同时在对这个Key进行读操作。如果没有数据的多版本…...

数电填空题整理(适用期末考试)

在下列门电路中&#xff0c;OC门能实现“线与”逻辑功能&#xff1b; 三态门能用于总线结构的数 据传输&#xff1b;传输门 能实现模拟信号的双向传输。 并联比较型A/D转换器的转换速度最快&#xff0c; 双积分型A/D转换器的稳定性和抗干扰能力最好 TTL与非门多余的输入端应该…...

node核心学习

目录 1-1node概述 1-2全局对象 1-3Node的模块化细节 1-4Node中的ES模块化 1-5基本内置模块 OS模块&#xff1a; path模块&#xff1a; url模块&#xff1a; util模块&#xff1a; 1-6文件IO I/O&#xff1a;input output fs模块的方法 代码示例&#xff1a; 练习…...

基于 PyQt 的YOLO目标检测可视化界面+ nuitka 打包

在人工智能和计算机视觉领域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;是一种广泛使用的实时目标检测算法。为了直观地展示YOLO算法的检测效果&#xff0c;我们使用Pyqt框架进行检测结果的可视化&#xff0c;同时为了使其能够脱离Python环境&#xff0c;我们…...

234树和红黑树

首先&#xff0c;把目光聚集在234树中 以下是234的三种节点&#xff08;可以有更多这里使用以下的三个&#xff09;&#xff1a; 右侧是节点转换成红黑树节点的样子。 接下来会用以下序列进行1234树的搭建和红黑树的搭建&#xff1a; 首先是234树 2-3-4树&#xff08;234树&…...

GenCLS++:通过联合优化SFT和RL,提升生成式大模型的分类效果

摘要&#xff1a;作为机器学习中的一个基础任务&#xff0c;文本分类在许多领域都发挥着至关重要的作用。随着大型语言模型&#xff08;LLMs&#xff09;的快速扩展&#xff0c;特别是通过强化学习&#xff08;RL&#xff09;的推动&#xff0c;对于更强大的分类器的需求也在不…...

maven坐标导入jar包时剔除不需要的内容

maven坐标导入jar包时剔除不需要的内容 问题描述解决方案 问题描述 maven坐标导入jar包时剔除不需要的内容 解决方案 Spring Boot 默认使用 Logback&#xff0c;需在 pom.xml 中排除其依赖&#xff1a; <dependency><groupId>org.springframework.boot</gro…...

Oracle OCP认证考试考点详解083系列06

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 26. 第26题&#xff1a; 题目 解析及答案&#xff1a; 关于块介质恢复&#xff0c;以下哪三项是正确的&#xff1f; A) 需恢复一个或多个…...

llfc项目分布式服务笔记

一、系统整体架构流程图(简明版) 复制代码 +---------------+ +------------------+ +----------------+ | 客户端 (Client) |--------->| GateServer |----------| StatusServer |<--+ +---------------+ +--------------…...

“链式前向星”等三种存图方式分别输出“无向无权图”的“DFS序列”

【DFS序列】 DFS序列&#xff08;深度优先搜索序列&#xff09;&#xff0c;是树或图结构在深度优先遍历过程中生成的节点访问顺序记录。 下面三段代码&#xff0c;分别采用链式前向星、邻接表、邻接矩阵存图&#xff0c;输出图的“DFS序列”。 【DFS&#xff1a;链式前向星】…...

Lesson 16 A polite request

Lesson 16 A polite request 词汇 park n. 公园&#xff0c;停车场&#xff0c;庄园 v. 停车&#xff0c;泊车 例句&#xff1a;让我来停车。    Let me park. 相关&#xff1a;spot n. 车位 区别&#xff1a;garden n. 花园 [小&#xff0c;私家的] 例句&#xff1a;我们…...

【IP101】边缘检测技术全解析:从Sobel到Canny的进阶之路

&#x1f31f; 边缘检测的艺术 &#x1f3a8; 在图像处理的世界里&#xff0c;边缘检测就像是给图像画眉毛 —— 没有它&#xff0c;你的图像就像一只没有轮廓的熊猫&#x1f43c;。让我们一起来探索这个神奇的"美妆"技术&#xff01; &#x1f4da; 目录 基础概念 …...

Nx 智能分发机制(Nx Agents + Nx Cloud)

Nx 智能分发机制&#xff08;Nx Agents  Nx Cloud&#xff09; 阶段关键做的事作用1. 收集信息- Project Graph&#xff1a;解析整个 workspace 依赖关系&#xff08;谁依赖谁&#xff09;- 历史统计&#xff1a;每次 CI 结束后将每个任务的实际用时与缓存命中情况上传…...

《“昊龙一号”:开启中国航天货运新时代》

中国航天新力量:昊龙一号登场 在 2024 年 10 月 29 日上午,神舟十九号载人飞行任务新闻发布会如一颗重磅炸弹,在航天领域激起千层浪。发布会上,一系列关乎中国载人航天工程未来走向的重要信息被披露,其中,“昊龙一号” 货运航天飞机入围空间站低成本货物运输系统总体方案…...

C++ 多态:原理、实现与应用

目录 引言 一、多态的概念 二、多态的定义及实现 &#xff08;一&#xff09;构成条件 &#xff08;二&#xff09;虚函数的深入理解 &#xff08;三&#xff09;虚函数的重写&#xff08;覆盖&#xff09; 三、抽象类 &#xff08;一&#xff09;概念 &#xff08;二&…...

多模态大语言模型arxiv论文略读(五十八)

How Does the Textual Information Affect the Retrieval of Multimodal In-Context Learning? ➡️ 论文标题&#xff1a;How Does the Textual Information Affect the Retrieval of Multimodal In-Context Learning? ➡️ 论文作者&#xff1a;Yang Luo, Zangwei Zheng, …...

TS 枚举类型

枚举 参数为枚举成员中的一个 数字枚举 字符串枚举 枚举特点 、 缺点&#xff1a;转为JS代码时会编译成JS代码&#xff0c;增大开销...

Python容器与循环:数据处理的双剑合璧

Python作为一门简洁强大的编程语言&#xff0c;其容器类型和循环结构的完美结合为数据处理提供了极大的便利。本文将带领初学者深入理解Python中的四大容器&#xff08;列表、元组、字典、集合&#xff09;以及它们与循环结构的配合使用&#xff0c;助你掌握数据处理的核心技能…...

ST-LINKV2仿真器下载

ST-LINKV2仿真器 — 正点原子资料下载中心 1.0.0 文档...

RAGFlow 接入企业微信应用实现原理剖析与最佳实践

背景 近期有医美行业客户咨询我们智能客服产品&#xff0c;期望将自己企业的产品、服务以及报价信息以企微应用的方式给到客户进行体验互动&#xff0c;提升企业运营效率。关于企业微信对接&#xff0c;我们分享下最佳实践&#xff0c;抛砖引玉。效果图如下&#xff1a; 这里也…...

大模型实践:图文解锁Ollama在个人笔记本上部署llm

使用在线模型服务时&#xff0c;我们常常需要支付API调用费用&#xff0c;这对于个人开发者或小型组织来说可能是一笔不小的开支。那么&#xff0c;有没有方法可以在本地免费使用这些强大的模型呢&#xff1f;答案是肯定的——Ollama就是这样一个工具。 当然如果是比较大的组织…...

如何提高情商?(优化版)

引言 提高情商&#xff08;EQ&#xff09;是一个需要长期练习和自我反思的过程&#xff0c;核心在于理解自己、管理情绪、共情他人并有效沟通。以下是一些具体且可操作的方法&#xff0c;结合理论和实际场景&#xff0c;帮助你逐步提升&#xff1a; 一、核心方法&#xff1a;…...

学习黑客Linux权限

在 Linux 的王国里&#xff0c;“权限”就是装备与技能加成&#xff1a;决定谁能拔剑&#xff08;读 r&#xff09;、挥剑&#xff08;写 w&#xff09;、进入房间&#xff08;执行 x&#xff09;。本文用“闯关升级”视角&#xff0c;把常见 rwx、八进制数字、SUID/SGID/Stick…...

信息系统监理师第二版教材模拟题第二组(含解析)

信息系统监理师模拟题第二组(30题) 监理理论与法规 根据《信息系统工程监理暂行规定》,监理单位应当独立于( ) A. 建设单位和承建单位 B. 政府监管部门 C. 行业组织 D. 最终用户答案:A 解析:监理单位应当保持独立性,不得与建设单位和承建单位有隶属关系或其他利害关系…...

C与指针——输入输出

错误定位 当一个库函数出错时&#xff0c;errno会被重置 perror(const char* s);\\输出s: errno 对应的错误信息 \\如果单独想要错误信息可以 char* e strerror(errno);\\系统错误码转换为对应的错误信息字符串输出缓冲区 一般输出缓冲区满的时候才刷新&#xff0c;也就是…...

RR(Repeatable Read)级别如何防止幻读

在 MySQL 数据库事务隔离级别中&#xff0c;RR&#xff08;可重复读&#xff09; 通过 MVCC&#xff08;多版本并发控制&#xff09; 和 锁机制 的组合策略来避免幻读问题。 一、MVCC机制&#xff1a;快照读与版本控制 快照读&#xff08;Snapshot Read&#xff09; 每个事务启…...

Python之学习笔记(六)

文章目录 1. 字典&#xff08;Dictionary&#xff09;2. 集合&#xff08;Set&#xff09;3. 字典 vs 集合4. 应用场景5. 注意事项 Python中的字典&#xff08; dict&#xff09;和集合&#xff08; set&#xff09;是两种高效且常用的数据结构&#xff0c;适用于不同的场景。…...

Easy云盘总结篇-文件上传02

说在前面&#xff1a;此项目是跟着B站一位大佬写的&#xff0c;不分享源码&#xff0c;支持项目付费 文件预览 主要分视频和其他文件预览&#xff0c;但实现逻辑相同&#xff0c;只是请求路径有区别。 这段逻辑&#xff1a; 拿视频预览举例&#xff1a; 视频开始时&#xff…...

window-docker的容器使用宿主机音频设备

文章目录 前言操作配置 前言 你有没有遇到过这种情况&#xff1f; 你兴冲冲地在Windows上用Docker搭了个语音识别项目&#xff0c;准备让容器高歌一曲&#xff0c;或者至少"Hey Docker"一下。结果——静音。 Docker Desktop一脸无辜&#xff1a;“亲&#xff0c;默…...

NaVILA: Legged Robot Vision-Language-ActionModel for Navigation

摘要 本文旨在解决基于视觉与语言导航&#xff08;VLN&#xff09;在四足机器人上的实现问题。该任务不仅为人类提供了一种灵活的指令方式&#xff0c;还使机器人能够在更具挑战性和杂乱的场景中导航。然而&#xff0c;将人类自然语言指令转换为低层次的腿部关节控制指令并非易…...

LeetCode 2071 你可以安排的最多任务数目 题解(附带自己的错误做题思路 过了25/49)

示例 输入&#xff1a;tasks [3,2,1], workers [0,3,3], pills 1, strength 1 输出&#xff1a;3 解释&#xff1a; 我们可以按照如下方案安排药丸&#xff1a; - 给 0 号工人药丸。 - 0 号工人完成任务 2&#xff08;0 1 > 1&#xff09; - 1 号工人完成任务 1&#…...

高翔《视觉SLAM十四讲》中第13讲,单目稠密重建中的RMODE数据集

高翔《视觉SLAM十四讲》中第13讲&#xff0c;单目稠密重建&#xff0c;中的RMODE数据集&#xff0c; 原作者苏黎世大学slam小组提供&#xff0c;但是网址已失效 下载方式&#xff1a; 1 https://vj6cqktnxq.feishu.cn/wiki/KBqtwD6XJio3Rmkm2FkckMY8nPg 2 参考地址&#xff1a…...

PyTorch_张量形状操作

搭建模型时&#xff0c;数据都是基于张量形式的表示&#xff0c;网络层与层之间很多都是以不同的shape的方式进行表现和运算。 对张量形状的操作&#xff0c;以便能够更好处理网络各层之间的数据连接。 reshape 函数的用法 reshape 函数可以再保证张量数据不变的前提下改变数…...

【浅尝Java】变量与数据类型(含隐式类型转换、强制类型转换、整型与字符串互相转换等)

&#x1f35e;自我激励&#xff1a;每天努力一点点&#xff0c;技术变化看得见 文章目录 字面常量数据类型变量变量概念语法格式整型变量字节型变量&#xff08;byte&#xff09;短整型变量&#xff08;short&#xff09;整型变量&#xff08;int&#xff09;长整型&#xff08…...

Ubuntu环境下使用uWSGI服务器【以flask应用部署为例】

0、前置内容说明 首先要知道WSGI是什么&#xff0c;关于WSGI服务器的介绍看这篇&#xff1a;WSGI&#xff08;Web Server Gateway Interface&#xff09;服务器 由于从Python 3.11开始限制了在系统级 Python 环境中使用 pip 安装第三方包&#xff0c;以避免与系统包管理器&am…...

GCC 使用指南

安装 GCC Ubuntu/Debian: sudo apt update && sudo apt install gcc gCentOS/RHEL: sudo yum install gcc gcc-cmacOS (通过 Homebrew): brew install gcc基本用法 编译 C 程序 gcc hello.c -o hello # 编译 hello.c&#xff0c;生成可执行文件 hello ./hello …...

虚函数 vs 纯虚函数 vs 静态函数(C++)

&#x1f9e9; 一图看懂&#xff1a;虚函数 vs 纯虚函数 特性虚函数&#xff08;Virtual&#xff09;纯虚函数&#xff08;Pure Virtual&#xff09;语法virtual void foo();virtual void foo() 0;是否必须实现✅ 必须在类中实现❌ 不在基类实现&#xff0c;派生类必须实现是…...

CF1000E We Need More Bosses

CF1000E We Need More Bosses 题目描述 题目大意&#xff1a; 给定一个 n n n 个点 m m m 条边的无向图&#xff0c;保证图连通。找到两个点 s , t s,t s,t&#xff0c;使得 s s s到 t t t必须经过的边最多&#xff08;一条边无论走哪条路线都经过ta&#xff0c;这条边就是…...

Python:Seaborn 美化图表的技术指南

🎨 1、简述 Seaborn 是建立在 Matplotlib 基础上的高级可视化库,提供了更美观、更简洁的数据统计图表。本文将带你深入了解 Seaborn 的强大功能,并通过多个实践案例掌握使用技巧。 2、Seaborn 1️⃣ 什么是 Seaborn? Seaborn 是一个基于 matplotlib 构建的 Python 可视…...

go实现循环链表

需求 实现循环链表的节点生成、顺序遍历、指定删除。 实现 package mainimport ("fmt" )type zodiac_sign struct {number intdizhi stringanimal stringyear intnext *zodiac_sign }// 添加 // func add_node_by_order(previous_node zodiac_sign, current_…...

QT | 常用控件

前言 &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 —…...

EasyExcel使用总结

EasyExcel 文章目录 EasyExcel1、导入1.1、基本方式导入1.导入依赖2. 加载源文件基本语法 3. 读取数据行4. 读取结果 1.2、模型映射导入1.定义实体映射类2. 操作读取基本语法 3. 读取数据行4. 读取结果 1.3、导入类型转换器语法 1.4、导入监听器基本语法&#xff1a; 1.5、多行…...