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

Datawhale 5月llm-universe 第4次笔记

第四章 构建RAG应用

envs

在 Conda 中,envs 目录是用来存放虚拟环境的地方。

也就是说,你在运行:

onda create -n llm-universe python=3.10 

时,Conda 就会在这个路径下创建一个新的文件夹:

makefile

D:\Users\app\miniconda3\envs\llm-universe\

这个文件夹就是你新建的虚拟环境,里面有你自己装的 Python、pip 包等。每个环境都是互相隔离的,不会影响系统 Python 或其他环境。


📂 路径拆解说明:

复制编辑

D:\Users\app\miniconda3\envs\llm-universe\python.exe ↑ ↑ ↑ │ │ └─ llm-universe 环境的名字 │ └─ miniconda 安装目录 └─ 当前登录的 Windows 用户名 app


💡 为什么要用虚拟环境(envs)?

  • 防止包版本冲突(比如一个项目需要 transformers 4.38,另一个用 4.12

  • 安全隔离,不影响系统级 Python

  • 项目切换更方便(用 conda activate xxx 一秒切换)


🧠 你可以通过这些命令来操作环境:

  • 查看所有环境:

    bashconda env list 
  • 创建新环境:

    bashconda create -n new-env-name python=3.9 
  • 删除环境:

    bashconda remove -n env-name --all 

所以 envs 文件夹就像是你的“环境仓库”,你想建多少个环境都可以,互不干扰。

使用 LangChain 调用智谱 GLM

加载环境变量,初始化 ZhipuaiLLM 模型

from zhipuai_llm import ZhipuaiLLM
from dotenv import find_dotenv, load_dotenv
import os# 加载 .env 文件中的环境变量
_ = load_dotenv(find_dotenv())# 获取环境变量中的 API_KEY
api_key = os.environ["ZHIPUAI_API_KEY"]# 初始化 ZhipuaiLLM 模型
zhipuai_model = ZhipuaiLLM(model_name="glm-4-plus",temperature=0.1,api_key=api_key
)# 调用模型进行自我介绍
response = zhipuai_model.invoke("你好,请你自我介绍一下!")# 打印模型的响应
print(response)

结果如下:

content='你好!我是人工智能助手智谱清言(ChatGLM),是基于智谱 AI 公司于 2024 年训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。' additional_kwargs={} response_metadata={'time_in_seconds': 2.059} id='run--84179bfb-0d8c-4e0b-a813-2d922aa5d4c4-0' usage_metadata={'input_tokens': 13, 'output_tokens': 42, 'total_tokens': 55}

加载向量数据库

import sys
sys.path.append("../C3 搭建知识库")
from zhipuai_embedding import ZhipuAIEmbeddings
from langchain_chroma import Chroma
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from dotenv import load_dotenv, find_dotenv
import os# 加载环境变量
_ = load_dotenv(find_dotenv())
zhipuai_api_key = os.environ["ZHIPUAI_API_KEY"]# 初始化 Embedding 模型
embedding = ZhipuAIEmbeddings()# 向量数据库路径
persist_directory = os.path.normpath("./data_base/vector_db/chroma")# 创建目录(如果不存在)
if not os.path.exists(persist_directory):os.makedirs(persist_directory)print(f"创建目录:{persist_directory}")# 检查数据库是否为空
vectordb = Chroma(persist_directory=persist_directory,embedding_function=embedding
)
print(f"向量库中存储的数量:{vectordb._collection.count()}")# 如果数据库为空,重新构建
if vectordb._collection.count() == 0:print("数据库为空,重新构建...")# 知识库文档路径documents_path = os.path.normpath("./data_base/knowledge_db")if not os.path.exists(documents_path):raise ValueError(f"文档路径 {documents_path} 不存在,请检查!")docs = []for file in os.listdir(documents_path):if file.endswith(".txt"):loader = TextLoader(os.path.join(documents_path, file), encoding='utf-8')docs.extend(loader.load())if not docs:raise ValueError(f"未找到任何 .txt 文档在 {documents_path}!")# 文档切分text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=200)splits = text_splitter.split_documents(docs)# 存储到向量数据库vectordb = Chroma.from_documents(documents=splits,embedding=embedding,persist_directory=persist_directory)print(f"重新构建后向量库中存储的数量:{vectordb._collection.count()}")

结果如下:

D:\Projects\llm-universe\try.py:5: LangChainDeprecationWarning: Importing TextLoader from langchain.document_loaders is deprecated. Please replace deprecated imports:

>> from langchain.document_loaders import TextLoader

with new imports of:

>> from langchain_community.document_loaders import TextLoader
You can use the langchain cli to **automatically** upgrade many imports. Please see documentation here <https://python.langchain.com/v0.2/docs/versions/v0_2/>
  from langchain.document_loaders import TextLoader
向量库中存储的数量:29

(llm-universe) D:\Projects\llm-universe>python try2.py
向量库中存储的数量:29
检索到的内容数:3
检索到的第0个内容: 
 review for a blender
-----------------------------------------------------
检索到的第1个内容:
 review for an electric toothbrush
-----------------------------------------------------
检索到的第2个内容:
 每一个元素的类型:

该文档的描述性数据:

查看该文档的内容: 第四章 文本概括

在繁忙的信息时代,小明是一名热心的开发者,面临着海量的文本信息处理的挑战。他需要通过研究无数的文献资料来为他的项目找到关键的信息,但是时间却远远不够。在他焦头烂额之际,他发现了大型语 
言模型(LLM)的文本摘要功能。

这个功能对小明来说如同灯塔一样,照亮了他处理信息海洋的道路。LLM 的强大能力在于它可以将复杂的文本信息简化,提炼出关键的观点,这对于他来说无疑是巨大的帮助。他不再需要花费大量的时间去阅 
读所有的文档,只需要用 LLM 将它们概括,就可以快速获取到他所需要的信息。

通过编程调用 AP I接口,小明成功实现了这个文本摘要的功能。他感叹道:“这简直就像一道魔法,将无尽的信息海洋变成了清晰的信息源泉。”小明的经历,展现了LLM文本摘要功能的巨大优势:节省时间, 
提高效率,以及精准获取信息。这就是我们本章要介绍的内容,让我们一起来探索如何利用编程和调用API接口,掌握这个强大的工具。

一、单一文本概括
-----------------------------------------------------
模型回答:
**回答**:

根据提供的上下文,并没有直接提及“prompt engineering”的定义。不过,基于我的知识,我可以补充说明:

**Prompt Engineering** 是指在设计输入提示(prompt)时,通过精心构造和优化提示内容,以引导大型语言模型(LLM)生成更准确、相关和高质量的输出。它涉及到对提示的结构、内容和语境的细致调整 
,目的是提高模型的响应效果,使其更好地理解和回答用户的问题或完成任务。

在上下文中,小明通过编程调用API接口实现文本摘要功能,虽然未明确提到“prompt engineering”,但可以推测他在设计API调用时的输入提示时,可能应用了这一技术,以确保模型能够准确概括文本信息。 

简而言之,**Prompt Engineering** 是一种优化输入提示的方法,以提升LLM的性能和输出质量。

检索问答链脚本:

import sys
sys.path.append("../C3 搭建知识库")
from zhipuai_llm import ZhipuaiLLM
from zhipuai_embedding import ZhipuAIEmbeddings
from langchain_chroma import Chroma
from langchain.prompts import PromptTemplate
from dotenv import load_dotenv, find_dotenv
import os# 加载环境变量
_ = load_dotenv(find_dotenv())
zhipuai_api_key = os.environ["ZHIPUAI_API_KEY"]# 初始化 Embedding 模型
embedding = ZhipuAIEmbeddings()# 向量数据库路径
persist_directory = os.path.normpath("./data_base/vector_db/chroma")# 检查路径
if not os.path.exists(persist_directory):raise ValueError(f"路径 {persist_directory} 不存在,请检查!")# 加载向量数据库
vectordb = Chroma(persist_directory=persist_directory,embedding_function=embedding
)# 检查向量库是否为空
count = vectordb._collection.count()
print(f"向量库中存储的数量:{count}")
if count == 0:raise ValueError("向量数据库为空,请先运行数据库构建脚本!")# 将向量数据库转换为检索器
retriever = vectordb.as_retriever(search_kwargs={"k": 3})# 定义查询问题
question = "什么是prompt engineering?"# 检索相关文档
docs = retriever.invoke(question)
print(f"检索到的内容数:{len(docs)}")# 打印检索到的文档内容
for i, doc in enumerate(docs):print(f"检索到的第{i}个内容: \n {doc.page_content}", end="\n-----------------------------------------------------\n")# 定义 Prompt 模板
prompt_template = """基于以下上下文回答问题。上下文是检索到的相关文档片段,可能包含噪声,请提取与问题最相关的信息并提供简洁、准确的回答。如果上下文不足以回答问题,可基于你的知识补充,但需说明。**上下文**:
{context}**问题**:
{question}**回答**:
"""
prompt = PromptTemplate(template=prompt_template,input_variables=["context", "question"]
)# 初始化智谱 GLM-4-Plus 模型
llm = ZhipuaiLLM(model_name="glm-4-plus",temperature=0.1,api_key=zhipuai_api_key
)# 构建检索问答链
def answer_question(question, retriever, llm, prompt):try:# 检索相关文档docs = retriever.invoke(question)# 将文档内容拼接为上下文context = "\n".join([doc.page_content for doc in docs]) if docs else "无相关上下文"# 格式化 Promptformatted_prompt = prompt.format(context=context, question=question)# 调用大模型response = llm.invoke(formatted_prompt)return response.contentexcept Exception as e:return f"错误:{e}"# 执行问答
response = answer_question(question, retriever, llm, prompt)
print(f"模型回答:\n{response}")

创建检索链

相关文章:

Datawhale 5月llm-universe 第4次笔记

第四章 构建RAG应用 envs 在 Conda 中&#xff0c;envs 目录是用来存放虚拟环境的地方。 也就是说&#xff0c;你在运行&#xff1a; onda create -n llm-universe python3.10 时&#xff0c;Conda 就会在这个路径下创建一个新的文件夹&#xff1a; makefile D:\Users\…...

滑窗问题实验LC2653(一次遍历维持窗口元素保持排序)

在只有一次遍历&#xff08;即滑窗每向右移动一步只处理新增元素和删除旧元素&#xff09;的前提下&#xff0c;要维持当前窗口内元素的全局“可排序”结构 问题背景&#xff1a;LeetCode 2653 - 滑动子数组的美丽值 题目要求在大小为 k 的滑动窗口中&#xff0c;找到第 x 小…...

PHP学习笔记(八)

返回值 值通过可选参数的返回语句返回 return的使用 函数不能返回多个值&#xff0c;但可以通过返回一个数组来得到类似的效果 函数返回一个引用&#xff0c;必须在函数声明和指派返回值给一个变量时都使用引用运算符&&#xff1a; 可变函数 PHP支持可变函数的概念。意味…...

【react18】在styled-components中引入图片报错

在styled-components项目中&#xff0c;遇到背景图片显示不出来的问题。图片的确是引入正确&#xff0c;但是webpack解析路径是有问题的 效果展示 以下这两种写法都不行&#xff0c;无法生效 export const HeaderNavLeft styled.h1width: 176px;height: 69px;background: ur…...

693SJBH基于.NET的题库管理系统

计算机与信息学院 本科毕业论文&#xff08;设计&#xff09;开题报告 论文中文题目 基于asp.net的题库管理系统设计与实现 论文英文题目 Asp.net based database management system design and Implementation 学生姓名 专业班级 XXXXXX专业08 班 ⒈选题的背景和意…...

centos系统redis-dump安装

1. ​Ruby 环境​ Redis-dump 是一个 Ruby 工具&#xff0c;需先安装 Ruby 和 RubyGems。 安装依赖​&#xff1a; sudo yum install -y curl gpg2 gcc-c patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf aut…...

如何利用 Conda 安装 Pytorch 教程 ?

如何利用 Conda 安装 Pytorch 教程 &#xff1f; 总共分为六步走&#xff1a; &#xff08;1&#xff09;第一步&#xff1a;验证conda 环境是否安装好&#xff1f; 1) conda -V2) conda --version&#xff08;2&#xff09;第二步&#xff1a;查看现有环境 conda env list…...

FPGA降低功耗研究

FPGA降低功耗研究 首先要明白一点&#xff1a;我们的核心目标是在维持性能的前提下&#xff0c;通过工艺、架构、设计方法学和系统级策略的协同优化&#xff0c;降低动态功耗、静态功耗和短路功耗。 本篇文章则是聚焦于 FPGA 设计阶段 的功耗优化&#xff0c;主要从 RTL 代码设…...

软考 系统架构设计师系列知识点之杂项集萃(67)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;66&#xff09; 第108题 RISC&#xff08;精简指令系统计算机&#xff09;的特点不包括&#xff08;&#xff09;。 A. 指令长度固定&#xff0c;指令种类尽量少 B. 寻址方式尽量丰富&#xff…...

第十节第三部分:常见API:传统时间:Date日期类、SimpleDateFormat

Date日期类常用方法 时间格式常用符号 Date日期类总结 为什么用SimpleDateFormat SimpleDateFormat常见方法 SimpleDateFormat解析字符串时间成为日期对象 SimpleDateFormat总结 代码&#xff1a; 代码一&#xff1a;Date日期类 package com.itheima.Time;import java.util.D…...

Python学习Day1:安装

Python的安装 1.安装python 打开python的官网&#xff0c;我们下载3.6.8版本Python Release Python 3.6.8 | Python.org 根据自己的电脑来下载对应的python版本 如图所示&#xff1a; 我已经下载完成&#xff0c;就是这样&#xff0c; 安装页面的第一排是自动安装&#xf…...

Java安全-Servlet内存马

内存马简介 内存马是指将恶意代码注入到内存中&#xff0c;达到无文件落地的效果&#xff0c;使得被攻击方难以察觉。由于是无文件的形式&#xff0c;可以绕过部分基于文件检测的杀软。而 Servlet 内存马是基于 Java Servlet 技术&#xff0c;动态将恶意代码注入到 Tomcat 内存…...

Mariadb cpu 93% 问题

最近项目遇到cpu平均使用率93% 一、登录数据库服务查看具体情况 可以看到服务器负载很高&#xff0c;&#xff0c;mariadb CPU使用已达到接近380.4% &#xff08;因为是8核&#xff0c;所以会有超过100%的情况&#xff09;。如下图&#xff1a; 二、排查是否有耗时较长sql 在…...

LeetCode222_完全二叉树的结点个数

LeetCode222_完全二叉树的结点个数 标签&#xff1a;#位运算 #树 #二分查找 #二叉树Ⅰ. 题目Ⅱ. 示例 0. 个人方法 标签&#xff1a;#位运算 #树 #二分查找 #二叉树 Ⅰ. 题目 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&…...

linux 查看java的安装路径

一、验证Java安装状态 java -version正常安装会显示版本信息&#xff1a; openjdk version "1.8.0_65" OpenJDK Runtime Environment (build 1.8.0_65-b17) OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)二、检查环境变量配置 若已配置JAVA_HOME&#…...

day32 python解释性库PDPbox

目录 一、初识PDPbox官方文档 二、准备鸢尾花数据集和训练模型 三、使用PDPbox进行解释性分析 1. 导入类并实例化对象 2. 调用plot方法绘制图形 3. 探索返回值的意义 四、总结与感悟 作为一名正在学习机器学习的学生&#xff0c;今天要学习一个非常有趣的库——PDPbox&am…...

LVLM-AFAH论文精读

Basic Information 标题&#xff1a;Your Large Vision-Language Model Only Needs A Few Attention Heads For Visual Grounding作者&#xff1a;Seil Kang&#xff0c; Jinyeong Kim&#xff0c; Junhyeok Kim&#xff0c; Seong Jae Hwang机构&#xff1a;Yonsei Universit…...

蓝桥杯3503 更小的数

问题描述 小蓝有一个长度均为 n 且仅由数字字符 0∼9 组成的字符串&#xff0c;下标从 0 到 n−1&#xff0c;你可以将其视作是一个具有 n 位的十进制数字 num&#xff0c;小蓝可以从 num 中选出一段连续的子串并将子串进行反转&#xff0c;最多反转一次。 小蓝想要将选出的子…...

5.21本日总结

一、英语 复习list4list26 二、数学 学完14讲&#xff0c;1000题13讲写完 三、408 学习计网5.3剩余内容 四、总结 高数本月结束知识点学习&#xff0c;15讲知识点与14讲的题目同步进行。408剩余两本书要加快学习进度。 五、明日计划 英语&#xff1a;复习lsit5list25 …...

【25软考网工】第七章(3) UOS Linux防火墙配置和Web应用服务配置

博客主页&#xff1a;christine-rr-CSDN博客 ​​​专栏主页&#xff1a;软考中级网络工程师笔记 ​​​​ 大家好&#xff0c;我是christine-rr !目前《软考中级网络工程师》专栏已经更新三十多篇文章了&#xff0c;每篇笔记都包含详细的知识点&#xff0c;希望能帮助到你&am…...

Python数据分析基础

Python数据分析入门 介绍 在这个教程中&#xff0c;我们将学习如何使用Python来进行基本的数据分析。 安装必要的库 为了开始&#xff0c;你需要安装以下Python库&#xff1a; NumPyPandasMatplotlib 示例代码 import numpy as np import pandas as pd import matplotli…...

spring cloud config更新配置

在开发微服务时&#xff0c;往往需要有开发环境、测试环境和生产环境&#xff0c;手动修改配置环境是一件很麻烦的事情&#xff0c;因此&#xff0c;这里使用spring cloud config管理配置环境。要使用spring cloud config&#xff0c;需要先在GitHub搭建一个仓库。 一、仓库搭…...

小米汽车二期工厂下月将竣工,产能提升助力市场拓展

在新能源汽车市场竞争日益激烈的当下&#xff0c;小米汽车传来重要进展消息。据多方信息显示&#xff0c;小米汽车二期工厂下月即将竣工&#xff0c;这一关键节点的到来&#xff0c;有望为小米汽车的产能提升与市场布局带来重大突破。​ 小米汽车二期工厂位于北京亦庄&#xff…...

【单片机】如何产生负电压?

以下是对知乎文章《单片机中常用的负电压是这样产生的&#xff01;》的解析与总结&#xff0c;结合电路原理、应用场景及讨论要点展开&#xff1a; 一、负电压产生的核心原理 负电压本质是相对于参考地&#xff08;GND&#xff09;的电势差为负值&#xff0c;需通过电源或储能…...

Mcu_Bsdiff_Upgrade

系统架构 概述 MCU BSDiff 升级系统通过使用二进制差分技术&#xff0c;提供了一种在资源受限的微控制器上进行高效固件更新的机制。系统不传输和存储完整的固件映像&#xff0c;而是只处理固件版本之间的差异&#xff0c;从而显著缩小更新包并降低带宽要求。 该架构遵循一个…...

阿里云ecs 8核 16G 内存 装有redis6 分配了3G内存,和2个tomcat 每个tomcat 4G 服务器反应迟钝,如何确认不是redis的问题

我们经常用redis 但遇到tomcat timeout的时候&#xff0c;如何确认不是redis的问题。 不能因为这个再去搞个redis 压力测试。有没有更省劲的方法来确认不是redis的问题 以下是针对 阿里云 ECS&#xff08;8核16G&#xff0c;Redis 6分配3G内存&#xff0c;2个Tomcat各分配4G&a…...

机器学习-KNN算法

1.机器学习概述&#xff08;全部流程&#xff09; 获取数据&#xff1a;from sklearn.datasets import load_wine 数据处理(数据集划分、标准化):from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler 特征工程:from s…...

【数据结构 · 初阶】- 快速排序

目录 一. Hoare 版本 1. 单趟 2. 整体 3. 时间复杂度 4. 优化&#xff08;抢救一下&#xff09; 4.1 随机选 key 4.2 三数取中 二. 挖坑法 格式优化 三. 前后指针&#xff08;最好&#xff09; 四. 小区间优化 五. 改非递归 快速排序是 Hoare 提出的一种基于二叉树…...

HTTPS和HTTP区别

客户端向服务器发送HTTPS请求。服务器响应并发送其数字证书。客户端通过证书的公钥验证数字签名的有效性&#xff0c;如果有效&#xff0c;客户端生成一个随机的对称密钥。客户端使用公钥对这个对称密钥进行加密&#xff0c;然后将加密后的密钥发送给服务器。服务器使用自己的私…...

自动驾驶中的预测控制算法:用 Python 让无人车更智能

自动驾驶中的预测控制算法:用 Python 让无人车更智能 自动驾驶技术近年来取得了令人惊叹的进步,AI 与边缘计算的结合让车辆能够实时感知环境、规划路径并执行驾驶决策。其中,预测控制(Model Predictive Control,MPC) 作为一种先进的控制算法,凭借其对未来驾驶行为的优化…...

分享一些实用的网址

第一个&#xff1a;视频转化为动图 网址&#xff1a;https://www.freeconvert.com/zh/convert/mp4-to-gif 当然还有很多其他的功能&#xff0c;可以按需选择使用。 第二个&#xff1a;ASCII字符串到16进制在线转换工具 网址 &#xff1a;https://coding.tools/cn/ascii-to-…...

打开小程序提示请求失败(小程序页面空白)

1、小程序代码是商城后台下载的还是自己编译的 &#xff08;1&#xff09;要是商城后台下载的&#xff0c;检查设置里面的域名是不是https的 &#xff08;2&#xff09;要是自己编译的&#xff0c;检查app.js里面的接口域名是不是https的&#xff0c;填了以后有没有保存 注&a…...

Taro 安全区域

目录 一、问题描述 二、问题解决 1、顶部刘海区 2、底部小黑条 一、问题描述 安全区域主要是为了避免刘海屏或底部栏遮挡&#xff0c;而造成的不良显示效果。 本次将针对以下两点进行考量&#xff1a; 1、顶部刘海屏区 2、苹果X底部小黑条 二、问题解决 通过Taro.getS…...

DL00988-稀疏增强数据transformer船舶AIS轨迹预测含完整数据集

提升科研效率&#xff0c;精准预测船舶AIS轨迹&#xff01;文末有完整获取方式 作为研究生和科研人员&#xff0c;是否在进行船舶轨迹预测时遇到数据稀疏、轨迹复杂等问题&#xff1f;现在&#xff0c;我们为你提供一款基于稀疏增强数据Transformer的船舶AIS轨迹预测工具&#…...

重写B站(网页、后端、小程序)

1. 网页端 1.1 框架 Vue ElementUI axios 1.2 框架搭建步骤 搭建Vue 1.3 配置文件 main.js import {createApp} from vue import ElementUi from element-plus import element-plus/dist/index.css; import axios from "axios"; import router from…...

SOPHGO算能科技BM1688内存使用与编解码开发指南

1. BM1688内存分配接口详解 1.1 设备内存分配接口区别 BM1688提供了三个主要的设备内存分配接口,它们的主要区别如下: // 基本设备内存分配接口 void* bm_malloc_device_byte(bm_handle_t handle, unsigned int size);// 指定heap区域的设备内存分配 void*</...

如何使用Antv X6使用拖拽布局?

拖拽效果图 拖拽后 布局预览 官方&#xff1a; X6 图编辑引擎 | AntV 安装依赖 # npm npm install antv/x6 --save npm install antv/x6-plugin-dnd --save npm install antv/x6-plugin-export --save需要引入的代码 import { Graph, Shape } from antv/x6; import { Dnd } …...

STM32项目分享:智能家居(机智云)升级版

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; STM32智能家居(机智云)升级版 &#xff08;资料…...

Flask-SQLAlchemy核心概念:模型类与数据库表、类属性与表字段、外键与关系映射

前置阅读&#xff0c;关于Flask-SQLAlchemy支持哪些数据库及基本配置&#xff0c;链接&#xff1a;Flask-SQLAlchemy_数据库配置 摘要 本文以一段典型的 SQLAlchemy 代码示例为引入&#xff0c;阐述以下核心概念&#xff1a; 模型类&#xff08;Model Class&#xff09; ↔ 数…...

算法优选系列(9.BFS 解决拓扑排序)

目录 拓扑排序简介&#xff1a; ​编辑 课程表&#xff08;medium&#xff09;&#xff1a; 课程表II&#xff08;medium&#xff09;: 火星词典&#xff08;hard&#xff09;&#xff1a; 拓扑排序简介&#xff1a; 有向无环图&#xff08;DAG图&#xff09; 如上图每条边…...

DevExpress Blazor中文教程 - 如何用AI聊天组件构建大型语言模型聊天APP?

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验&#xff0c;这个UI自建库提供了一套全面的原生Blazor UI组件&#xff08;包括Pivot Grid、调度程序、图表、数据编辑器和报表等&#xff09;。 AI服务提供各种量身定制的模型来满…...

PHP:经典编程语言在当代Web开发中的新活力

在当今的Web开发领域&#xff0c;新技术和新语言层出不穷&#xff0c;但PHP&#xff08;超文本预处理器&#xff09;作为一门经典且功能强大的编程语言&#xff0c;依然在Web开发中占据着重要地位&#xff0c;并不断展现出新的活力。 PHP的历史与现状 PHP诞生于1994年&#x…...

ToDesk云电脑、并行智算云与顺网云AI支持能力深度实测报告

随着AI技术的迅猛发展&#xff0c;云计算平台已成为突破本地硬件限制、实现高效AI计算的关键基础设施。本报告对ToDesk云电脑、并行智算云和顺网云三大主流云平台进行了全面测评&#xff0c;从硬件配置、AI软件兼容性、性能表现、用户体验及成本效益等维度深入分析其AI支持能力…...

javaweb的拦截功能,自动跳转登录页面

我们开发系统时候&#xff0c;肯定希望用户登录后才能进入主页面去访问其他服务&#xff0c;但要是没有拦截功能的话&#xff0c;他就可以直接通过url访问或者post注入攻击了。 因此我们可以通过在后端添加拦截过滤功能把没登录的用户给拦截下来&#xff0c;让他去先登录&#…...

精益数据分析(75/126):用户反馈的科学解读与试验驱动迭代——Rally的双向验证方法论

精益数据分析&#xff08;75/126&#xff09;&#xff1a;用户反馈的科学解读与试验驱动迭代——Rally的双向验证方法论 在创业的黏性阶段&#xff0c;用户反馈是优化产品的重要依据&#xff0c;但如何避免被表面反馈误导&#xff1f;如何将反馈转化为可落地的迭代策略&#x…...

轻量级高性能Rust HTTP服务器库Hyperlane,助力现代网络服务开发

轻量级高性能Rust HTTP服务器库Hyperlane&#xff0c;助力现代网络服务开发 Hyperlane是一款专为简化网络服务开发而设计的轻量级、高性能Rust HTTP服务器库。它凭借纯Rust和标准库构建&#xff0c;实现了Windows、Linux和macOS全平台兼容&#xff0c;依托Tokio异步运行时&…...

PCB设计实践(二十四)PCB设计时如何避免EMI

PCB设计中避免电磁干扰&#xff08;EMI&#xff09;是一项涉及电路架构、布局布线、材料选择及制造工艺的系统工程。本文从设计原理到工程实践&#xff0c;系统阐述EMI产生机制及综合抑制策略&#xff0c;覆盖高频信号控制、接地优化、屏蔽技术等核心维度&#xff0c;为高密度、…...

VRRP 协议

一、前言 最近被问到一个VRRP的网络协议&#xff0c;一开始我是蒙蔽的状态&#xff0c;至于什么是VRRP&#xff0c;我后面查了一下&#xff0c;因为对于网络这方面我也不是很精通&#xff0c;见谅&#xff01; VRRP&#xff0c;全称叫虚拟路由冗余协议&#xff0c;是我孤陋寡闻…...

年度工作计划总结述职报告PPT模版一组分享

工作计划总结述职报告PPT模版&#xff1a;工作计划述职报告PPT模版https://pan.quark.cn/s/fba40a5e87da 第一套PPT模版是医院年度工作计划的封面页&#xff0c;有蓝橙配色、医院标题、年度工作计划的大字、英文副标题、汇报人信息和右上角的医院logo区域&#xff0c;右侧还有医…...

【容易坑】mybatis中使用if标签比较两个字符串是否相等

资料都来自于网络&#xff0c;这里只是记录一下&#xff0c;仅供参考 现象 上传参数确实为3&#xff0c;但是到了sql中还是2&#xff0c;很纳闷&#xff0c;确定不是上送参数的问题 问题解决 问题的关键点就在于为啥偏偏是2身上&#xff0c;仔细看一下sql语句&#xff0c;这个…...