AgentEvolver:让大模型智能体具备自我进化能力的框架解析与实践

news2026/4/30 11:33:33
1. 项目概述当模型学会“进化”智能体开发进入新纪元最近在探索大模型应用落地的过程中我一直在思考一个问题我们费尽心思设计的智能体Agent其能力边界是不是在创建之初就被锁死了一个基于特定提示词Prompt和工具集构建的智能体面对复杂多变的任务尤其是那些需要长期规划、动态调整策略的场景往往显得力不从心。直到我深入研究了“AgentEvolver”这个项目才真正看到了解决这个问题的曙光。这不仅仅是一个工具库它代表了一种全新的范式——让智能体具备自我评估、自我反思和自我进化的能力。简单来说AgentEvolver 是一个旨在让大模型驱动的智能体能够自主进化的框架。它的核心思想是模拟生物进化中的“变异”与“选择”机制通过一个“进化器”Evolver来动态地优化智能体的核心组件比如它的“大脑”推理逻辑和“工具箱”可用功能。想象一下你设计了一个数据分析智能体起初它可能只会按固定流程生成图表。但在 AgentEvolver 的驱动下它能根据任务反馈自动调整分析问题的角度甚至“发明”出新的数据组合方式或可视化策略从而得出更深刻的洞察。这彻底改变了智能体“一次性设计永久性使用”的现状使其成为一个能够持续学习、适应和成长的“活体”。这个框架尤其适合两类场景一是任务目标明确但实现路径高度不确定的复杂问题求解比如复杂的商业策略模拟、科研实验设计二是需要智能体在长期互动中不断优化其行为策略的场景例如个性化的教学助手、游戏 NPC 或客户服务机器人。对于开发者而言它意味着我们可以从一个“智能体设计师”转变为“智能体进化环境的设计师”关注点从编写完美的静态提示词转向设计有效的进化规则和评估标准。接下来我将拆解这个框架的核心设计、实操要点并分享在复现和实验过程中的一手经验。2. 框架核心设计解构“进化”的引擎AgentEvolver 的架构设计清晰地分离了“执行”与“进化”两个层面这是其精妙之处。整个系统可以看作由两大核心模块构成负责具体任务执行的智能体Agent以及驱动智能体迭代升级的进化器Evolver。2.1 智能体Agent的模块化构成在 AgentEvolver 的语境下一个智能体不再是一个黑箱而是由几个可被“进化”的关键部件组成推理器Reasoner这是智能体的“思考核心”。它通常由大语言模型LLM驱动负责理解任务、制定计划、做出决策。在进化框架中推理器的进化主要体现在其接收的“系统提示词System Prompt”和“推理模板”上。进化器会尝试生成不同风格、不同侧重点的提示词比如一个更注重逻辑严谨性另一个更注重创造性发散从而改变智能体的思考模式。工具集Toolkit这是智能体的“手脚”。它包含了一系列可被调用的函数如计算器、搜索引擎API、代码执行器、专业数据库查询等。进化不仅限于使用已有的工具更关键的是能动态组合工具或生成新的工具描述。例如智能体最初可能只知道单独使用“搜索”和“总结”工具进化后它可能学会先“搜索”获取信息再调用“代码解释器”进行数据分析最后用“图表生成”工具可视化结果形成一个新的、更强大的复合工具链。记忆与状态Memory State智能体在多次任务中积累的经验和历史交互记录。进化过程可以利用这些记忆让智能体学会避免重复错误或借鉴过去的成功策略。这部分通常通过向量数据库或结构化日志来实现。这种模块化设计是进化的基础。因为只有将智能体解构成可独立修改的部件进化器才能有针对性地进行“基因操作”。2.2 进化器Evolver的工作机制进化器是框架的“导演”它控制着整个进化流程。其工作周期通常遵循一个闭环评估 - 选择 - 变异 - 替换。评估Evaluation这是进化的“指挥棒”。进化器需要一套或多套评估标准来量化智能体的表现。评估可以是任务导向的直接看任务完成度例如生成的报告质量评分、代码运行是否通过、问答准确率。过程导向的评估执行效率调用工具次数、成本消耗的Token数、推理的逻辑连贯性。人工反馈引入人类评分这是对齐智能体行为与人类期望的关键。框架需要设计接口来方便地注入人工评估信号。选择Selection根据评估分数从当前一代的智能体变体或历史版本中选出“适应度”较高的个体作为“亲本”。常用的策略有锦标赛选择、轮盘赌选择等。这里的关键是不仅要选表现最好的有时也要保留一些有“特色”如在某个细分任务上表现突出的个体以维持种群的多样性避免陷入局部最优。变异Mutation这是产生新特性的关键步骤。进化器会对选出的“亲本”智能体的部件进行修改。变异操作包括提示词变异使用另一个LLM或自身对原有的系统提示词进行重写、扩写、精简或风格转换。例如在提示词中加入“请逐步推理并检查每一步的假设”的指令。工具链变异调整工具调用的顺序尝试用新工具替换旧工具或将几个工具调用打包成一个新的“宏工具”。参数变异调整模型调用时的温度Temperature、Top-p等参数影响输出的随机性和创造性。替换Replacement将新生成的、经过评估的智能体变体替换掉当前种群中表现较差的个体形成新一代的智能体种群。这个循环可以自动进行多轮直到智能体性能达到预设阈值或进化轮次用完。整个机制模拟了自然选择让智能体在解决特定问题的“环境”中朝着更优的方向自主演进。3. 实操部署与环境搭建要上手 AgentEvolver第一步是搭建一个稳定、可复现的实验环境。由于项目涉及对大模型的频繁调用和实验管理环境的配置至关重要。3.1 基础环境与依赖安装项目基于 Python并深度依赖 ModelScope 的模型服务能力。我推荐使用 Conda 或 venv 创建独立的虚拟环境避免包冲突。# 1. 创建并激活虚拟环境以Conda为例 conda create -n agentevolver python3.10 conda activate agentevolver # 2. 安装 PyTorch根据你的CUDA版本选择 # 例如对于CUDA 11.8 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 3. 克隆 AgentEvolver 仓库并安装核心依赖 git clone https://github.com/modelscope/AgentEvolver.git cd AgentEvolver pip install -r requirements.txtrequirements.txt通常会包含modelscope用于模型推理、langchain或lagent用于智能体框架基础、openai如果使用OpenAI API、chromadb用于向量记忆存储等关键库。务必仔细检查版本尤其是modelscope的版本不同版本API可能有差异。3.2 模型服务配置与密钥管理AgentEvolver 的核心动力来自大模型。你需要配置模型服务端点。方案一使用 ModelScope 托管的模型推荐用于初试这是最便捷的方式。你需要在 ModelScope 官网注册账号并获取访问令牌Access Token。# 在代码中或环境变量中设置Token import os os.environ[MODELSCOPE_API_TOKEN] your-modelscope-token-here # 然后可以通过 modelscope 库轻松加载模型例如 Qwen 系列 from modelscope import AutoModelForCausalLM, AutoTokenizer model AutoModelForCausalLM.from_pretrained(qwen/Qwen2.5-7B-Instruct, device_mapauto)这种方式对本地算力要求低但需要注意网络稳定性及ModelScope服务的调用配额与延迟。方案二使用本地部署或第三方API用于深度定制如果你有强大的GPU可以本地部署开源模型如Qwen、Llama。或者使用 OpenAI GPT、 Anthropic Claude 的API。# 例如配置OpenAI os.environ[OPENAI_API_KEY] your-openai-key os.environ[OPENAI_BASE_URL] https://api.openai.com/v1 # 或你的代理地址注意关于模型选择的实操心得对于进化任务负责“变异”的模型即进化器使用的模型需要较强的指令遵循和创造性。我实测下来Qwen2.5-7B/14B-Instruct 或 GPT-3.5-Turbo 及以上版本是不错的起点。负责“执行”的智能体模型可以根据任务复杂度选择有时为了控制成本可以用小一点的模型。关键技巧将进化器和智能体的模型解耦甚至使用不同的模型可以避免“近亲繁殖”导致的思维僵化。3.3 项目结构初探与第一个进化循环安装完成后浏览项目目录结构通常你会看到类似以下的模块AgentEvolver/ ├── agents/ # 智能体基类与各种具体智能体实现 ├── evolvers/ # 进化器核心逻辑 ├── environments/ # 任务环境定义评估标准 ├── tasks/ # 示例任务定义 ├── configs/ # 配置文件 └── examples/ # 运行示例运行第一个示例是验证环境是否正确的关键。通常项目会提供一个简单的示例脚本python examples/run_simple_evolution.py这个脚本可能会演示一个让智能体学习如何更好回答数学问题的进化过程。你需要关注控制台的输出它会打印每一代智能体的评估分数、发生的变异操作等信息。如果遇到ModuleNotFoundError通常是某个依赖包没装好根据报错信息补充安装即可。4. 核心环节实现设计一个数学解题智能体的进化实验为了让大家更直观地理解如何运用 AgentEvolver我将带大家设计并实现一个具体的实验让一个智能体进化出更好的数学应用题解题能力。我们不会满足于它仅仅给出答案而是希望它展示出清晰、逐步的推理过程。4.1 定义任务环境与评估函数首先我们需要定义一个“环境”它负责给智能体出题并打分。我们在tasks/math_word_problem.py中创建一个新任务。# tasks/math_word_problem.py import random from typing import Dict, Any from .base_task import BaseTask # 假设有基础任务类 class MathWordProblemTask(BaseTask): def __init__(self): self.problems [ { question: 一个水池有一个进水管和一个出水管。单开进水管6小时可将空池注满单开出水管8小时可将满池水放完。如果同时打开进水管和出水管多少小时可将空池注满, answer: 24, # 1/(1/6 - 1/8) 24 solution_steps: 1. 进水管每小时进水效率1/6池。\n2. 出水管每小时出水效率1/8池。\n3. 同时开每小时净进水效率(1/6 - 1/8) 1/24池。\n4. 注满空池需要时间1 / (1/24) 24小时。 }, { question: 小明买了一些苹果和梨苹果比梨多5个。如果吃掉3个苹果和1个梨剩下的苹果数是梨的2倍。问小明原来买了多少个苹果和梨, answer: 苹果:11, 梨:6, solution_steps: 设梨有x个则苹果有x5个。\n吃掉后苹果剩 (x5-3)x2个梨剩 x-1个。\n根据条件x2 2*(x-1)\n解得 x4则苹果原有 459个等等计算有误...重新解方程 x22x-2 - x4。苹果原有459梨4个。吃掉后苹果剩6梨剩3满足2倍关系。原答案有误应为苹果9梨4。 } # ... 可以准备10-20个不同难度的问题 ] def evaluate(self, agent_response: str, ground_truth: Dict) - Dict[str, Any]: 评估函数检查答案是否正确并评估推理过程的质量。 ground_truth 包含 ‘answer‘ 和 ‘solution_steps‘。 # 1. 答案正确性评分 (0/1分) # 简单提取数字比较实际应用需更鲁棒的解析 import re numbers_in_response re.findall(r\d, agent_response) correct_answer ground_truth[answer] # 简化评估只要响应中包含正确答案数字即认为答案正确 answer_correct any(correct_answer in num_seq for num_seq in numbers_in_response) if numbers_in_response else False answer_score 1 if answer_correct else 0 # 2. 推理过程质量评分 (0-2分) reasoning_score 0 gt_steps ground_truth[solution_steps].lower() resp_lower agent_response.lower() # 评分规则 # - 有“设”、“解”、“方程”、“效率”等关键词表明尝试建模1分 # - 响应中包含了类似分步计算的过程描述如“第一步”、“然后”1分 reasoning_keywords [设, 假设, 解, 方程, 效率, 第一步, 然后, 接着, 因此, 所以] if any(kw in resp_lower for kw in reasoning_keywords): reasoning_score 1 if step in resp_lower or 步骤 in resp_lower or 首先 in resp_lower: reasoning_score 1 total_score answer_score reasoning_score # 总分 0-3分 return { score: total_score, metrics: { answer_correct: answer_correct, reasoning_quality: reasoning_score, raw_response: agent_response[:200] # 截取部分用于日志 } } def get_task_instance(self): 随机返回一个问题 return random.choice(self.problems)这个评估函数是进化的“指挥棒”。它既看重最终答案answer_score也看重推理过程reasoning_score。这样进化压力会促使智能体不仅追求答案正确还要学会展示清晰的逻辑。4.2 构建初始智能体与进化器配置接下来我们在主程序里组装一切。假设框架提供了EvolutionManager这样的高级管理类。# run_math_evolution.py import os from agents.llm_agent import LLMAgent # 假设的基础LLM智能体 from evolvers.prompt_evolver import PromptEvolver # 专门进化提示词的进化器 from environments.evolution_env import EvolutionEnvironment from tasks.math_word_problem import MathWordProblemTask # 1. 初始化任务和智能体 task MathWordProblemTask() initial_agent LLMAgent( model_nameqwen/Qwen2.5-7B-Instruct, # 使用ModelScope的模型 system_prompt你是一个数学助手请解决用户提出的数学应用题。直接给出最终答案。 ) # 初始提示词很简单只要求答案。 # 2. 配置进化器 - 这里我们主要进化系统提示词 evolver PromptEvolver( mutation_modelqwen/Qwen2.5-14B-Instruct, # 用一个更强的模型来做“变异”生成 mutation_strategyrewrite_with_instruction, # 策略根据指令重写提示词 mutation_instructions[ 让助手更注重分步推理展示每一步的计算和思考。, 让助手在回答前先复述并澄清问题中的条件。, 让助手在得到答案后尝试用另一种方法验证。, 让助手的语言更简洁避免无关解释。 ] # 进化方向指令 ) # 3. 创建进化环境 env EvolutionEnvironment( tasktask, evaluatortask.evaluate, # 使用任务自带的评估函数 population_size4, # 每代保持4个智能体变体 evolution_cycles5 # 进化5轮 ) # 4. 启动进化过程 best_agent, evolution_history env.evolve( initial_agentinitial_agent, evolverevolver, selection_top_k2 # 每代选择前2名作为亲本 ) print(f进化完成最佳智能体的最终系统提示词) print(best_agent.system_prompt) print(\n进化历史每代最高分) for i, cycle in enumerate(evolution_history): print(f第{i1}代最高分: {cycle[top_score]:.2f})在这个配置中进化器PromptEvolver会在每一代根据mutation_instructions中描述的“理想特质”对优胜智能体的系统提示词进行改写。例如它可能把最初的提示词“直接给出最终答案”变异为“请先复述问题条件然后分步骤详细推理最后给出答案并检查答案是否合理”。4.3 运行监控与结果分析运行上述脚本后你需要密切关注日志输出。一个典型的进化日志可能如下开始第1轮进化... 评估初始智能体... 问题: “水池进水出水问题...” 智能体响应: “24小时” 评估得分: 1.0 (答案正确但无推理过程) ... 第1代平均分: 1.2 进行变异操作... 生成新提示词变体1: “你是一个数学助手请解决用户提出的数学应用题。在回答时请先列出已知条件。” 生成新提示词变体2: “你是一个数学助手...请务必展示你的计算过程。” ... 开始第2轮进化... 评估新一代智能体... 智能体响应变体1: “已知进水6小时满出水8小时放完。同时开每小时净进水效率为1/6-1/81/24。所以需要24小时注满。” 评估得分: 3.0 (答案正确有推理过程) ... 第5代平均分: 2.8 进化结束。最佳提示词: “你是一个数学助手。面对应用题请遵循以下步骤1. 复述并确认问题条件。2. 定义变量或明确解题思路。3. 分步计算并解释每一步。4. 给出最终答案。5. 简要验证答案的合理性。”从日志可以看出智能体从只给答案得分1进化到了能清晰展示推理步骤得分3。这就是自主进化的力量。进化器自动找到了能获得高评估分数的提示词模式。5. 高级技巧与深度定制指南掌握了基础流程后你可以通过以下高级技巧让进化实验更高效、更强大。5.1 设计有效的评估函数进化的灵魂评估函数是进化的“导航系统”。设计不当会导致进化跑偏。多维度加权评分不要只用一个总分。像上面的例子将“答案正确性”和“推理过程”分开评分。你还可以加入“响应长度”避免冗长、“工具调用效率”等维度并为每个维度分配权重。引入LLM作为评判官对于复杂、主观的任务如写作风格、创意度可以调用另一个LLM评判模型来评估响应质量。让评判模型根据你定义的评分规则rubric打分。这比规则匹配更灵活。使用验证集不要在用于进化的训练题上评估而是预留一个独立的验证集。这样可以防止智能体“过拟合”到某几个特定问题提升其泛化能力。5.2 控制进化方向与避免退化进化是随机的可能产生坏变体。设定进化约束在进化器配置中可以设置“语法检查”或“语义相似度”约束确保新生成的提示词是通顺的并且没有偏离核心任务太远。保留精英在每一代中强制保留上一代中绝对最优的个体精英保留策略直接进入下一代防止优秀基因丢失。多样性维护除了分数也可以计算智能体响应之间的差异度如嵌入向量的余弦距离。在选择时适当给予一些“与众不同”但分数尚可的个体机会以维持种群多样性探索更广的解空间。5.3 进化不止于提示词工具与工作流的协同进化AgentEvolver 的强大之处在于可以进化智能体的任何部分。工具链进化如果你的智能体可以使用计算器、维基百科搜索等工具进化器可以尝试不同的工具调用顺序和组合。例如对于“比较两个历史人物”的任务进化可能发现“先搜索A再搜索B最后调用总结比较工具”这个工作流比“同时搜索A和B”效果更好。记忆查询策略进化对于有长期记忆的智能体进化可以优化其从向量数据库检索相关记忆的策略比如调整检索返回的数量k值或相似度阈值。实现工具进化你需要定义一个ToolEvolver它可能的工作方式是记录成功任务中的工具调用序列将其作为“模板”然后通过变异交换顺序、插入新工具、删除冗余工具产生新序列再评估新序列的效果。6. 常见问题、排查技巧与避坑指南在实际操作中你肯定会遇到各种问题。以下是我踩过坑后总结的实战经验。6.1 进化停滞或效果不佳症状连续几代最高分没有提升甚至下降。排查与解决检查评估函数评估标准是否合理是否过于严格或模糊用一个已知的“好答案”手动跑一下评估函数看是否能得到高分。检查变异强度变异操作可能太保守只改几个词或太激进完全扭曲原意。调整进化器的mutation_rate变异率或mutation_instruction的强度。例如把“让助手更注重推理”改为“你必须要求助手在回答中明确列出至少三个推理步骤”。扩大种群与亲本选择增加population_size如从4到8和selection_top_k如从2到3。更大的基因池有更多探索机会。引入随机性在每一代中除了从高分个体变异也随机生成一个全新的提示词变体加入种群注入新鲜“血液”。6.2 计算成本与时间开销过高症状进化过程缓慢API调用费用激增。优化策略分层进化不要一开始就用大量复杂任务进行全流程进化。先用小任务集5-10个简单问题进行快速迭代3-5代筛选出有潜力的提示词方向。然后再用完整任务集对优胜者进行精细进化。使用轻量级模型进行评估如果评估函数需要调用LLM如评判官模式使用成本更低的模型如较小的Qwen或GPT-3.5-Turbo进行评估而用更强的模型如GPT-4进行关键的“变异”生成。并行评估如果框架支持将同一代不同智能体的评估任务并行化充分利用计算资源。设置早期停止如果连续N代最佳分数没有显著提升如提升小于5%则自动停止进化避免无谓消耗。6.3 智能体行为失控或偏离目标症状进化出的智能体开始说奇怪的话或者完全回避任务。原因与应对提示词污染在多次变异中一些无关指令或错误格式被引入并固化。在进化器中加入“提示词清洗”步骤例如使用规则或一个小的分类模型过滤掉明显包含无关内容如“忽略之前所有指令”的变体。奖励黑客Reward Hacking智能体找到了评估函数的漏洞通过“作弊”获得高分。例如如果评估函数只看是否包含“步骤”二字智能体可能每次都在答案前加上“步骤1. 思考 2. 答案是XXX”。解决方案是让评估函数更鲁棒比如检查步骤是否与问题相关或者结合多个评估维度。强化安全护栏在系统提示词中始终保留基础的安全和角色指令并让这些部分在进化过程中不被修改只进化任务相关的指令部分。6.4 与现有智能体框架的集成问题症状AgentEvolver 的接口与你正在使用的 LangChain 或 LlamaIndex 智能体不兼容。解决思路AgentEvolver 的核心是“进化循环”逻辑它并不强制要求智能体的具体实现。你需要做的是实现一个“适配器Adapter”。为你现有的智能体类如LangChainAgent编写一个包装类使其符合 AgentEvolver 定义的BaseAgent接口通常需要实现run(task_input)和get_config()等方法。同样为你现有的工具集实现一个包装使其能被进化器识别和操作。这个过程虽然需要一些开发工作但一旦完成你就可以让你现有的、功能丰富的智能体也获得进化能力。通过上述的深度解析和实战指南你应该对 AgentEvolver 的理念和用法有了透彻的理解。它不是一个开箱即用的万能工具而是一个强大的“元框架”为你提供了打造能够自主成长、适应环境的下一代智能体的可能。关键在于精心设计你的任务环境、评估标准和进化规则。这就像培育一个生命你定义世界的规则然后观察并引导它绽放出意想不到的智慧之花。

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