基于Granite模型的本地智能体系统:RAG与图像研究实战

news2026/5/2 6:56:21
1. 项目概述基于Granite模型构建的智能体系统如果你正在寻找一个能在本地高效运行、功能强大且开箱即用的智能体Agent框架那么IBM开源的Granite Retrieval Agent和Image Research Agent项目绝对值得你花时间深入研究。这两个项目分别聚焦于文档检索增强生成RAG和图像分析研究它们都基于IBM最新的Granite 4系列大语言模型构建旨在将复杂的多智能体任务规划与执行能力封装成开发者可以轻松部署和使用的工具。简单来说Granite Retrieval Agent是一个“全能型信息助理”。你给它一堆本地文档比如PDF、Word、会议纪要再结合网络搜索能力它就能像一支训练有素的团队一样自动分解你的复杂问题规划查询步骤调用合适的工具如文档检索、网页搜索并综合所有信息给你一个结构化的答案。而Image Research Agent则是一个“图像研究员”你上传一张图片它能识别图中的关键物体或场景然后自动调用网络搜索或知识库为你查找相关的技术文档、研究论文或历史背景信息生成一份图文并茂的研究报告。这两个项目的核心价值在于其“智能体化”Agentic的工作流。它们不是简单的“一问一答”模型而是能够自主思考、规划、调用工具并迭代优化的智能系统。更关键的是它们被设计为在消费级硬件如配备M3 Max芯片的MacBook Pro上本地运行这得益于Granite 4模型在架构上的创新。Granite 4采用了混合Mamba-2/Transformer架构并提供了专家混合MoE变体其目标是实现更低的内存占用和更快的推理速度。官方数据显示相比同规模的可比模型它能减少超过70%的内存使用并将推理速度提升约2倍。这对于需要频繁进行工具调用和复杂推理的智能体应用来说意味着更低的部署成本和更流畅的交互体验。2. 核心架构与设计思路解析2.1 为什么选择Granite 4作为核心引擎在构建本地化智能体时模型的选择是成败的关键。我们通常面临“能力”、“速度”和“资源”的不可能三角。Granite 4系列模型特别是其Apache 2.0的开源许可和针对工具调用、指令跟随、RAG、JSON输出的优化使其成为这个三角中的一个优秀平衡点。架构优势带来的实际收益传统的纯Transformer模型在处理长序列时其注意力机制的计算复杂度是序列长度的平方级O(n²)这导致内存消耗和推理延迟随着上下文增长而急剧上升。Granite 4引入的Mamba-2是一种状态空间模型SSM它在处理序列时具有线性复杂度O(n)。在智能体工作流中模型需要不断处理包含历史对话、工具调用结果、规划步骤的长上下文Mamba-2的引入能显著缓解长上下文带来的性能压力。而MoE架构则通过激活少数专家网络来处理每个输入在保持总参数量较大的同时实际计算时激活的参数很少。例如项目中Image Research Agent使用的ibm/granite4:tiny-h模型总参数量为70亿但每次前向传播仅激活约10亿参数。这直接转化为更低的内存带宽需求和更快的计算速度使得智能体在规划、工具调用和反思等需要多次模型交互的循环中响应更加迅速。模型选型的针对性项目为两个智能体选择了不同的Granite 4变体这体现了精细化的设计。Granite Retrieval Agent使用ibm/granite4:latest这个版本通常是该系列中能力最强的通用模型。对于RAG任务智能体需要深刻理解用户查询、精准解析文档内容、进行复杂的逻辑推理和综合归纳因此需要一个“大脑”足够强大的模型来担任任务规划者和最终答案的合成者。Image Research Agent使用ibm/granite4:tiny-h这个智能体的核心工作流是由CrewAI框架协调多个角色智能体如“分析员”、“研究员”协作完成。每个角色智能体执行的任务相对具体如“描述图像”、“搜索关键词”对单次响应的深度要求可能低于RAG任务但对低延迟的要求更高因为一次图像研究可能涉及数十次模型调用。tiny-h版本在保持良好指令跟随和工具调用能力的前提下专为低延迟、小内存 footprint 的场景优化是 orchestrator协调者和工具调用者的理想选择。注意模型名称中的“latest”标签是动态的它指向Granite 4系列当前最新的稳定版本。在生产部署中为了确保一致性建议锁定一个具体的版本号如果Ollama提供的话例如ibm/granite4:8b以避免因模型更新可能带来的行为变化。2.2 Granite Retrieval Agent基于Autogen的智能体化RAG系统这个智能体的设计超越了传统RAG“检索-生成”的两段式管道。传统RAG在面对复杂、多步骤的问题时例如“总结我上周的所有会议纪要找出关于项目A的技术挑战并搜索最新的相关解决方案”往往力不从心。Granite Retrieval Agent引入了“智能体化RAG”的概念其核心是利用多智能体协作来自动化整个问题解决流程。架构深度解析用户代理User Proxy这是与用户交互的接口。它接收用户查询并将其传递给“助理代理”。助理代理Assistant Agent这是系统的大脑由ibm/granite4:latest驱动。它的职责是任务规划与分解将复杂的用户查询分解成一系列可执行的子任务。例如“研究我的文档并搜索网络”可能被分解为a) 从知识库检索相关文档片段b) 基于检索结果提炼搜索关键词c) 执行网络搜索d) 综合所有信息生成报告。工具调用根据子任务动态决定调用哪个工具。项目集成了两类核心工具一是针对Open WebUI本地知识库的检索工具二是通过网络搜索API如SearXNG获取外部信息的工具。反思与迭代评估工具返回的结果是否足够回答当前子任务。如果不够它可以重新规划提出更精确的搜索问题或进行更深度的检索。执行器负责实际运行助理代理选择的工具并将结果返回。群组聊天管理器GroupChatManager在更复杂的设置中可以引入多个具有不同专长的助理代理由群组聊天管理器来协调它们之间的对话和协作共同解决一个任务。这种架构的优势在于其自适应能力。智能体不是机械地执行预设流程而是根据中间结果动态调整策略。如果第一次检索的文档不相关它会调整查询词再试一次如果网络搜索返回了矛盾的信息它会尝试进行交叉验证。这极大地提升了处理复杂、开放域问题的成功率。2.3 Image Research Agent基于CrewAI的多智能体研究流水线如果说Retrieval Agent是一个“多面手大脑”那么Image Research Agent就是一个“专业化流水线”。它采用CrewAI框架将图像研究这个宏大任务拆解成由多个专职智能体按顺序执行的标准化步骤更像一个分工明确的研究团队。角色分工与工作流图像分析智能体Image Analysis Agent这是流水线的第一站。它接收用户上传的图片。虽然当前代码示例中可能未直接集成视觉模型但其设计意图是结合一个视觉后端如granite3.2-vision:2b或其他视觉语言模型VLM来“看懂”图片。该智能体的任务是生成图像的详细文本描述并识别出其中的关键实体物体、场景、文字等为后续研究提供“种子关键词”。研究规划智能体Research Planning Agent接收图像描述和关键词。它的职责是制定研究大纲。例如针对一张包含“旧式收音机和晶体管”的图片它可能规划出以下几个研究类别“晶体管收音机的发展历史”、“真空管与晶体管的比较”、“该型号收音机的收藏价值”。参数max_research_categories控制了这个智能体最多生成多少个研究方向。研究执行智能体Research Execution Agent这是流水线上的“工人”。研究规划智能体会为每个研究类别创建一个或多个研究执行任务。每个研究执行智能体负责一个具体的任务例如“搜索‘晶体管收音机历史’并总结三篇关键文章”。它会调用网络搜索工具获取信息并整理成初步发现。报告合成智能体Report Synthesis Agent流水线的最后一站。它收集所有研究执行智能体的成果按照一个清晰的结构如引言、各研究类别发现、总结进行整合、去重和润色生成最终的研究报告。CrewAI与Autogen的范式差异Autogen更强调智能体间的自由对话和动态协作适合解决结构不固定的问题。而CrewAI采用了更结构化的“任务-角色-流程”范式通过预定义的角色、任务和执行顺序sequential, hierarchical等来确保复杂流程的可靠执行。对于像图像研究这样目标明确、步骤清晰的任务CrewAI的流水线模式往往更易于管理和调试。3. 环境部署与配置实操详解3.1 基础环境搭建Ollama与模型拉取本地运行这些智能体的基石是Ollama。你可以把它看作一个本地的大模型运行环境和管理器。安装与验证前往 ollama.com 下载对应你操作系统Windows/macOS/Linux的安装包。安装过程通常很简单一路点击下一步即可。安装完成后打开终端或命令提示符/PowerShell输入ollama --version来验证安装是否成功。拉取项目所需的Granite模型。根据你的网络环境这可能需要一些时间。# 拉取Retrieval Agent使用的主模型 ollama pull ibm/granite4:latest # 拉取Image Research Agent使用的轻量级模型 ollama pull ibm/granite4:tiny-h # 可选拉取Granite视觉模型用于增强图像理解能力 ollama pull granite3.2-vision:2b实操心得首次拉取模型时如果速度较慢可以考虑配置Ollama使用镜像源。例如在终端中设置环境变量OLLAMA_HOST指向更快的源具体镜像地址需自行搜索但需注意镜像的及时性和安全性。拉取完成后使用ollama list命令可以查看本地已安装的所有模型。3.2 控制台部署Open WebUI的安装与启动Open WebUI是一个功能强大的本地开源ChatGPT风格界面它不仅提供了友好的聊天交互更重要的是其“函数Functions”功能允许我们直接导入并运行Python脚本这是本项目智能体得以集成和交互的关键。安装与启动# 使用pip安装Open WebUI pip install open-webui # 启动Open WebUI服务默认会运行在 http://localhost:8080 open-webui serve关键配置与问题排查端口冲突如果8080端口被占用启动时会报错。你可以通过open-webui serve --port 7860指定另一个端口如7860。数据存储默认配置下Open WebUI的数据包括对话记录、上传的文件、知识库会保存在用户目录下的某个位置。对于生产环境或希望持久化数据建议通过--data参数指定一个固定的目录例如open-webui serve --data /path/to/your/data。首次访问服务启动后在浏览器打开http://localhost:8080。首次使用需要创建一个管理员账户。请务必记住这个账号密码它是管理函数和知识库的凭证。3.3 智能体脚本导入与函数配置这是将智能体“安装”到Open WebUI中的核心步骤。详细步骤在浏览器中登录Open WebUI点击左下角的设置齿轮图标选择“管理员”面板。在侧边栏找到并点击“函数Functions”。点击页面上的“”或“添加函数”按钮。在弹出的表单中名称填写一个易于识别的名字如“Granite文档研究助手”。描述简单描述功能如“一个能结合本地文档和网络搜索回答复杂问题的智能体”。函数代码这是最关键的一步。你需要打开本项目代码库中的granite_autogen_rag.py文件将其全部内容复制粘贴到这个代码编辑框中。点击“保存”。保存成功后该函数会出现在函数列表中确保其旁边的开关是“启用”状态。配置函数参数在函数列表中找到你刚添加的函数点击其右侧的齿轮图标配置。这里需要根据你的本地环境调整关键参数openai_api_url必须指向你的Ollama服务。默认http://localhost:11434是正确的前提是Ollama在本地运行且未修改默认端口。openai_api_keyOllama默认不需要密钥填写ollama即可。task_model_id确认是否为ibm/granite4:latest。如果你想尝试其他模型可以在这里修改。vision_api_url和vision_model_id如果你集成了视觉模型并希望Retrieval Agent也能处理图片中的文字则需要正确配置。否则可以先保持默认或留空。为Image Research Agent重复此过程用同样的方法将image_researcher_granite_crewai.py文件的内容导入为另一个函数例如命名为“图像研究分析员”。注意它的默认task_model_id是ibm/granite4:tiny-h。避坑指南在导入image_researcher_granite_crewai.py时你可能会在Open WebUI日志或界面上看到与opentelemetry相关的错误。这是因为CrewAI框架依赖的某些库引入了遥测功能。解决方法是在导入前编辑该Python脚本在文件最顶部添加以下三行代码来禁用遥测import os os.environ[OTEL_SDK_DISABLED] true os.environ[AUTOGEN_USE_DOCKER] 0 # 同时禁用Autogen可能尝试的Docker调用这能有效避免因环境缺失导致的启动失败。3.4 知识库与网络搜索配置智能体的强大能力需要数据源的支持。配置本地知识库在Open WebUI主界面点击左侧导航栏的“工作区Workspace”然后选择“知识Knowledge”。点击“ 新建集合”为你的一组文档创建一个集合例如“项目会议纪要”。进入该集合点击“上传”将你的PDF、Word、TXT、Markdown等格式的文档添加进去。Open WebUI会在后台自动进行文本提取、分块和向量化嵌入。上传完成后Granite Retrieval Agent在运行时就能通过其集成的检索工具查询这个知识库了。配置网络搜索以SearXNG为例 网络搜索为智能体提供了实时、广阔的外部信息源。虽然Open WebUI支持多种搜索提供商但SearXNG是一个开源、可自部署的元搜索引擎能保护隐私且聚合多个搜索结果。使用Docker快速启动SearXNGdocker run -d --name searxng -p 8888:8080 -v ./searxng:/etc/searxng --restart always searxng/searxng:latest这条命令会在后台启动一个SearXNG容器将它的8080端口映射到你本机的8888端口并将配置数据持久化到当前目录下的searxng文件夹中。在Open WebUI中配置搜索进入Open WebUI的“管理员”面板选择“设置”。找到“连接器”或“搜索”相关部分不同版本位置可能略有不同。添加一个新的搜索提供商类型选择“SearXNG”或“自定义”URL填写http://localhost:8888即你映射的地址。保存设置。验证搜索回到聊天主界面在输入框旁通常会出现一个“地球”或“搜索”图标点击并尝试进行一次搜索看是否能返回结果。完成以上所有步骤后你的本地智能体运行环境就已全部就绪。你可以在Open WebUI的聊天界面中通过函数名的方式来调用你配置好的智能体了。4. 核心参数调优与高级用法4.1 参数深度解析与调优建议智能体的行为很大程度上由配置参数控制。理解并调整这些参数能让智能体更好地适应你的具体任务。Granite Retrieval Agent 关键参数参数默认值作用与调优建议task_model_idibm/granite4:latest核心模型。如果你想获得更强的推理能力可以尝试Granite 4系列中更大的模型如果本地资源允许。对于更轻量的任务也可以换用tiny-h以提升速度。model_temperature0创造性/随机性。设置为0会使模型的输出非常确定和一致适合事实性检索和总结。如果希望智能体在规划或生成时更有创意例如为搜索查询想出更多样的关键词可以适当调高到0.1-0.3。不建议超过0.5否则回答可能变得天马行空。max_plan_steps6最大规划步数。限制智能体为解决一个问题所能尝试的最大步骤数。对于简单问题可以降低到3-4以加快响应。对于极其复杂的问题可以增加到10或更高但要小心陷入无限循环或产生过高成本。openai_api_urlhttp://localhost:11434Ollama API地址。如果你将Ollama部署在另一台机器上需修改为此机器的IP和端口如http://192.168.1.100:11434。vision_model_id(未设置)视觉模型。如果你想让它处理图片上传中的文字信息如截图中的文档可以设置为granite3.2-vision:2b或其他VLM模型ID并确保vision_api_url正确。Image Research Agent 关键参数参数默认值作用与调优建议task_model_idibm/granite4:tiny-h协调与工具调用模型。此模型负责任务分发和工具调用对速度敏感。保持tiny-h通常是平衡性能与速度的最佳选择。max_research_categories4最大研究类别数。限制从一张图片中衍生出的研究方向数量。对于内容简单的图片可以减少到2-3以避免信息冗余。对于内容丰富的图片可以增加到5-6。max_research_iterations6最大研究迭代次数。控制每个研究方向下研究执行智能体进行搜索和提炼的深度。增加此值会让研究更深入但耗时更长。include_knowledge_searchFalse是否包含知识库搜索。如果设置为True并且你在Open WebUI中配置了知识库那么研究智能体在搜索网络的同时也会尝试从你的本地文档中查找相关信息。run_parallel_tasksFalse是否并行运行任务。如果设置为TrueCrewAI会尝试并行执行不同的研究任务如同时研究“历史”和“技术”两个类别这能显著缩短总的研究时间但会增加系统负载并发调用模型和搜索。调优实战案例 假设你经常用Image Research Agent分析产品设计图希望快速获得技术规格和竞品信息。你可以进行如下配置max_research_categories3聚焦于“技术原理”、“材料工艺”、“市场竞品”三个最相关的方向。max_research_iterations4每个方向进行4轮搜索/提炼在深度和速度间取得平衡。run_parallel_tasksTrue让三个方向的研究同时进行最大化利用等待网络搜索返回的时间。include_knowledge_searchTrue并关联到你上传了公司内部技术白皮书的知识库让智能体同时参考内外部信息。4.2 提示工程与交互技巧智能体的表现也与你给它的指令Prompt密切相关。对Granite Retrieval Agent明确指令不要只说“帮我看看这个文档”。而是给出具体任务例如“请从‘Q3产品规划.pdf’中提取所有关于‘AI功能’的讨论点并针对每个点搜索最近三个月内相关的技术博客文章最后给我一个对比表格。”分步引导对于极其复杂的任务可以尝试分步聊天。先让它“总结文档A的核心论点”再基于总结结果让它“针对核心论点中的X和Y分别搜索支持性和反对性的学术观点”。指定格式如果你需要特定格式的输出可以在指令中说明。例如“请用Markdown列表的形式输出”“请将最终答案总结为不超过200字的段落”。对Image Research Agent聚焦研究范围上传图片后用提示语限定研究范围。例如上传一张古老计算机的图片提示“请重点研究图中这台计算机的型号、发布年代、使用的处理器架构及其在计算机历史中的地位忽略其外观设计部分。”请求多维度分析你可以引导智能体从不同维度分析。例如“从技术演进、工业设计和社会影响三个维度分析这张图片中的汽车。”结合知识库如果你已经设置了include_knowledge_searchTrue可以在提示中明确指出优先或必须参考本地知识。例如“分析这张电路板图片并优先从我上传的‘公司硬件设计规范’知识库中查找相关的接口标准。”4.3 扩展可能性自定义工具与智能体项目的框架是开放的你完全可以为其添加新的“技能”工具或创造新的“角色”智能体。添加自定义工具 假设你想让Retrieval Agent能查询数据库。你可以在其Python脚本的tools列表中添加一个新的工具函数。例如添加一个查询SQLite数据库的工具# 在 granite_autogen_rag.py 中找到定义工具列表的地方添加类似以下函数 def query_database(query: str) - str: 根据自然语言查询返回数据库查询结果。 # 1. 使用一个LLM或规则将自然语言query转换为SQL语句 # 2. 连接数据库并执行SQL # 3. 将结果格式化为字符串返回 # 此处为示例逻辑需具体实现 sql convert_nl_to_sql(query) results execute_sql(sql) return format_results(results) # 然后将这个函数注册到agent的tools中之后智能体在规划任务时就可能自动调用这个query_database工具来获取信息。创建新的专用智能体 你可以模仿image_researcher_granite_crewai.py的结构利用CrewAI框架创建一个全新的智能体。例如创建一个“市场竞品分析智能体”定义角色产品信息提取员、竞品搜索员、优势对比分析师、报告撰写员。为每个角色设计具体的任务和目标。定义它们的工作流程例如顺序执行。集成必要的工具网页搜索、公司数据库查询、图表生成API等。 通过这种方式你可以将任何复杂的、多步骤的分析流程自动化。5. 常见问题排查与性能优化5.1 部署与运行问题问题1启动Open WebUI时提示端口被占用。排查使用命令netstat -ano | findstr :8080(Windows) 或lsof -i :8080(macOS/Linux) 查看哪个进程占用了8080端口。解决终止占用端口的进程或使用open-webui serve --port 另一个端口号指定新端口。问题2Ollama拉取模型速度极慢或失败。排查可能是网络连接问题或默认源速度不佳。解决检查网络连接尝试使用稳定的网络环境。考虑为Ollama配置国内镜像源如果可用。这通常需要修改Ollama的配置文件位置因系统而异。如果条件允许在网络环境更好的机器上拉取模型然后通过Ollama的模型导出/导入功能迁移。问题3在Open WebUI中调用智能体函数长时间无响应或报错“模型不可用”。排查首先确认Ollama服务正在运行ollama list命令应能正常返回模型列表。检查Open WebUI函数配置中的openai_api_url是否正确指向了Ollama服务默认http://localhost:11434。检查task_model_id是否与Ollama中已拉取的模型名称完全一致注意大小写和tag。查看Open WebUI的后台日志通常会有更详细的错误信息。解决确保Ollama服务已启动。核对并修正API URL和模型ID。如果是连接拒绝错误检查是否有防火墙阻止了本地回环地址的通信。5.2 智能体行为异常问题问题4Retrieval Agent总是回答“我找不到相关信息”即使知识库里有文档。排查确认文档已成功上传至Open WebUI知识库并且处理完成无错误状态。检查智能体使用的检索工具配置是否指向了正确的知识库集合名称在代码中查找相关配置。尝试一个非常简单的查询如直接包含文档中明确存在的短语测试检索功能本身是否正常。解决在Open WebUI的知识库界面测试一下简单检索确认向量搜索工作正常。检查智能体脚本中关于知识库检索的代码段确认集合名称参数是否正确。这可能与文档分块和嵌入模型有关。尝试调整Open WebUI中知识库的“分块大小”和“重叠度”设置重新上传文档。问题5Image Research Agent生成的研究报告很肤浅只是简单罗列搜索摘要。排查这通常与提示词设计或模型能力限制有关。tiny-h模型在深度分析和综合能力上可能弱于更大的模型。解决优化提示在给智能体的系统提示或用户提示中要求它进行“对比分析”、“归纳总结”、“指出争议点”等更深层次的操作。例如“请不仅列出搜索结果还要分析不同来源观点的一致性并指出当前可能存在的技术瓶颈。”调整参数增加max_research_iterations的值让每个研究类别进行更多轮的搜索和反思从而获取更深入的信息。升级模型如果资源允许尝试在配置中将task_model_id替换为更大的Granite 4模型如latest观察效果。注意这可能会降低响应速度。问题6智能体运行速度很慢尤其是处理复杂任务时。排查性能瓶颈可能来自模型推理、网络搜索延迟或脚本本身的逻辑。解决模型层面确保使用的是适合的模型。对于协调和工具调用tiny-h是最快的。对于最终合成如果速度要求高也可以考虑使用tiny-h。硬件层面确保你的系统有足够的内存。Granite模型在推理时尤其是处理长上下文时对内存带宽敏感。关闭不必要的后台程序。配置层面对于Image Research Agent如果启用run_parallel_tasksTrue会并发调用模型和搜索对CPU/IO有压力。如果硬件资源有限建议保持为False顺序执行。网络层面网络搜索是主要延迟来源之一。确保SearXNG实例或你使用的搜索API响应迅速。可以考虑使用更快的搜索服务提供商或在本地缓存常用查询结果。5.3 安全与隐私考量问题7我的文档数据是否安全分析整个系统运行在本地。你的文档上传到Open WebUI后其向量化、存储和检索过程均发生在你的机器上。智能体调用模型也是在本地通过Ollama完成。因此只要你的本地环境是安全的你的数据就不会离开你的设备。建议定期备份Open WebUI的数据目录。如果使用Docker部署注意数据卷的挂载和权限。问题8网络搜索会泄露我的查询隐私吗分析这取决于你配置的搜索提供商。如果你使用自托管的SearXNG并且SearXNG配置为使用不记录日志的公共搜索引擎实例那么隐私性相对较好。如果你直接配置了谷歌、必应等商业搜索引擎你的查询词可能会被这些公司收集。建议对于隐私要求高的场景优先使用自托管的SearXNG并在其配置中禁用日志记录并选择隐私友好的上游搜索引擎。通过以上的部署、配置、使用和排查指南你应该能够顺利地在本地运行并驾驭这两个强大的Granite智能体。它们代表了当前开源社区在本地化、智能体化AI应用方面的前沿实践。从简单的文档问答到复杂的多模态研究任务这个项目提供了一个坚实且可扩展的起点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2574193.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…