FlowiseAI:可视化低代码平台,快速构建LLM应用与AI智能体

news2026/5/14 3:32:15
1. 项目概述用FlowiseAI像搭积木一样构建你的AI智能体如果你对AI应用开发感兴趣但又觉得从零开始写代码调用API、处理复杂逻辑太麻烦那么FlowiseAI简称Flowise这个项目你绝对不能错过。简单来说Flowise是一个开源的、可视化的低代码/无代码平台它让你能通过拖拽节点、连接线条的方式像搭建乐高积木一样快速构建和部署基于大语言模型LLM的AI应用和工作流。无论是想做一个智能客服机器人、一个能自动分析文档的问答助手还是一个能自主执行多步骤任务的AI智能体AgentFlowise都能让你在图形化界面里轻松搞定而无需深入复杂的编程细节。我第一次接触Flowise是因为需要快速为团队内部搭建一个基于知识库的问答系统。传统的开发路径意味着要处理LangChain的复杂链式调用、向量数据库的接入、以及前后端的交互周期长且门槛高。而Flowise直接把这一切封装成了可视化的“组件”Nodes我只需要把“文档加载器”、“文本分割器”、“向量数据库”、“大语言模型”和“提示词模板”这几个节点拖到画布上用线把它们按逻辑连起来一个功能完整的RAG检索增强生成应用就诞生了。这极大地降低了AI应用的原型验证和交付门槛。它的核心价值在于“可视化编排”和“开箱即用”。对于开发者它能加速开发进程让精力更聚焦于业务逻辑而非底层实现对于产品经理、运营甚至业务专家它提供了直接参与AI应用构建的可能性。项目基于Node.js和React构建技术栈现代社区活跃并且完全开源支持从本地开发到云端部署的各种场景。接下来我将从设计思路、核心功能拆解、详细部署与实操到深度定制和避坑指南为你完整呈现如何玩转Flowise。2. 核心架构与设计哲学为什么是“可视化”和“低代码”在深入实操之前理解Flowise的设计哲学至关重要。这能帮助你在构建复杂工作流时做出更合理的组件选择和架构设计。2.1 基于LangChain的组件化封装Flowise的底层引擎重度依赖于 LangChain 以及后来的LangGraph等。LangChain本身是一个强大的框架它将LLM应用开发中常见的模式如提示词管理、数据检索、链式调用、代理等抽象成标准的模块。然而直接使用LangChain需要编写相当数量的Python或JavaScript代码。Flowise做的工作就是将这些代码模块进行了一次“可视化封装”。它将LangChain中的Chain、Agent、Tool、Memory、Retriever等概念转化成了画布上一个一个具有特定输入/输出接口的节点Node。例如一个“Conversational Retrieval QA Chain”在LangChain中可能需要数十行代码来初始化在Flowise里就只是一个名为“Conversational Retrieval QA Chain”的节点你只需要配置好它连接的LLM和向量存储节点即可。这种设计带来的优势是显而易见的降低认知负荷开发者无需记忆复杂的类名和API参数通过图形界面探索和连接功能。提升迭代速度调整工作流逻辑比如在RAG流程前增加一个数据清洗节点只需拖拽连线无需重写和测试代码。促进协作非技术成员可以通过图形界面理解AI工作流的逻辑甚至参与调整提示词或流程分支。2.2 三层模块化结构UI、Server与Components从代码仓库可以看出Flowise采用了清晰的三层分离架构这保证了其良好的可维护性和可扩展性。UI层 (packages/ui)基于React构建的拖拽式可视化编辑器。这是用户直接交互的部分负责渲染画布、节点面板、聊天窗口等。它的核心状态管理着整个工作流的节点布局和连接关系。Server层 (packages/server)基于Node.js (Express) 的后端API服务。它承担了核心业务逻辑接收前端发送的工作流图由节点和边组成的数据结构。将这张图“编译”成可执行的LangChain代码或调用序列。执行这个编译后的流程处理真正的LLM调用、工具执行、数据查询等。管理对话记忆、流式响应Streaming并返回结果给前端。Components层 (packages/components)这是Flowise的“灵魂”所在也是其生态扩展的关键。所有可拖拽的节点如各类LLM模型、记忆模块、工具、链等都在这里定义。每个节点都是一个独立的类定义了其配置表单、输入类型、输出类型以及最关键的run方法该方法描述了该节点在流程中被触发时要执行的具体操作。这种分离意味着什么如果你想为Flowise添加一个全新的功能比如接入一个国内的大模型或一个特殊的API工具你通常不需要改动UI和Server的核心代码只需要在components层按照规范编写一个新的节点类并注册即可。这为社区贡献和私有化定制打开了大门。2.3 工作流编排的核心数据流驱动在Flowise的画布上连接节点的箭头代表的是“数据流”。一个节点的输出会成为下一个节点的输入。这种设计强制你以数据流动的视角来思考AI应用。一个典型的数据流类型包括字符串String最常见的类型如用户问题、LLM的回复、工具的执行结果。文档Document包含文本内容和元数据如来源的对象常用于RAG流程。聊天记录ChatMessage带有角色user/assistant/system的消息对象用于维护对话上下文。工具Tool可执行函数的描述对象用于智能体Agent调用。实操心得理解数据流类型是避免连线错误的关键。当你试图将一个输出“文档”的节点连接到只接受“字符串”输入的节点时Flowise会禁止连线或运行时报错。在设计工作流时要有意识地规划每个节点的输入输出数据类型这就像设计电路的电压和信号类型一样重要。3. 从零开始全方位部署与启动指南官方提供了多种启动方式这里我将详细拆解每种方法的适用场景、具体步骤和注意事项帮你选择最适合自己的那一个。3.1 方案一全局NPM安装最快捷的原型验证这是上手最快的方式适合想立即体验和进行简单测试的用户。# 确保Node.js版本 18.15.0 node --version # 全局安装Flowise命令行工具 npm install -g flowise # 启动Flowise服务 npx flowise start执行npx flowise start后它会自动完成依赖安装和服务器启动。默认情况下服务运行在http://localhost:3000。用浏览器打开即可看到可视化编辑器。注意事项与高级配置端口冲突如果3000端口被占用可以使用--port参数指定新端口npx flowise start --port 3001。数据持久化默认情况下你创建的工作流Flows和聊天记录保存在内存中服务重启后会丢失。对于任何正式使用都必须配置数据库。启动时指定环境变量即可npx flowise start --PORT3000 --DATABASE_TYPEsqlite --DATABASE_PATH/path/to/your/flowise.db支持sqlite,postgres,mysql等。模型API密钥首次使用需要配置LLM如OpenAI的API密钥。你可以在启动后点击界面左下角的“设置”齿轮图标在“API密钥”栏目中添加。更安全的方式是通过环境变量在启动时传入npx flowise start --OPENAI_API_KEYsk-your-key-here。3.2 方案二Docker部署推荐的生产与稳定环境Docker方案提供了环境隔离和一致性非常适合在服务器上持久化运行也是官方主推的部署方式。使用Docker Compose最强推荐这是最简单、最完整的部署方式一键拉起包含Flowise应用和PostgreSQL数据库的服务。克隆项目并进入docker目录git clone https://github.com/FlowiseAI/Flowise.git cd Flowise/docker配置环境变量cp .env.example .env编辑.env文件以下是一些关键配置项# 数据库配置 DATABASE_TYPEpostgres DATABASE_HOSTpostgres # Docker Compose网络中的服务名 DATABASE_PORT5432 DATABASE_USERflowise DATABASE_PASSWORDyour_secure_password_here # 务必修改 DATABASE_NAMEflowise # Flowise服务配置 PORT3000 FLOWISE_USERNAMEadmin # Web登录用户名 FLOWISE_PASSWORDadmin # Web登录密码务必修改 # 可选预置你的API密钥避免在UI中重复配置 OPENAI_API_KEYsk-... # LANGCHAIN_API_KEYlsv2_... # 如需使用LangSmith追踪启动服务docker compose up -d这个命令会启动两个容器flowise应用本身和postgres数据库。访问与维护应用http://你的服务器IP:3000停止服务docker compose stop查看日志docker compose logs -f flowise更新版本先docker compose down然后拉取最新代码git pull再重新执行docker compose up -d --build。直接使用Docker镜像适合更自定义的Docker环境或者需要在Kubernetes中部署。# 从Docker Hub拉取官方镜像 docker pull flowiseai/flowise # 运行容器并挂载数据卷持久化数据库以SQLite为例 docker run -d \ --name flowise \ -p 3000:3000 \ -e PORT3000 \ -e DATABASE_TYPEsqlite \ -e DATABASE_PATH/root/.flowise/database.sqlite \ -v /your/host/data:/root/.flowise \ flowiseai/flowise3.3 方案三从源码开发与调试贡献者与深度定制者如果你打算二次开发添加自定义节点或修复某个bug就需要从源码启动。环境准备确保已安装Node.js (18.15.0) 和 PNPM。npm install -g pnpm克隆并安装依赖git clone https://github.com/FlowiseAI/Flowise.git cd Flowise pnpm install这一步会安装所有子模块server, ui, components的依赖。构建与启动pnpm build pnpm startpnpm build会编译TypeScript代码和React前端资源。如果遇到内存不足错误按README提示设置NODE_OPTIONS--max-old-space-size4096。开发模式热重载 分别在packages/ui和packages/server目录下创建.env文件参考.env.example设置端口如UI的VITE_PORT8080Server的PORT3000。 然后运行pnpm dev此时前端运行在8080端口后端运行在3000端口任何代码改动都会自动热更新非常适合调试。踩坑实录在开发模式下前端8080会通过代理请求后端3000。如果你在自定义节点中调用外部API遇到CORS问题可能需要在后端的server模块中配置CORS中间件而不是在前端解决。4. 核心功能实操构建你的第一个AI工作流理论说再多不如动手搭一个。我们以构建一个“智能文档问答助手”为例贯穿从基础到进阶的全过程。4.1 基础搭建一个简单的对话链首先我们创建一个不依赖外部知识仅靠LLM本身能力的对话机器人。登录与创建新流启动Flowise并登录后点击“ New Flow”创建一个空白画布。添加LLM节点在左侧节点面板的“Models”分类下找到“OpenAI”节点拖到画布上。配置模型参数点击画布上的OpenAI节点在右侧属性面板中填入你的OpenAI API密钥如果已在环境变量中配置则无需填写。你可以选择模型如gpt-3.5-turbo、调整温度Temperature和最大令牌数Max Token。添加提示词模板在“Chains”分类下找到“Prompt Template”节点并拖出。在属性面板的“Template”框中编写你的提示词例如你是一个乐于助人的助手。请用中文回答用户的问题。 问题{input} 回答这里的{input}是一个变量它将从其他节点接收输入。添加聊天输入与输出在“Interface”分类下分别拖出“Chat Input”和“Chat Output”节点。连接节点将“Chat Input”节点的output连接到“Prompt Template”节点的input。将“Prompt Template”节点的prompt连接到“OpenAI”节点的input。将“OpenAI”节点的output连接到“Chat Output”节点的input。测试运行点击画布右上角的“运行”按钮播放图标然后在左下角的聊天框输入“你好你是谁”系统就会按照“输入 - 提示词填充 - LLM生成 - 输出”的流程返回结果。至此一个最基础的对话流就完成了。它演示了Flowise最核心的“拖拽-连接-配置”逻辑。4.2 进阶实战构建RAG检索增强生成流程RAG是当前最实用的AI应用模式之一。我们用它来构建一个能回答特定文档内容比如公司内部手册的问答机器人。第一步准备知识库文档加载与处理文档加载从“Document Loaders”分类中根据你的文档类型选择加载器。例如选“Text File”节点上传一个.txt文件或“PDF File”节点上传PDF。拖入节点后在属性面板上传文件。这个节点会输出“Document”对象。文本分割原始文档可能很长需要切分成小块Chunks以便嵌入和检索。拖入“Recursive Character Text Splitter”节点。连接上一步的document输出到它的document输入。配置Chunk Size如1000字符和Chunk Overlap如200字符用于保持上下文连贯。向量化与存储嵌入模型从“Embeddings”分类拖出“OpenAI Embeddings”节点配置你的API密钥。它负责将文本块转化为向量。向量数据库从“Vector Stores”分类拖出“In-Memory Vector Store”节点仅用于演示重启后数据丢失。对于生产应选择“Pinecone”、“Chroma”或“Weaviate”等持久化存储节点。连接“文本分割器”的document输出到“向量数据库”节点的document输入。连接“OpenAI Embeddings”节点的embedding输出到“向量数据库”节点的embedding输入。这个组合节点的功能是将分割后的文本块通过嵌入模型转化为向量并存储到向量数据库中。第二步构建检索与问答链检索器从“Retrievers”分类拖出“Vector Store Retriever”节点。连接“向量数据库”节点的vectorStore输出到它的vectorStore输入。配置Top K返回最相关的几个文本块如4。对话检索链这是核心处理单元。从“Chains”分类拖出“Conversational Retrieval QA Chain”节点。连接LLM将一个“OpenAI”节点或其它LLM节点连接到该链的model输入。连接检索器将“Vector Store Retriever”节点连接到该链的retriever输入。添加上下文记忆为了让机器人记住对话历史从“Memory”分类拖出“Buffer Memory”节点连接到链的memory输入。第三步组装完整工作流拖入“Chat Input”和“Chat Output”节点。连接“Chat Input”到“Conversational Retrieval QA Chain”的question输入。连接“Conversational Retrieval QA Chain”的text输出到“Chat Output”。关键一步你需要将“向量数据库”节点与主对话流关联起来。通常的做法是将“向量数据库”节点作为一个独立的“组件”放在画布上它会在Flowise启动时自动执行初始化读取文档、分割、嵌入、存储。而主对话流中的“检索器”节点会引用这个已初始化的向量库。最终的画布应该包含两个相对独立的部分一个离线处理的“文档入库流水线”和一个在线的“问答对话流水线”。它们通过共享的“向量存储”资源联系起来。点击运行现在你的聊天机器人就能根据你上传的文档内容进行回答了。你可以问它文档里的具体概念、步骤或数据。4.3 高阶探索创建具备工具调用能力的智能体Agent智能体是能自主使用工具如搜索、计算、执行API来完成复杂任务的AI。在Flowise中构建Agent非常直观。定义工具在“Tools”分类下有多种预置工具如“SerpAPI”用于搜索“Calculator”用于计算。你也可以用“Custom Tool”节点通过编写JavaScript/TypeScript函数来创建自定义工具例如调用一个内部天气API。创建Agent执行器从“Agents”分类拖出“OpenAI Functions Agent”或“Conversational Agent”节点。前者与GPT的函数调用功能结合更紧密是当前推荐的方式。配置Agent连接一个LLM节点如OpenAI到Agent的model输入。将你定义好的多个工具节点如“SerpAPI”、“Calculator”连接到Agent的tools输入这是一个多输入端口可以连接多个工具。连接一个“Buffer Memory”节点到Agent的memory输入。组装工作流连接“Chat Input”到Agent的input连接Agent的output到“Chat Output”。现在当你问Agent“北京现在的天气怎么样”时它会先判断需要调用“SerpAPI”工具进行搜索然后将搜索结果整合再用LLM生成一个友好的回答返回给你。整个过程在Flowise的画布上清晰可见Agent的思考、工具选择、执行、再思考的循环过程可以通过调试信息观察。5. 深度定制与集成超越开箱即用的功能当基础功能无法满足需求时Flowise的扩展性就派上用场了。5.1 开发自定义节点这是最强大的定制能力。假设你需要接入一个特殊的内部API或者实现一种独特的文本处理逻辑。定位目录自定义节点代码位于packages/components下的src目录中节点按类别分文件夹存放如ChainsTools。创建节点文件例如创建一个CustomTool节点。你需要创建一个TypeScript文件如MyCustomTool.ts并导出一个类。实现节点类这个类需要继承INode和INodeParams等基础接口并至少实现以下部分import { ICommonObject, INode, INodeData, INodeParams } from flowise-components; export class MyCustomTool implements INode { label: string 我的自定义工具; name: string myCustomTool; description: string 这是一个描述; type: string MyCustomTool; icon: string customTool.svg; category: string Tools; baseClasses: string[] [Tool]; inputs: INodeParams[] [ { label: 输入参数, name: inputParam, type: string, optional: false } ]; async init(nodeData: INodeData): Promiseany { const inputParam nodeData.inputs?.inputParam as string; // 初始化逻辑返回一个LangChain Tool对象 return new DynamicTool({ name: my-tool, description: 我的自定义工具描述, func: async (input: string) { // 这里是工具的核心逻辑可以调用任何API const result await callYourInternalAPI(inputParam, input); return result; } }); } }注册节点在packages/components/src/index.ts中导入你的类并将其添加到nodes导出数组中。重建与使用运行pnpm build重新编译组件包然后重启Flowise服务。你就能在左侧节点面板的“Tools”分类下看到“我的自定义工具”节点了可以像使用内置节点一样拖拽和配置它。5.2 使用API集成到外部系统Flowise不仅是一个Web UI更是一个完整的后端服务。你创建的任何工作流Flow都可以通过API被外部系统调用。启用API确保启动Flowise时环境变量EXPOSE_FLOWISE_APItrue默认已是true。获取Flow ID在Flowise UI中编辑你的工作流时浏览器地址栏的URL末尾通常包含一个id参数如.../flow/abc123这个abc123就是你的Flow ID。你也可以在“My Flows”列表页面找到它。调用预测/聊天API端点POST /api/v1/prediction/{flowId}HeadersAuthorization: Bearer 你的API密钥如果设置了SECRETKEY环境变量则需要Body (JSON){ question: 你的问题是什么, overrideConfig: { // 可选覆盖工作流中某些节点的配置如切换模型 OpenAI-ApiKey: sk-new-key } }流式响应如果需要像ChatGPT一样逐字输出可以使用/api/v1/prediction/{flowId}/stream端点并处理Server-Sent Events (SSE)。这意味着你可以将Flowise作为微服务集成到你的网站、移动应用或内部系统中前端只需要调用这个REST API即可获得AI能力。5.3 配置与优化技巧环境变量管理将所有敏感信息API密钥、数据库密码和配置端口、日志级别通过环境变量管理切勿硬编码在代码或画布配置中。docker-compose方式是最佳实践。使用LangSmith进行追踪对于复杂工作流的调试和性能优化强烈建议集成LangSmith。在环境变量中设置LANGCHAIN_API_KEY和LANGCHAIN_PROJECTFlowise会自动将每次链式调用的详细步骤、耗时和输入输出发送到LangSmith平台方便你分析和优化提示词、检索效果等。性能优化对于频繁使用的向量数据库如Chroma考虑将其部署为独立服务并在多个Flowise实例间共享。调整文本分割的Chunk Size和Overlap这对RAG的检索精度和答案质量影响巨大。通常需要根据文档类型进行多次实验。利用“缓存”节点如Semantic Cache来缓存相似的LLM查询结果以降低API成本并提升响应速度。6. 常见问题排查与实战避坑指南在实际使用中你肯定会遇到各种问题。这里汇总了一些高频坑点和解决方案。6.1 部署与启动问题问题现象可能原因解决方案启动后访问localhost:3000白屏或连接失败1. 端口被占用2. Node.js版本过低3. 依赖安装失败1. 换用--port参数指定其他端口。2. 确认Node.js版本≥18.15.0 (node -v)。3. 删除node_modules和pnpm-lock.yaml重新运行pnpm install。Docker Compose 启动后数据库连接失败.env文件中的数据库密码含有特殊字符如#,$将密码用单引号括起来或避免使用在环境变量中有特殊含义的字符。pnpm build时报错JavaScript heap out of memory默认内存不足按照README提示设置环境变量export NODE_OPTIONS--max-old-space-size4096或更大再重新运行构建命令。自定义节点开发后在UI中不显示1. 节点类未正确注册到index.ts2. 未重新构建components包1. 检查packages/components/src/index.ts文件确保已导入并添加了新节点类。2. 运行pnpm build进行完整重建或进入packages/components目录单独运行pnpm build。6.2 工作流设计与运行问题问题现象可能原因解决方案节点之间无法连线端口数据类型不匹配Flowise是强类型连接。检查上游节点的输出数据类型如string和下游节点的输入数据类型是否一致。将鼠标悬停在节点的输入/输出锚点上可以看到类型提示。运行工作流时报错 “Cannot read properties of undefined”某个节点的必需输入端口未连接检查画布上所有节点确保每个黄色的“必需输入端口”都有正确的连线。灰色端口通常是可选的。RAG流程回答“我不知道”或胡言乱语1. 检索器未找到相关文档2. 提示词设计不佳3. 文本分割不合理1. 检查向量数据库是否成功存储了文档查看节点运行日志。尝试用更相关的关键词提问。2. 优化“Conversational Retrieval QA Chain”中的系统提示词明确指令“仅根据提供的上下文回答”。3. 调整文本分割器的chunk size太小会丢失上下文太大会引入噪声。Agent不调用工具直接由LLM回答1. 工具描述不清晰2. LLM温度Temperature设置过高1. 在自定义工具或工具节点的description字段中用清晰的语言描述工具的功能和适用场景这是LLM决定是否调用的关键。2. 尝试将LLM的温度调低如0.1使其更倾向于遵循函数调用指令。API调用返回401或403错误未正确设置认证密钥1. 在UI设置中配置API密钥。2. 通过环境变量传入。3. 调用API时在Header中提供正确的Authorization: Bearer 密钥。密钥通过环境变量SECRETKEY设置。6.3 性能与成本优化控制LLM调用成本对于内部工具类Agent可以考虑使用更便宜的模型如gpt-3.5-turbo作为Agent的“大脑”仅负责规划和工具调用而将需要高质量生成的步骤交给更强大的模型如gpt-4节点处理。利用缓存对于内容变化不频繁的问答如产品说明书可以在RAG链前加入“缓存”节点对相同或相似的问题直接返回缓存答案避免重复的检索和LLM生成。异步处理耗时任务如果工作流中有非常耗时的步骤如处理超大PDF考虑将其拆分为两个流。第一个流接收请求并触发异步任务立即返回一个“处理中”的状态第二个流在后台处理完成后通过Webhook或数据库通知用户。Flowise本身更适合同步响应流程复杂异步场景需要结合外部队列如Redis实现。经过几个月的深度使用我个人最大的体会是Flowise成功地将AI应用开发的“编程思维”转换成了“产品思维”和“流程思维”。它让构建AI应用不再是少数算法工程师的专利而是产品、运营、业务专家都能参与进来的协作过程。当然它并非万能对于需要极高定制化性能或复杂业务逻辑的场景直接编码仍是更优选择。但对于占绝大多数的、需要快速验证想法、构建内部工具或交付MVP的场景Flowise无疑是一把利器。它的开源属性也让我们可以在其基础上打造完全贴合自身业务需求的AI中台。下次当你再有一个AI点子时不妨先打开Flowise试试能不能在画布上把它“画”出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2587470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…