【LangChain Agent 】详解,构建自主决策的 LLM 应用
🐇明明跟你说过:个人主页
🏅个人专栏:《深度探秘:AI界的007》 🏅
🔖行路有良友,便是天堂🔖
目录
一、引言
1、什么是 Lang Chain
2、什么是 Agent
二、LangChain Agent 的核心概念
1、LangChain Agent 架构
2、Agent 的执行循环(Execution Loop)
三、LangChain Agent 的工具 (Tools)
1、常用工具介绍
2、工具选择策略 (Tool Selection Strategies)
四、LangChain Agent 的类型 (Types)
1、ZeroShotAgent
2、ReAct Agent
3、Conversational Agent
4、Chat Agent / OpenAIFunctionsAgent
5、Plan-and-Execute Agent
一、引言
1、什么是 Lang Chain
LangChain 是一个用于构建基于大语言模型(LLM)应用的强大开发框架,特别适合创建智能问答、聊天机器人、自动化助手等 AI 驱动的应用。
🚀 核心功能
链式组合(C
hain):- 可以将多个模块( 例如:Prompt、模型调用、解析器等)链接在一起,形成一条“处理链”。
上下文记忆(Memory):
- 能保存用户的对话历史,实现连续对话或任务跟踪。
工具集成(Tools):
- 集成搜索引擎、数据库、API 调用等外部工具,让语言模型更具执行力。
Agent(智能体)支持:
- 类似自主 AI 助手,能自己决定何时调用哪个工具或链。
🧩 典型应用场景
-
ChatGPT-like 聊天应用
-
AI 数据分析助手
-
自动问答系统(RAG)
-
文档总结、自动填表、代码生成等
🧱 支持组件
-
LLM:支持 OpenAI, Anthropic, HuggingFace 等
-
文档加载:PDF、HTML、Notion、Markdown 等
-
知识库:支持向量数据库如 FAISS、Pinecone、Chroma 等
-
框架语言:支持 Python 和 JavaScript/TypeScript
2、什么是 Agent
Agent 就是一个有“决策能力”的 LLM 程序,它可以根据当前的任务自动判断该做什么,并调用合适的工具完成任务。
你可以把它理解为:
“一个具备一定智能、自主决策能力的 AI 助手,不止会回答问题,还知道用什么工具去获取答案。”
🧠 Agent 与普通 LLM 的区别?
🧩 Agent 能干什么?
-
调用搜索引擎、数据库、API
比如搜索维基百科、调用企业内部系统、查询 SQL 数据库等。 -
使用工具链完成任务
例如根据你的邮件内容自动安排日程、写日报、翻译并上传到系统等。 -
多步骤任务分解
比如你让它“帮我查一下最近热播的电影,并找个地方订票”,它能拆解成:-
🛒 自动下单订票
-
📅 查你空闲时间
-
🎯 选择其中一个
-
🔍 搜索热播电影
-
🛠️ Agent 的组成(以 LangChain 为例)
在 LangChain 中,Agent 通常包括:
-
LLM:作为大脑,负责理解和生成语言
-
Tools:工具集合,比如搜索、数据库、文件系统、爬虫等
-
Prompt Template:告诉 Agent 怎么推理和调用工具
-
Memory(可选):保持任务上下文或对话历史
二、LangChain Agent 的核心概念
1、LangChain Agent 架构
模块 | 作用 |
---|---|
LLM (Language Model) | 负责自然语言理解与输出,是 Agent 的“智能大脑” |
Prompt Template | Agent 思考流程的模板,比如 ReAct、Plan-and-Execute 等策略 |
Agent Executor | 主体执行流程控制器,协调 LLM 调用工具、判断结束 |
Tool / Tools | 外部工具函数,可以是 API、数据库、搜索引擎、本地函数等 |
Memory(可选) | 会话/任务历史记录,保持上下文连贯性 |
Output Parser | 将 LLM 的输出结构化为可操作的指令(如调用哪个工具) |
Callback Manager(可选) | 日志、追踪、监控工具执行过程的 hook 系统 |
Agent 执行流程(Zero-Shot ReAct)
以 LangChain 默认使用的 zero-shot-react-description
策略为例:
-
用户输入任务:
例:请查一下明天北京天气,并换算成华氏温度
-
Prompt 组合:
LLM 会接收到一串模板:任务描述 + 已执行步骤 + 工具描述 + 思考模版(例如 "Thought: ...")
-
LLM 生成决策:
产生内容如:
Thought: 我需要先搜索北京天气 Action: search Action Input: 北京 明天天气
-
Agent 调用对应 Tool(如 search)
-
获取返回结果并再次交给 LLM
-
LLM 判断是否结束,或者继续调用其他工具
-
输出最终答案给用户
2、Agent 的执行循环(Execution Loop)
LangChain 中的 Agent 执行循环(Execution Loop)是 Agent 能够“自主思考、调用工具、判断是否完成任务”的关键机制。这个循环允许 Agent 持续与 LLM 交互,分阶段完成任务,直到达到最终答案或触发终止条件
🔁 Agent 执行循环流程图:
🧩 执行循环的关键组成
步骤 | 说明 |
---|---|
1️⃣ Thought(思考) | LLM 分析当前问题,判断下一步怎么做 |
2️⃣ Action(行动) | LLM 命令 Agent 去调用某个工具 |
3️⃣ Action Input | 工具的调用参数 |
4️⃣ Observation(观察结果) | 工具返回的执行结果 |
5️⃣ Final Answer | LLM 判断任务已完成,输出最终答案并结束循环 |
✅ 示例 Prompt + LLM 输出片段(ReAct 模式)
Question: 明天上海的天气如何?请用英文回答Thought: 我需要搜索明天上海的天气
Action: search
Action Input: 明天上海天气Observation: 明天上海多云,最高气温22°C,最低气温15°CThought: 我已获取到天气信息
Final Answer: The weather in Shanghai tomorrow will be cloudy with a high of 22°C and a low of 15°C.
- 💡 如果 LLM 没有输出
Final Answer
,Agent 会继续执行下一轮 Prompt 组合并调用 LLM。
🚦 循环的终止条件
Agent 在以下任一条件下终止:
-
输出中包含
Final Answer
-
达到最大循环次数(如 5-10 次)
-
工具调用失败、抛出异常
-
LLM 输出无法解析为 Action(即格式不对)
三、LangChain Agent 的工具 (Tools)
1、常用工具介绍
🛠️ 常见工具介绍(LangChain 官方内置 + 社区流行)
工具名 | 功能 | 应用场景 |
---|---|---|
LLMChecker | 检查自然语言表达中的逻辑或事实错误 | 内容校对、问答验证 |
SerpAPI | 调用 Google 搜索 | 实时查询、信息检索 |
RequestsTool | 使用 HTTP 请求访问网页或 API | REST 接口调用、页面抓取 |
DuckDuckGo Search | 轻量级搜索工具 | 替代 SerpAPI,免密钥 |
Wikipedia | 搜索并获取维基百科内容 | 知识问答、摘要提取 |
Python REPL | 在沙箱中运行 Python 代码 | 数学计算、数据处理 |
WolframAlpha | 调用 Wolfram Alpha 进行高级数学和逻辑推理 | 科学计算、推理任务 |
OpenWeatherMap | 查询天气信息 | 天气类问答 |
Google Calendar | 操作日历:新增/查阅/删除事件 | 智能日程助手 |
Zapier NLA | 连接各种 SaaS 应用(Gmail、Notion、Slack 等) | 企业自动化任务 |
SQL Database Tool | 与数据库连接并执行 SQL 查询 | 数据问答、分析任务 |
Arxiv API Tool | 检索最新科研论文 | 文献助手、学术搜索 |
例:定义一个搜索工具,自动去网页抓取信息
from click import prompt
from langchain.globals import set_verbose, set_debug
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_community.tools.tavily_search import TavilySearchResults# 设置调试和日志级别
set_debug(True)
set_verbose(True)# 加载语言模型 GPT-4
llm = ChatOpenAI(model="gpt-4")# 定义工具集合,这里使用 Tavily 搜索引擎获取相关结果
tools = [TavilySearchResults(max_results=1)]# 构造对话模板
prompt1 = ChatPromptTemplate.from_messages([("system", "你是一位得力的助手"),("placeholder", "{chat_history}"), # 提示占位符,用于记录之前的对话历史("human", "{input}"), # 用户输入("placeholder", "{agent_scratchpad}") # 代理的工作空间占位符(可以自定义)]
)# 创建代理模块并将其与工具结合
agent1 = create_tool_calling_agent(llm, tools, prompt1)# 创建代理执行器
agent_executor = AgentExecutor(agent=agent1, tools=tools)# 执行任务,这里的输入是一个具体的查询问题
agent_executor.invoke({"input": "2024年中国各省GDP排行榜"})
上面的代码执行后,agent会去网页获取GDP排行榜,并将结果反馈回来
✅ 自定义工具(自定义函数)
除了使用内置工具,我们还可以注册自己的函数作为工具供 Agent 使用:
from langchain.tools import Tooldef get_server_status(ip: str) -> str:# 假设调用某个监控接口return f"Server {ip} is online."my_tool = Tool.from_function(func=get_server_status,name="ServerStatusChecker",description="Returns the current server status for a given IP address."
)
将其加入 Agent 工具列表后,LLM 就可以智能调用:
Thought: I need to check if server 10.0.0.1 is up
Action: ServerStatusChecker
Action Input: 10.0.0.1
2、工具选择策略 (Tool Selection Strategies)
在 LangChain 的 Agent 框架中,工具选择策略(Tool Selection Strategies) 是指 Agent 如何在多个工具中智能选择合适的工具以完成任务。合理的选择策略是确保 Agent 准确、高效执行指令的关键。
🧠 工具选择的基本机制
Agent 在执行时会通过语言模型(如 GPT)进行如下思考:
Thought: 我需要从网络获取当前天气信息
Action: OpenWeatherMap
Action Input: "Beijing"
这个选择过程依赖于:
-
工具的描述(description)
-
语言模型的上下文理解能力
-
是否启用了增强策略(如 Routing、ReAct 等)
🧭 常见的工具选择策略
1️⃣ ReAct 模式(Reasoning + Acting)
结合推理与行动,LLM 先进行推理,然后决定是否需要调用工具。
优点:
-
透明、可解释(可查看 Agent 的思路)
-
可链式决策(多个工具连续调用)
2️⃣ Zero-shot Agent
LLM 直接根据描述选择工具,无需预训练示例。
适合工具少、任务简单的场景。
3️⃣ Multi-Tool Routing(多工具路由)
使用分类器/选择器组件,根据用户输入动态“路由”到合适的工具。
如 MultiPromptRouter
、ToolRouterChain
。
适用于:
-
工具较多
-
不同工具负责不同主题/任务
✅ 如何选择工具策略?
场景 | 推荐策略 |
---|---|
工具少、任务直白 | Zero-shot ReAct |
工具多、语义复杂 | Routing + ReAct |
对安全性要求高 | 添加规则/过滤器 |
强调可解释性 | ReAct + Intermediate Steps |
多 Agent 协作 | Planner + Executor 架构 |
四、LangChain Agent 的类型 (Types)
LangChain 的 Agent 提供了多种类型(Types),每种 Agent 都根据任务复杂度、响应方式、工具调用方式等维度进行了不同的设计。选择合适的 Agent 类型是构建智能 Agent 系统的关键一步。
🧠 Agent 类型概览(LangChain Agents Types)
Agent 类型 | 简介 | 适合场景 |
---|---|---|
ZeroShotAgent | 基于工具描述做一次性推理和执行 | 工具少、任务明确 |
ReactAgent | 推理(Reason)+ 行动(Act)结合,多轮推理 | 复杂任务,工具链调用 |
ConversationalAgent | 有记忆的对话型 Agent,适用于多轮交互 | 聊天机器人、助理型应用 |
ChatAgent (OpenAI Functions Agent) | 支持 Function Calling 的聊天模型(如 GPT-4) | 工具多样、接口规范化场景 |
PlanAndExecuteAgent | 拆解复杂任务 → 规划子任务 → 分步执行 | 长任务、多步骤、多工具 |
OpenAIAgent | 使用 OpenAI Function Calling 特性来调用工具 | API 调用标准明确,使用 GPT |
MRKL Agent | Multi-Reasoning with Knowledge & Language,结合工具和知识推理 | 多源信息处理场景 |
1、ZeroShotAgent
-
使用工具的描述,LLM 直接选择合适的工具。
-
无中间推理步骤(即“Zero-Shot”)。
示例:
from langchain.agents import initialize_agent, AgentTypeagent = initialize_agent(tools=[calculator, search],agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,llm=llm
)
2、ReAct Agent
-
推理 + 行动循环,直到找到答案或达到终止条件。
-
每一步 Agent 会给出
Thought -> Action -> Observation
。
适合:
-
多工具协作
-
步骤依赖性强的任务
3、Conversational Agent
-
支持对话历史记忆(Memory),适合长时间互动的场景。
-
可以结合 ChatPromptTemplate 构造上下文。
适用场景:
-
虚拟助手
-
知识问答机器人
4、Chat Agent / OpenAIFunctionsAgent
-
支持 OpenAI 的 Function Calling 能力。
-
工具通过 JSON schema 注册,系统自动格式化调用。
优点:
-
格式明确
-
精度更高
-
强类型输入输出
5、Plan-and-Execute Agent
典型流程:
-
Planner 拆分子任务
-
Executor 顺序执行子任务
适合:
-
自动化操作流程
-
多工具组合任务(如写报告 + 翻译 + 发送邮件)
✅ 如何选择 Agent 类型
条件 | 推荐 Agent 类型 |
---|---|
简单任务,单工具 | ZeroShotAgent |
多工具推理,分步解题 | ReactAgent |
聊天交互,有历史记忆 | ConversationalAgent |
接口规范化场景(GPT4) | ChatAgent / OpenAIFunctionsAgent |
多步骤计划执行 | PlanAndExecuteAgent |
📌 总结
LangChain 的 Agent 架构是高度模块化的。我们可以通过组合不同的 Agent Type + 工具 + 记忆 + 规划器,构建出非常灵活且强大的智能体系统。
💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺
🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!
相关文章:
【LangChain Agent 】详解,构建自主决策的 LLM 应用
🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是 Lang Chain 2、什么是 Agent 二、LangChain …...
Scala基础知识7
一,可变数组和不可变数组的转换方法: 不可变数组转换为可变数组使用 toBuffer 函数. 可变数组转换为不可变数组使用 toArray 函数。 转换过程中原始数组不会发生变化,而是返回一个新的数组。 二,多维数组 使用 Array of 函数创建多维数组&am…...
vmware、centos: 快照、redis集群克隆、启动异常
问题描述 提示:这里描述项目中遇到的问题: 启动虚拟机报错: 指定的虚拟磁盘需要进行修复 打不开磁盘“D:\Virtual Machines\CentOS 7 64 位\CentOS 7 64 位-000001.vmdk”或它所依赖的某个快照磁盘。 模块“Disk”启动失败。 未能启动虚拟机…...
visual studio断点无法进入
问题背景: 使用VSQt进行编码,新增函数处断点无法进入。 问题排查 查看moc文件,汇编代码以及设置调试选项均不生效。 原因分析 之前无意间进行了排版优化,导致新增的代码未正常编译进去,通过“文件-> 高级保存选…...
CNVD-2025-06046:Google Chrome沙箱逃逸漏洞大揭秘与防护指南
CNVD-2025-06046:Google Chrome沙箱逃逸漏洞大揭秘与防护指南 前言:浏览器界的“越狱”事件 嘿,小伙伴们!今天咱们要聊的不是什么好莱坞大片,而是一出在浏览器世界里真实上演的“越狱”大戏!你没听错&…...
androd的XML页面 跳转 Compose Activity 卡顿问题
解决 XML 点击跳转到 Compose Activity 卡顿问题 当从 XML 布局的 Activity 跳转到 Compose Activity 时出现卡顿现象,这通常是由以下几个原因导致的: 可能的原因及解决方案 1. Compose 首次初始化开销 问题:Compose 框架首次初始化需要时…...
Springboot同时支持不同的数据库,Oracle,Postgresql
关键字 Java,Springboot,Vscode,支持多种数据库 背景环境 我在实际项目开发工程中遇到这样一个问题,用户 A 使用 Oracle 数据库,用户 B 使用 Postgresql 数据库,但是用户 AB 都使用我们的项目。所以项目…...
【计网】TCP协议的拥塞控制与流量控制
拥塞控制与流量控制的区别 流量控制 流量控制主要是控制端到端(发送端和接收端)之间的数据传输量,是局部的机制。 目的:防止发送方发送数据过快导致接收方来不及处理实现方式:通过滑动窗口机制,接收方通…...
Redis - 字典(Hash)结构和 rehash 机制
字典结构 Redis中的字典由dict.h/dict结构表示: typedef struct dict ( //类型特定函数dictType *type;//私有数据 void "privdata;//哈希表 dictht ht[2];//rehash索引 //当rehash不在进行时,值为-1 in trehashidx; } dict; Redis字典所使用的哈希表由dict.h/dictht 结…...
Redis 与 MongoDB 对比分析
Redis 与 MongoDB 对比分析 1. 核心定位 Redis:内存键值数据库,侧重高性能读写和低延迟,常用于缓存、实时分析、消息队列等场景。MongoDB:分布式文档型数据库,侧重灵活的数据模型和大规模数据存储,支持复…...
【愚公系列】《高效使用DeepSeek》058-选题策划
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...
解决 Lettuce 在 Redis 集群模式下的故障转移问题
引言 在高可用系统中,故障转移是确保服务不中断的重要机制。当我们使用 Lettuce 作为 Redis 的 Java 客户端时,如何高效地处理故障转移成为一项关键任务。本篇文章将探讨如何在 Redis 集群模式下配置 Lettuce 以优化故障转移。 背景 在初期设置 Lettu…...
Vim搜索和替换
模式 命令模式 操作过程 键入/开始搜索,找到想要搜索的内容后直接回车,此时光标会从搜索框回到编辑器中。 之后可以 使用小写n跳到下一个符合条件的内容,使用大写N跳到上一个搜索的内容。也可以直接使用上下左右按钮调整光标位置。...
【探商宝】 Llama 4--技术突破与争议并存的开源多模态
核心亮点 混合专家架构(MoE)的全面应用 Llama 4 是 Meta 首个全系列采用 MoE 架构 的模型,通过稀疏激活机制显著提升效率。例如: Llama 4 Scout(中杯):16 位专家,17B 活跃参数&#…...
可发1区的超级创新思路(python 实现):一种轻量化的动态稀疏门控网络
首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 一、应用领域 视频异常检测、生成视频检测。 二、模型解析 该模型由1.关键帧动态选择机制、2.关键帧动态选择机制以及3.关键帧动态选择机制三大核心组件构成,形成端到端的视频异常…...
flink cdc的source数据流如何配置事件时间,如何设置时间语义,分配时间戳并生成水位线
在 Flink CDC 中为 Source 数据流配置事件时间需要结合时间语义设置、时间戳分配和水位线生成三个核心步骤。以下是具体配置方法及注意事项: 1. 设置时间语义 Flink 默认使用处理时间(Processing Time),需显式指定事件时间语义&a…...
Vue3:初识Vue,Vite服务器别名及其代理配置
一、创建一个Vue3项目 创建Vue3项目默认使用Vite作为现代的构建工具,以下指令本质也是通过下载create-vue来构建项目。 基于NodeJs版本大于等于18.3,使用命令行进行操作。 1、命令执行 npm create vuelatest输入项目名称 2、选择附加功能 选择要包含的功…...
医疗场景与事件驱动的高匹配颗粒度医疗智能体研发方向探析(代码版)
结合技术实现、应用场景与挑战展开分析: 一、医疗场景驱动的智能体核心方向 全场景覆盖的诊疗辅助医疗智能体系统编程方案 1.1、技术架构设计 #mermaid-svg-OKB0oAt38jXWNClG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#m…...
HTML5 浏览器兼容性:让旧浏览器也能拥抱 HTML5
在前端开发领域,HTML5 带来了一系列令人兴奋的新特性和功能,极大地提升了用户体验和开发效率。然而,由于互联网用户使用的浏览器版本千差万别,部分旧版本浏览器并不支持 HTML5,这给开发者带来了兼容性方面的挑战。不过…...
Kubernetes 集群搭建(三):使用dashboard用户界面(需要访问外网获取yaml)
(一)简介 K8s Dashboard是Kubernetes提供的一种基于Web的用户界面工具,用于可视化地管理和监控Kubernetes集群 主要功能: 资源查看与管理: 查看Kubernetes集群中的各种资源,如节点、Pod、服务、部署等。 对…...
【图像处理基石】什么是ISP色彩管理?
在ISP(Image Signal Processor,图像信号处理器)管线中,色彩管理是图像处理流程的核心环节,主要负责从传感器原始数据(RAW)到最终输出图像(如YUV、RGB或JPEG)的色彩转换、…...
金融维度下的公链价值重构:重塑财富新秩序
公链的引言: 众人对 Crypto、Token 的探讨热度居高不下。在此大背景下,我打算另辟蹊径,从金融维度重新剖析区块链分布式账本。那么,我们究竟该如何正确认知它?又该如何搭建起一套从金融视角出发的分析框架呢࿱…...
LeetCode算法题(Go语言实现)_34
题目 考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true&…...
# 项目部署指南:Flask、Gradio与Docker实现流程
Python项目部署指南:Flask、Gradio与Docker实践 1. 引言 在机器学习和Web开发中,将模型或应用部署为在线服务是关键一步。本文将介绍如何使用 Flask 和 Gradio 快速构建前端界面,并通过 Docker 容器化实现高效部署,涵盖完整流程图…...
2022第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(题解解析)
记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 1、九进制转十进制-(解析)-简单的进制转化问题😄 2、顺子日期-(解析)-考察日期 3…...
UML之序列图的参与者与生命线
序列图是建模过程中必选的一种描述行为的手段,它展示在某些有用的行为中元素之间的消息交换和相互作用。交互是构成行为的一个单元;这些元素必须是可连接元素,通常将这些可连接元素称为交互中的参与者(Participants)。…...
基于Python Flask快速构建网络安全工具资源库的Web应用实践
引言 在网络安全领域,信息收集(OSINT)是渗透测试、漏洞挖掘和威胁分析的关键环节。然而,面对海量工具和分散的技术文档,安全研究人员常需耗费大量时间查找和比对工具信息。本文将介绍如何利用 Python Flask HTML 技…...
xv6-labs-2024 lab1
lab-1 注:实验环境在我的汇编随手记的末尾部分有搭建教程。 0.前置 第零章 xv6为我们提供了多种系统调用,其中,exec将从某个文件里读取内存镜像(这确实是一个好的说法),并且将其替换到调用它的内存空间,也就是这个…...
HTTP Form v.s. Flask-WTF Form v.s. Bootstrap Form
在Flask-WTF和Bootstrap 的Form创建中,添加了页面显示Flash Messages。 相比Flask_WTF, Bootstrap用 render_form(form)渲染样式,自动带错误提示,不需要像Flask_WTF那样手写 for error in ... 。 项目结构: register_app/ ├── HTTP_Form_App.py ├── FlaskWTF_Form…...
Linux网络编程——https的协议及其加密解密方式
目录 一、前言 https协议 常见的加密方式 1、对称加密 2、非对称加密 3、数字签名 1. 只用对称加密 2、只用单一的非对称加密 3、双方都使用非对称加密 4、非对称加密对称加密 证书 证书颁发流程 服务器与客户端的证书验证流程 5、证书非对称加密对称加密 前言 上一…...
Node.js 下载与安装(图文)
下载 官网:【直达:https://nodejs.org/en/】。 点击【Download】,选择【版本,系统】。点击【Windows Installer(.msi)】。 安装 双击【.msi文件】,选择【安装路径】,也可以一直【下一步】。 查看版本 …...
3.31-4.06 Web3 游戏周报:Pebble 玩家留存率登顶,Treasure DAO 面临重组危机
回顾上周的区块链游戏概况,查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【3.31–4.06】Web3 游戏行业动态 链游生态系统 Treasure DAO 因财务危机面临重组,将终止游戏运营和 Treasure Chain3A 链游 Shrapnel 开发商 Neon Machine 深陷财务…...
echarts生成3D立体地图react组件
地图散点图效果: react项目中安装echarts、echarts-gl依赖: npm install echarts echarts-gl 文件目录结构: 地图组件map目录下文件代码,点击散点图圆点触发事件handleCityClick: index.jsx: import { …...
Node.js 中处理 Excel 文件的最佳实践
在现代应用开发中,Excel 文件仍然是数据交换和存储的重要格式之一。在 Node.js 环境中,处理 Excel 文件的需求日益增加。本文将介绍如何在 Node.js 中高效地处理 Excel 文件,涵盖工具选择、基本操作和最佳实践。 1. 选择合适的库 在 Node.js…...
解决Ubuntu系统鼠标不流畅的问题
电脑是联想的台式组装机,安装ubuntu系统(不管是16、18、20、22)后,鼠标都不流畅。最近几天想解决这个问题,于是怀疑到了显卡驱动上。怀疑之前一直用的是集成显卡,而不是独立显卡,毕竟2060的显卡…...
【Linux】虚拟机设置静态IP
主播我今天下午学了几节微服务课,上课的时候,直接把手机拿走了去上课(电脑连的我手机的热点),虚拟机没关,晚上主播我回来继续学,电脑连上热点之后,发现虚拟机连接不上了,…...
Web API:AbortController
Web API:AbortController 主要用途基本工作原理基本用法示例高级用例1. 实现请求超时2. 取消多个请求3. 与其他异步 API 一起使用 浏览器支持总结 主要用途 AbortController 是一个 Web API,主要用于取消一个或多个 Web 请求(如 fetch 请求&…...
服务器配置虚拟IP
服务器配置虚拟IP的核心步骤取决于具体场景,主要包括本地单机多IP配置和高可用集群下的虚拟IP管理两种模式。 一、本地虚拟IP配置(单服务器多IP) 基于Linux系统: 确认网络接口:使用 ip addr 或 ifconfig 查…...
《AI大模型应知应会100篇》第5篇:大模型发展简史:从BERT到ChatGPT的演进
第5篇:大模型发展简史:从BERT到ChatGPT的演进 摘要 近年来,人工智能领域最引人注目的进步之一是大模型(Large Language Models, LLMs)的发展。这些模型不仅推动了自然语言处理(NLP)技术的飞跃&…...
小球反弹(蓝桥杯C语言)
有一长方形,长为 343720343720 单位长度,宽为 233333233333 单位长度。在其内部左上角顶点有一小球 (无视其体积),其初速度如图所示且保持运动速率不变,分解到长宽两个方向上的速率之比为 dx:dy15:17dx:dy15:17。小球碰到长方形的…...
Java面试39-Zookeeper中的Watch机制的原理
Zookeeper是一个分布式协调组件,为分布式架构下的多个应用组件提供了顺序访问控制能力。它的数据存储采用了类似于文件系统的树形结构,以节点的方式来管理存储在Zookeeper上的数据。 Zookeeper提供了一个Watch机制,可以让客户端感知到Zooke…...
3️⃣ Coze工作流基础教学(2025年全新版本)
目录 一、什么是工作流 二、为什么用工作流 三、工作流使用场景 四、怎么学习工作流 五、工作流功能概述 六、制作工作流基础流程 6.1 创建工作流 6.2 配置工作流 6.3 调试工作流 6.4 发布工作流 6.5 使用工作流 6.6 复制工作流 6.7 删除工作流 6.8 设置工作流异…...
备战蓝桥杯——走迷宫问题(BFS解决)
这是一个经典的BFS算法 1. BFS算法保证最短路径 核心机制:广度优先搜索按层遍历所有可能的路径,首次到达终点的路径长度即为最短步数。这是BFS的核心优势。队列的作用:通过队列按先进先出的顺序处理节点,确保每一步探索的都是当…...
usbip学习记录
USB/IP: USB device sharing over IP make menuconfig配置: Device Drivers -> Staging drivers -> USB/IP support Device Drivers -> Staging drivers -> USB/IP support -> Host driver 如果还有作为客户端的需要,继续做以下配置&a…...
mlir-tblgen 的应用渐进式示例
示例01 -gen-dialect-decls toy_dia.1.toy include "mlir/IR/OpBase.td" //include "mlir/IR/FunctionInterfaces.td" //include "mlir/IR/SymbolInterfaces.td" //include "mlir/Interfaces/SideEffectInterfaces.td"def Toy_Diale…...
AI大模型与未来社会结构的重构:从工具到共生体
一、引言:从蒸汽机到ChatGPT,文明的每一次跃迁都始于“工具的自我进化” 历史长河中,每一次技术革命,都伴随着人类社会组织、认知方式乃至价值体系的巨变。从18世纪的蒸汽机到20世纪的信息技术,再到21世纪的人工智能&…...
2015年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析
2015年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析 全国大学生数学建模竞赛(China Undergraduate Mathematical Contest in Modeling)是国家教委高教司和中国工业与应用数学学会共同主办的面向全国大学生的群众性科技活动,目的在于激励学生学习数学的积极性,提高学…...
免费Deepseek-v3接口实现Browser-Use Web UI:浏览器自动化本地模拟抓取数据实录
源码 https://github.com/browser-use/web-ui 我们按照官方教程,修订几个环节,更快地部署 步骤 1:克隆存储库 git clone https://github.com/browser-use/web-ui.git cd web-ui Step 2: Set Up Python Environment 第 2 步:设置…...
Bash判断命令是否存在
在 Bash 脚本里,你可以通过多种方法判断某个命令是否存在。下面为你详细介绍几种常见的判断方式。 1. 使用command -v command -v命令能够返回指定命令的可执行文件路径,如果该命令不存在则不会有输出。借助这一特性,我们可以结合条件判断语…...
双指针(滑动窗口)
用于在数组或字符串的进行快速排序 匹配 排序或移动操作。 双指针不是真的指针,只是用两个变量来表示下标(在后面都用指针来表示) 双指针往往和单调性 排序 联系在一起,暴力往往是O(n方)双指针利用单调性可以优化到o(n) 有对撞指针 快慢指针 美丽区间…...