AI智能体技能开发实战:从awesome-agent-skills到高效智能体构建

news2026/5/18 23:43:43
1. 项目概述从技能清单到智能体构建的实战指南最近在折腾AI智能体Agent开发的朋友估计都绕不开一个名字awesome-agent-skills。这个由VoltAgent维护的开源项目乍一看就是个GitHub上常见的“Awesome”系列清单无非是收集了一些工具和资源。但如果你真这么想那就错过了它最核心的价值。在我实际用它来构建和优化了几个智能体项目后我发现它远不止是一个简单的列表而是一份关于“如何让AI智能体真正具备解决问题能力”的实战地图。简单来说awesome-agent-skills系统性地梳理和分类了当前AI智能体所需的各种“技能”Skills。你可以把它理解为一个智能体的“技能树”或者“工具箱”目录。在智能体的世界里一个强大的模型比如GPT-4只是提供了基础的“大脑”和“通用知识”但要让它完成具体的任务——比如分析一份财报、自动回复邮件、或是控制智能家居——它就需要调用外部的工具、访问特定的数据、执行一系列的操作流程。这些调用、访问和操作的能力就是所谓的“技能”。这个项目所做的就是把散落在各处的、优秀的技能实现方案、开源工具和最佳实践分门别类地收集和展示出来让开发者不用再从零开始造轮子。对于开发者而言这个项目的价值在于极大地降低了智能体开发的复杂度和启动成本。以前要做一个能联网搜索的智能体你得自己去研究搜索引擎的API、处理认证、解析返回的HTML要做个能处理Excel的智能体你得去封装pandas库。现在你可以直接在这个清单里找到现成的、经过验证的技能实现快速集成到你的智能体框架比如LangChain、AutoGen、CrewAI中。它解决的核心问题是“能力集成”的标准化和效率问题。无论你是想快速搭建一个原型还是为一个成熟产品寻找某个特定功能的优化方案这里都可能藏着答案。接下来我将结合自己的使用经验为你深度拆解这个项目并分享如何将其转化为你的生产力。2. 项目核心架构与技能分类逻辑2.1 技能体系的顶层设计从原子操作到复杂工作流awesome-agent-skills的组织结构非常清晰它没有采用简单的字母顺序排列而是按照技能的“功能域”和“抽象层级”进行划分。这种分类方式本身就体现了对智能体能力构成的深刻理解。通常我们可以将技能分为几个大的层次基础工具调用技能这是最原子化的能力。例如执行一个Shell命令、调用一个HTTP API、读写本地文件、进行数学计算。这类技能是智能体与外部世界交互的“手和脚”。项目里会收录像subprocess调用封装、requests库的最佳实践模板等。垂直领域应用技能这类技能针对特定的专业领域封装了复杂的业务逻辑。比如网络与搜索使用DuckDuckGo或SerpAPI进行网页搜索解析搜索结果摘要。数据处理与分析使用pandas进行数据清洗使用matplotlib或plotly生成图表调用SQLAlchemy查询数据库。办公自动化读写和编辑Word、Excel、PDF文档解析电子邮件管理日历事件。多媒体处理使用PILPillow处理图片使用moviepy处理视频使用whisper进行语音识别。平台与生态集成技能这类技能让智能体能够融入现有的软件生态。例如操作GitHub仓库创建PR、管理Issue、发送Slack消息、在Jira中创建任务、操作AWS/Azure/GCP的云服务资源。这类技能通常需要处理OAuth等复杂的认证流程。高级认知与规划技能这属于更上层的“元技能”。例如让智能体学会使用“链式思考”Chain-of-Thought来分解复杂问题或者具备“工具学习”能力——即根据任务描述自动选择并组合使用已有的工具技能。项目可能会收录一些实现ReActReasoning Acting模式、或基于LangChain的AgentExecutor的优秀范例。项目的README或目录结构通常会映射这些分类让开发者能按图索骥。例如你可能会看到/skills/web_search,/skills/data_analysis,/skills/office_automation这样的文件夹。注意技能的分类不是绝对的一个复杂的技能如“生成季度销售报告”可能由多个基础技能数据查询、图表生成、文档编写组合而成。awesome-agent-skills的价值在于提供了这些可组合的“乐高积木”。2.2 技能清单的典型内容构成不止于代码打开这个项目下的任意一个技能目录你得到的往往不只是一个代码片段。一个高质量的技能条目通常包含以下要素这也是评估一个技能是否“好用”的关键清晰的功能描述用一两句话说明这个技能是干什么的输入输出是什么。例如“本技能调用WolframAlpha API解答数学计算、单位换算、事实查询等问题。”完整的依赖说明列出所需的Python包requirements.txt或pyproject.toml片段以及任何系统依赖。详尽的配置指南如何获取API密钥如OpenAI、SerpAPI如何设置环境变量配置文件示例。这是新手最容易踩坑的地方。核心代码实现一个可运行的函数或类封装了主要的逻辑。代码应有良好的注释关键参数有说明。使用示例提供1-2个完整的调用示例展示如何初始化技能并传入参数。最好的示例还会展示可能的返回结果。集成示例展示如何将该技能接入流行的智能体框架如LangChain的Tool类或是AutoGen的AssistantAgent。注意事项与常见错误分享作者在开发和使用中遇到的坑比如API的速率限制、返回数据的格式处理、错误处理的最佳实践等。这种结构使得每个技能条目都是一个“微型的开源项目”具备开箱即用的潜力。开发者要做的不是阅读理解复杂的源码而是“复制-粘贴-配置-运行”。3. 核心技能解析与选型实战3.1 网络搜索技能智能体的“眼睛”让智能体获取实时信息网络搜索是首要技能。awesome-agent-skills里通常会收录多种搜索方案的实现。1. 方案对比与选型技能方案核心工具/API优点缺点适用场景直接搜索APISerpAPI, Serper.dev结果结构化好稳定可靠绕过反爬通常为付费服务有调用次数限制生产环境对结果质量和稳定性要求高无头浏览器Playwright, Selenium能模拟真人操作应对复杂JS渲染页面资源消耗大速度慢容易被封需要抓取动态加载内容或模拟登录后的操作轻量级HTTP请求DuckDuckGo Search,googlesearch-python免费简单快捷结果可能不稳定易受反爬影响结构化程度低原型开发、轻度搜索需求、学习用途2. 以Serper.dev为例的集成实操Serper.dev是一个性价比很高的搜索API提供Google搜索的结构化结果。假设我们想在LangChain中集成它。首先根据技能清单的指引安装依赖并获取API Keypip install google-search-results # 或者直接使用requests # 前往 serper.dev 注册获取免费额度API KEY接着参照项目提供的代码封装一个搜索函数import os import requests from typing import Dict, Any, List def serper_search(query: str, api_key: str None, gl: str us, hl: str en) - List[Dict[str, Any]]: 使用Serper API进行Google搜索。 返回一个包含‘title’, ‘link’, ‘snippet’的字典列表。 if api_key is None: api_key os.getenv(SERPER_API_KEY) if not api_key: raise ValueError(请设置SERPER_API_KEY环境变量或传入api_key参数) url https://google.serper.dev/search headers { X-API-KEY: api_key, Content-Type: application/json } payload { q: query, gl: gl, # 国家代码如‘us’ ‘cn’ hl: hl # 语言代码如‘en’ ‘zh-cn’ } try: response requests.post(url, headersheaders, jsonpayload, timeout10) response.raise_for_status() data response.json() # 解析有机搜索结果 organic_results data.get(organic, []) simplified_results [] for item in organic_results: simplified_results.append({ title: item.get(title, ), link: item.get(link, ), snippet: item.get(snippet, ) }) return simplified_results[:5] # 返回前5条结果 except requests.exceptions.RequestException as e: return [{error: f搜索请求失败: {str(e)}}] except KeyError as e: return [{error: f解析API响应失败: {str(e)}}]最后将其转化为LangChain的Tool以便智能体调用from langchain.tools import Tool search_tool Tool( nameGoogle搜索, funcserper_search, description当您需要回答有关近期事件或特定信息的问题时使用此工具。输入一个明确的搜索查询词。 )实操心得对于搜索技能结果的数量和质量平衡是关键。不要一次性给智能体返回几十条结果这会导致上下文窗口被迅速耗尽且智能体可能无法抓住重点。通常返回3-5条最相关的结果摘要即可。另外务必做好错误处理和速率限制免费的API额度很容易在调试阶段耗尽。3.2 代码执行与文件操作技能智能体的“手”这是智能体实现自动化最关键的一环。awesome-agent-skills中关于代码执行的技能核心是解决安全性与灵活性的矛盾。1. 安全沙箱的选择绝对不能在主进程中直接执行未经审查的代码尤其是来自用户或LLM生成的代码。常见的方案有Docker容器最安全隔离性最好。可以为每个代码执行任务启动一个临时容器执行完毕后销毁。缺点是启动较慢资源消耗大。pysandbox/restrictedpython在Python解释器层面进行限制禁用危险模块如os,sys,subprocess。配置复杂且可能存在未知的逃逸漏洞。code_interpreter模式类似OpenAI Code Interpreter的思路在一个受控的、预装了常用科学计算库numpy,pandas,matplotlib的环境中执行。awesome-agent-skills可能会提供一个轻量级的本地实现参考。2. 一个安全的代码执行技能实现要点以下是一个基于subprocess和临时文件的简化示例强调了安全措施import subprocess import tempfile import os import shutil from pathlib import Path def execute_python_code(code: str, timeout: int 30) - dict: 在隔离的临时目录中安全地执行Python代码。 返回包含输出、错误和执行状态的字典。 # 1. 创建临时工作目录 temp_dir tempfile.mkdtemp(prefixagent_code_) result {output: , error: , success: False, temp_dir: temp_dir} code_file_path Path(temp_dir) / user_code.py # 2. 可选进行简单的危险代码检测 - 这是一个非常基础的示例 dangerous_patterns [os.system, subprocess.Popen, __import__(os), open(/etc/, eval(] for pattern in dangerous_patterns: if pattern in code: result[error] f代码包含潜在危险操作: {pattern} shutil.rmtree(temp_dir, ignore_errorsTrue) return result try: # 3. 将代码写入文件 code_file_path.write_text(code, encodingutf-8) # 4. 在子进程中执行并严格限制资源和时间 # 注意这里使用系统的python实际生产环境应使用定制化的docker容器或更严格的沙箱 process subprocess.run( [python, str(code_file_path)], cwdtemp_dir, capture_outputTrue, textTrue, timeouttimeout, shellFalse # 必须为False避免shell注入 ) result[output] process.stdout result[error] process.stderr result[success] (process.returncode 0) except subprocess.TimeoutExpired: result[error] f代码执行超时{timeout}秒 except Exception as e: result[error] f执行过程发生异常: {str(e)} finally: # 5. 清理临时目录生产环境可能延迟清理以供调试 try: shutil.rmtree(temp_dir, ignore_errorsTrue) result[temp_dir] None except: pass return result3. 文件操作技能文件操作通常与代码执行结合。技能清单会提供安全读写文件、遍历目录、处理不同格式JSON, YAML, CSV的范例。核心原则是将操作限制在智能体被授权的特定工作区内绝对禁止任意路径访问。AGENT_WORKSPACE Path(/safe/agent/workspace) # 定义一个安全的工作区根目录 def read_file_safely(file_path: str) - str: 安全地读取工作区内的文件 full_path (AGENT_WORKSPACE / file_path).resolve() # 关键安全检查确保目标路径在工作区内 if not str(full_path).startswith(str(AGENT_WORKSPACE.resolve())): raise PermissionError(禁止访问工作区之外的文件路径。) if not full_path.is_file(): raise FileNotFoundError(f文件未找到: {file_path}) return full_path.read_text(encodingutf-8)4. 基于技能清单构建专属智能体的完整流程4.1 需求分析与技能映射假设我们要构建一个“技术调研助手”其核心功能是根据一个技术话题如“向量数据库的最新进展”自动搜索相关文章、博客和论文总结核心观点并生成一份格式良好的Markdown报告。我们需要将需求拆解为具体的技能信息获取网络搜索技能使用Serper API。内容提取网页抓取与正文提取技能可能使用readability或newspaper3k库。信息处理文本摘要与关键信息提取技能调用LLM API如OpenAI GPT或本地模型。报告生成Markdown文件编写技能使用文件操作技能。流程控制规划与决策技能由智能体框架如LangChain的Agent负责。我们可以在awesome-agent-skills中寻找技能1、2、4的成熟实现对于技能3我们可以基于LLM调用基础技能进行构建。4.2 技能集成与智能体组装以LangChain为例LangChain提供了优秀的工具Tool和代理Agent抽象。我们的工作就是将找到的技能“包装”成LangChain的Tool。from langchain.agents import initialize_agent, AgentType from langchain.llms import OpenAI # 或ChatOpenAI from langchain.memory import ConversationBufferMemory from langchain.tools import Tool import os # 1. 封装从awesome-agent-skills中找到或自建的技能 # 假设我们已经有了以下函数 from my_skills import serper_search, extract_webpage_content, write_markdown_file search_tool Tool( name技术搜索, funclambda q: serper_search(q, api_keyos.getenv(SERPER_API_KEY)), description用于搜索互联网上的技术文章、博客和文档。输入一个明确的技术话题查询词。 ) fetch_tool Tool( name获取网页正文, funcextract_webpage_content, description给定一个具体的URL获取该网页的清洁正文内容去除广告和导航栏。 ) write_tool Tool( name撰写报告, funcwrite_markdown_file, description将内容写入Markdown文件。输入一个包含‘filepath’和‘content’键的JSON字符串。 ) # 2. 定义LLM和记忆 llm OpenAI(temperature0, openai_api_keyos.getenv(OPENAI_API_KEY)) memory ConversationBufferMemory(memory_keychat_history, return_messagesTrue) # 3. 定义工具列表 tools [search_tool, fetch_tool, write_tool] # 4. 初始化智能体代理 # 使用ZERO_SHOT_REACT_DESCRIPTION它会引导LLM按照“思考-行动-观察”的循环使用工具 agent initialize_agent( tools, llm, agentAgentType.ZERO_SHOT_REACT_DESCRIPTION, memorymemory, verboseTrue, # 开启详细日志方便调试 handle_parsing_errorsTrue # 优雅处理LLM输出解析错误 ) # 5. 运行智能体 prompt 请调研‘向量数据库的最新进展2023-2024’。 你需要 1. 搜索相关的技术文章和资讯。 2. 选取3-5篇最有价值的文章获取其详细内容。 3. 分析并总结出核心趋势、主要玩家公司/产品和关键技术挑战。 4. 将最终总结生成一份名为‘vector_db_latest.md’的Markdown报告。 请一步步执行。 result agent.run(prompt)4.3 调试与效果优化智能体在初次运行时很可能不会完美执行。你需要观察其“思考过程”verboseTrue时的输出常见问题包括工具选择错误智能体可能错误理解了工具的描述。你需要精炼工具的描述使其更精确、无歧义。例如将“搜索东西”改为“在互联网上搜索最新的技术新闻和文章”。参数格式错误智能体可能无法生成工具所需的正确输入格式如JSON。你可以在工具函数内部增加更健壮的解析逻辑或者使用LangChain的StructuredTool来定义输入模式。陷入循环智能体可能在一个步骤上反复尝试失败。你需要设置max_iterations参数来限制最大步骤数防止无限循环并在提示词中给出更清晰的步骤指引。信息整合能力弱智能体可能只是罗列搜索片段无法深度总结。这需要优化提示词工程在最终生成报告的指令中明确要求“对比分析”、“归纳共性”、“指出差异”。5. 进阶应用技能组合与自定义技能开发5.1 构建复合技能Macro Skill当基本技能稳定后我们可以将一系列固定步骤封装成一个更高级的“复合技能”供智能体直接调用。这类似于编程中的函数封装。例如将“搜索-提取-摘要”打包成一个research_topic技能from langchain.chains import LLMChain from langchain.prompts import PromptTemplate def research_topic(topic: str, llm_chain) - str: 研究一个话题搜索、抓取、总结。 # 1. 搜索 search_results serper_search(f{topic} 最新进展 2024) if not search_results or error in search_results[0]: return f搜索话题‘{topic}’失败。 # 2. 抓取并总结简化示例实际应并行处理并控制token数 summaries [] for i, result in enumerate(search_results[:3]): url result.get(link) if url: content extract_webpage_content(url)[:3000] # 限制内容长度 # 使用LLM进行摘要 summary_prompt f请用中文简要总结以下关于‘{topic}’的内容列出2-3个核心点\n\n{content} summary llm_chain.run(summary_prompt) summaries.append(f来源{i1}: {url}\n摘要: {summary}\n) # 3. 综合所有摘要 final_prompt f你是一位技术分析师。以下是关于‘{topic}’的多个来源信息摘要\n\n{.join(summaries)}\n\n请整合以上信息生成一份全面的综述突出主要趋势和发现。 final_report llm_chain.run(final_prompt) return final_report # 将这个复合技能包装成Tool research_tool Tool( name深度技术调研, funclambda t: research_topic(t, my_llm_chain), description对一个技术话题进行深度调研自动搜索、阅读并生成综述报告。输入一个技术话题名称。 )5.2 开发自定义技能的最佳实践当awesome-agent-skills中没有你需要的技能时你需要自己开发。遵循以下实践能让你的技能更容易被集成和复用定义清晰的接口技能函数应该有明确的输入参数最好有类型注解和输出。输出格式应尽可能标准化如返回字典包含success、data、error字段。实现完善的错误处理预料到所有可能失败的情况网络超时、API限流、无效输入并返回有意义的错误信息而不是抛出未处理的异常。编写详细的文档字符串Docstring说明功能、参数、返回值、示例以及可能的异常。这本身就是给未来使用该技能的LLM的提示。进行依赖隔离在技能模块的开头try...import所需的第三方库并在失败时给出清晰的提示告诉用户如何安装。提供配置范例创建一个config.example.yaml或.env.example文件展示如何配置API密钥等敏感信息。考虑贡献回馈如果你的技能通用性很强不妨按照awesome-agent-skills的格式整理为其提交一个Pull Request让更多人受益。6. 常见问题排查与效能优化6.1 智能体执行问题排查表问题现象可能原因排查步骤与解决方案智能体不调用工具一直“空想”1. 工具描述不清晰。2. LLM温度temperature过高导致输出随机。3. 提示词未明确要求使用工具。1. 检查并重写工具描述确保其目的明确。2. 将temperature设为0或较低值如0.1。3. 在系统提示词或用户初始提示中强调“你必须使用提供的工具来完成任务”。工具调用参数格式错误1. LLM未能理解工具所需的输入格式。2. 工具函数对输入校验不严。1. 在工具描述中明确输入格式例如“输入应该是一个明确的搜索查询字符串”。2. 使用StructuredTool定义输入Schema。3. 在工具函数内部添加预处理逻辑尝试解析和清理输入。智能体陷入重复或无效循环1. 任务过于复杂智能体迷失。2. 工具返回的结果未能提供有效信息。1. 在提示词中分解任务步骤。2. 设置max_iterations如15限制。3. 优化工具函数确保其返回结构清晰、信息丰富的结果。例如搜索工具应返回标题和摘要而不仅仅是链接。执行速度慢1. 串行调用工具尤其是网络请求类工具。2. LLM本身响应慢。1. 对于可并行的操作如同时抓取多个网页在复合技能内部使用asyncio或线程池实现并发。2. 考虑使用更快的LLM API或本地模型。对中间步骤的思考过程可使用更小、更快的模型。Token消耗巨大成本高1. 工具返回的内容如网页全文过长全部塞入了上下文。2. 对话历史未做摘要越来越长。1.在工具端做摘要例如网页抓取工具不应返回全文而是先调用LLM提取关键段落后再返回。2. 使用ConversationSummaryMemory或ConversationBufferWindowMemory来限制历史长度。3. 定期清空或总结记忆。6.2 性能与成本优化技巧技能结果的预处理与过滤这是最重要的优化手段。不要让原始、冗长的数据直接进入LLM的上下文。例如网页抓取技能应集成简单的正文提取和文本清洗数据库查询技能应限制返回行数并优先返回摘要字段。分层使用LLM采用“大模型指挥小模型干活”的策略。让GPT-4等强大模型负责复杂的规划、决策和总结而让更便宜的模型如GPT-3.5-Turbo或专用小模型处理文本提取、简单分类等任务。缓存机制对于重复的查询或计算引入缓存。例如对相同的搜索关键词可以缓存搜索结果一段时间。可以使用functools.lru_cache装饰器实现简单的内存缓存或使用Redis等外部缓存。异步执行如前所述将独立的IO密集型技能调用如并发请求多个API改为异步可以大幅缩短整体运行时间。设置预算与熔断为智能体的运行设置预算例如最大Token消耗数、最大工具调用次数、最长运行时间。一旦超限立即终止任务避免意外的高成本。在我自己的项目中通过实施“结果预处理”和“分层LLM”策略将一个智能体每日分析报告的API成本降低了约70%同时运行速度提升了一倍。关键在于始终意识到LLM的上下文是宝贵且昂贵的资源每一个送入上下文的字符都应该是精炼过的、高价值的信息。awesome-agent-skills项目为你提供了强大的武器库但如何将这些武器组合成有效的战术并高效地指挥它们才是构建卓越AI智能体的真正艺术。从选择一个核心技能开始集成逐步迭代你的智能体记录下每一个遇到的问题和解决方案你会发现这个过程本身就是对你问题拆解、系统设计和工程实现能力的绝佳锻炼。

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