AgenticHub:构建AI智能体的开源框架与核心架构解析

news2026/5/15 7:54:39
1. 项目概述AgenticHub是什么以及它为何值得关注最近在AI应用开发领域一个名为“AgenticHub”的开源项目在GitHub上引起了不小的讨论。这个由victordedomenico发起的项目定位非常清晰它旨在成为一个构建、编排和管理AI智能体Agent的“中心枢纽”。如果你正在尝试将大语言模型LLM的能力从简单的聊天对话升级为能够自主执行复杂任务、具备记忆和工具调用能力的智能体那么AgenticHub很可能就是你一直在寻找的那个“脚手架”或“框架”。简单来说AgenticHub解决的核心痛点是“智能体开发的碎片化”。现在基于OpenAI、Anthropic、Google等公司的API开发者可以轻松调用强大的模型。但如何让这些模型记住上下文如何让它们按顺序或根据条件执行一系列动作比如先搜索网页再分析结果最后生成报告如何管理不同智能体之间的协作这些问题的解决方案往往需要开发者从零开始搭建一套复杂的逻辑和状态管理系统。AgenticHub的出现就是为了封装这些通用且复杂的模式提供一个开箱即用、可扩展的底层架构让开发者能更专注于业务逻辑和智能体能力的定义而不是重复造轮子。它适合谁呢首先是AI应用开发者尤其是那些希望将LLM能力产品化构建具备自动化工作流、个性化助手或复杂决策支持系统的团队。其次对于研究AI智能体架构的研究者或学生AgenticHub提供了一个高质量的参考实现可以快速实验不同的智能体范式。最后对于技术管理者理解这类框架有助于评估团队在AI应用开发上的技术选型避免在基础设施上投入过多精力。2. 核心架构与设计哲学拆解2.1 从“单次对话”到“持续智能体”的范式转变要理解AgenticHub的价值首先要明白传统LLM调用与智能体系统的根本区别。传统的聊天应用每次请求都是独立的、无状态的。用户问“今天天气如何”模型回答用户再问“那我该穿什么”模型并不知道上一个问题是关于天气的。虽然可以通过在请求中附加历史对话记录来模拟上下文但这只是一种“伪状态”且上下文长度有限逻辑控制薄弱。智能体则不同它被设计成一个拥有“记忆”Memory、“规划”Planning和“工具使用”Tool Use能力的持续实体。AgenticHub的架构正是围绕这三个核心能力构建的。其设计哲学可以概括为“以任务执行为导向的状态机”。在这个框架里一个智能体被定义为一个可以接收输入、访问内部状态记忆、进行思考规划、执行动作调用工具、并根据结果更新状态和决定下一步行动的自治程序。2.2 模块化与松耦合的设计优势浏览AgenticHub的代码仓库你会发现其结构非常清晰遵循了高度的模块化原则。通常它会包含以下几个核心模块智能体核心Agent Core定义了智能体的基本接口和行为。比如一个智能体必须有一个run或execute方法接收输入并返回输出。核心层还定义了智能体的生命周期和基本状态。记忆模块Memory Module负责存储和检索智能体的历史交互、知识片段和临时状态。这里的设计是关键AgenticHub可能会支持多种记忆后端比如简单的短期记忆如对话轮次缓存、向量数据库用于语义搜索长期记忆、甚至是传统的关系型数据库。一个好的记忆系统能让智能体真正“记住”用户偏好、任务上下文和过往经验。工具模块Tools Module这是智能体与外部世界交互的“手”和“脚”。工具可以是任何可执行函数例如调用搜索引擎API、查询数据库、执行一段代码、发送邮件、操作文件系统等。AgenticHub需要提供一个优雅的注册、发现和调用工具的机制。开发者只需按照规范编写工具函数智能体就能在规划时自动识别并调用它们。规划器/执行引擎Planner/Executor这是智能体的“大脑”。它根据当前目标、记忆和可用工具决定下一步该做什么。简单的规划器可能是线性的任务列表复杂的则可能采用ReActReasoning Acting模式、Chain of Thought思维链或者更高级的基于LLM的规划器。执行引擎则负责按规划调用工具处理异常并管理执行流程。编排与协调层Orchestration Layer当任务需要多个智能体协作完成时这一层就至关重要。它定义了智能体之间如何通信、如何传递任务、如何解决冲突。AgenticHub可能提供了类似“工作流”Workflow或“团队”Team的抽象让开发者可以像搭积木一样组合多个智能体。这种松耦合的设计带来了巨大的灵活性。你可以替换默认的记忆实现接入自己的向量数据库可以轻松添加新的工具来扩展智能体的能力也可以实验不同的规划算法而不需要重写整个应用。注意在选择或设计智能体框架时模块间的接口定义是否清晰、文档是否完善是评估其可维护性和长期生命力的关键。一个接口混乱、高度耦合的框架在业务逻辑复杂后会成为技术债的重灾区。3. 核心功能与关键技术点深度解析3.1 智能体的“记忆”是如何实现的记忆是智能体区别于普通聊天机器人的灵魂。AgenticHub在记忆实现上通常会采用分层或分类的策略。对话记忆Conversation Memory存储当前会话的交互历史。这通常以列表的形式保存用户和智能体的消息对。为了适应模型的上下文窗口限制高级的实现会包含“摘要”功能。当对话历史过长时系统会自动调用LLM对之前的对话进行摘要并将摘要作为新的“压缩记忆”存入从而释放上下文空间给最新的交互。在AgenticHub中你可能会看到一个ConversationBufferMemory或ConversationSummaryMemory类。长期记忆Long-term Memory用于存储需要跨会话持久化的知识。这通常通过向量数据库如Chroma、Pinecone、Weaviate实现。当智能体需要回忆某个知识点时它会将当前问题或上下文编码成向量然后在向量数据库中搜索最相关的片段。例如你可以让智能体“记住”公司的产品文档以后用户询问产品细节时它能自动从文档中检索相关信息来辅助回答。实体记忆Entity Memory专门用于记忆对话中提及的特定实体如人名、地点、项目名及其属性。例如用户说“我叫张三喜欢编程”智能体不仅能记住这句话还能从中提取出实体“张三”和属性“喜欢编程”并在后续对话中主动运用如“张三你最近有做什么有趣的编程项目吗”。实操心得在实际项目中不要盲目追求复杂的记忆系统。对于大多数任务型助手一个良好的对话记忆加上基于向量数据库的文档检索作为工具往往比一个全功能的长期记忆系统更简单、更可控。记忆系统的复杂性会直接带来调试难度的指数级上升。3.2 工具调用让智能体从“思考”到“行动”工具调用是将LLM的认知能力转化为实际生产力的桥梁。AgenticHub的工具系统设计通常包含以下要素工具定义每个工具都是一个标准的函数或类方法并有清晰的元数据描述包括工具名称、描述、输入参数模式JSON Schema。这个描述至关重要因为LLM需要根据它来决定是否以及如何调用该工具。# 伪代码示例 tool def get_weather(city: str) - str: 获取指定城市的当前天气。 Args: city: 城市名称例如“北京”、“上海”。 Returns: 包含天气信息的字符串。 # 调用真实天气API return f{city}的天气是...工具发现与注册AgenticHub会提供一个注册中心Registry开发者在应用启动时将工具注册进去。智能体在规划时可以查询注册中心获取可用工具列表及其描述。调用与验证当LLM决定调用某个工具时它会生成一个结构化的调用请求如{tool: get_weather, input: {city: 北京}}。框架需要解析这个请求找到对应的工具函数传入参数并执行。执行前后通常会有参数验证、错误处理和安全检查例如限制工具对文件系统的访问权限。结果处理工具执行的结果会被返回给LLM作为下一步推理的上下文。框架需要设计好结果的格式化方式确保LLM能够理解。关键技术点如何让LLM准确地选择并调用工具这依赖于高质量的提示工程Prompt Engineering。AgenticHub的提示模板中会明确告诉模型可用的工具列表、它们的详细描述和使用范例并指导模型以特定的格式如JSON输出工具调用指令。这部分提示模板的设计是框架的核心竞争力之一。3.3 规划与执行循环ReAct模式及其变体规划是智能体的决策过程。目前最流行且有效的模式之一是ReActReasoning Acting。AgenticHub很可能内置了基于ReAct的执行引擎。在一个典型的ReAct循环中智能体的内部运作如下思考ThinkLLM分析当前情况用户输入、记忆、上一步结果决定下一步应该做什么。它可能会说“用户想了解项目进度我需要先调用查询数据库工具来获取最新数据。”行动Act根据思考结果生成一个具体的工具调用指令。观察Observe执行工具并接收工具返回的结果或错误信息。循环将观察到的结果作为新的输入再次进入“思考”步骤直到智能体认为任务完成最终生成面向用户的自然语言回答。这个循环被封装在AgenticHub的执行引擎中。开发者需要配置的是用于“思考”的LLM模型、可用的工具集、以及控制循环何时终止的条件例如达到最大步数、模型输出了最终答案等。常见问题ReAct循环可能陷入“死循环”或“无意义循环”。比如智能体反复调用同一个工具却得不到进展。这时就需要在引擎中加入超时机制、最大步数限制并在提示词中强调效率引导模型在无法推进时及时承认失败或向用户求助。4. 基于AgenticHub构建一个任务型智能体的完整实操假设我们要构建一个“个人日程管理与信息助理”智能体它能帮用户查日历、安排会议、搜索信息并做简单总结。4.1 环境搭建与项目初始化首先克隆AgenticHub仓库并安装依赖。由于是开源项目我们需要仔细阅读其README.md和requirements.txt。# 假设AgenticHub使用Python git clone https://github.com/victordedomenico/AgenticHub.git cd AgenticHub pip install -r requirements.txt接下来我们需要设置API密钥。智能体框架通常需要接入LLM服务如OpenAI和可能的其他服务如向量数据库。# 在.env文件中设置 export OPENAI_API_KEYyour-api-key-here # 如果使用Pinecone作为向量数据库 export PINECONE_API_KEYyour-pinecone-key export PINECONE_ENVIRONMENTyour-env然后创建一个新的Python文件开始构建我们的智能体。4.2 定义智能体的工具集我们的助理需要以下工具search_web(query): 使用SerpAPI或Exa.ai搜索网络。query_calendar(date_range): 查询Google Calendar API获取日程。add_calendar_event(event_details): 向日历添加新事件。summarize_text(text): 调用LLM对长文本进行摘要。在AgenticHub的范式下我们需要按照其要求的方式定义这些工具。通常框架会提供一个装饰器或基类。# my_assistant.py from agentichub import tool, register_tool import requests from datetime import datetime # 假设有一些现成的API客户端 from google.oauth2 import service_account from googleapiclient.discovery import build tool def search_web(query: str) - str: 使用搜索引擎查询网络信息。 # 这里简化实现实际需调用SerpAPI等 # 返回格式化后的搜索结果摘要 return f关于{query}的搜索结果[模拟数据]... tool def query_calendar(start_time: str, end_time: str) - list: 查询指定时间范围内的日历事件。时间格式为ISO 8601。 # 使用Google Calendar API认证和查询 # 返回事件列表 events [ {title: 团队例会, time: 10:00-11:00}, {title: 与客户通话, time: 15:00-15:30} ] return events tool def add_calendar_event(title: str, start: str, end: str, attendees: list None) - dict: 向日历添加一个新事件。 # 调用API创建事件 event_id event_123 return {status: success, event_id: event_id, message: f已创建事件{title}} tool def summarize_text(text: str, max_length: int 200) - str: 对提供的文本进行摘要限制在指定长度内。 # 这里可以简单调用一个本地摘要模型或者再次使用LLM API # 为简化我们模拟一个摘要 if len(text) max_length: return text[:max_length] ...[已摘要] return text4.3 配置智能体核心与记忆接下来我们使用AgenticHub提供的类来组装智能体。我们需要选择LLM模型、配置记忆系统。from agentichub import Agent, ConversationBufferMemory, ReActPlanner # 1. 初始化记忆 # 使用对话缓冲记忆保留最近5轮对话 memory ConversationBufferMemory(max_turns5) # 2. 初始化规划器指定使用的LLM模型例如GPT-4 # 框架应已内置了与OpenAI等服务的集成 planner ReActPlanner( modelgpt-4, temperature0.1, # 低随机性保证任务执行的稳定性 ) # 3. 创建智能体实例 # 需要将工具列表、记忆、规划器传递进去 assistant_agent Agent( namePersonalAssistant, tools[search_web, query_calendar, add_calendar_event, summarize_text], # 框架应能自动识别已注册的工具 memorymemory, plannerplanner, system_prompt你是一个高效、准确的个人助理。你的主要职责是帮助用户管理日程和查询信息。在调用工具前请仔细思考。如果用户请求不明确请礼貌地询问澄清。 )4.4 运行与测试智能体现在我们可以运行智能体来处理用户请求了。框架会处理ReAct循环、工具调用和记忆更新。# 模拟用户交互 user_query 帮我查一下今天下午有什么安排然后搜索一下‘机器学习会议 NeurIPS 2024’的最新消息并做个简短总结。 try: response assistant_agent.run(user_query) print(助理回复, response) except Exception as e: print(f执行出错{e}) # 这里可以记录日志或让智能体尝试恢复 # 查看记忆内容了解智能体记住了什么 print(\n当前对话记忆) print(memory.get_history())在这个例子中智能体应该会理解任务有两个部分查日程和搜索并总结。首先调用query_calendar工具获取今天下午的事件。然后调用search_web工具搜索“NeurIPS 2024”。接着可能调用summarize_text工具对搜索结果进行摘要或者LLM自己总结。最后将日程信息和搜索摘要整合成一段连贯的回复给用户。整个交互过程会被自动存入memory。4.5 扩展为智能体添加长期记忆如果想让助理记住用户的偏好比如用户常参加AI会议我们可以集成一个向量数据库作为长期记忆。from agentichub import VectorStoreMemory import chromadb # 假设使用ChromaDB # 初始化向量数据库客户端 chroma_client chromadb.PersistentClient(path./chroma_db) # 创建向量记忆指定嵌入模型如OpenAI的text-embedding-ada-002 vector_memory VectorStoreMemory( vectorstore_clientchroma_client, embedding_modeltext-embedding-ada-002, collection_nameuser_preferences ) # 创建一个更强大的智能体结合两种记忆 # 框架可能需要一个“复合记忆”的组件或者我们可以自定义一个 class CompositeMemory: def __init__(self, buffer_mem, vector_mem): self.buffer buffer_mem self.vector vector_mem def save_context(self, inputs, outputs): self.buffer.save_context(inputs, outputs) # 将重要的信息提取并存入向量记忆这里简化了提取逻辑 if preference in inputs.get(user_input, ): self.vector.add_texts([inputs[user_input]], metadatas[{type: preference}]) def load_memory_variables(self, inputs): buffer_vars self.buffer.load_memory_variables(inputs) # 从向量记忆中检索相关记忆 relevant_memories self.vector.search(inputs.get(user_input, ), k2) return {**buffer_vars, long_term_memories: relevant_memories} composite_memory CompositeMemory(memory, vector_memory) advanced_agent Agent( nameAdvancedAssistant, tools[...], # 工具列表 memorycomposite_memory, # 使用复合记忆 plannerplanner, system_prompt... # 更复杂的系统提示 )这样当用户说“记住我喜欢参加AI会议”时这条信息可以被存入长期记忆。以后用户说“有什么推荐的会议吗”智能体可以从长期记忆中检索出“喜欢AI会议”这条偏好使回复更具个性化。5. 开发中的常见陷阱与优化策略5.1 提示工程Prompt Engineering是成败关键智能体的表现极度依赖于给LLM的提示Prompt。AgenticHub虽然提供了默认模板但在实际业务中几乎总是需要定制。系统提示System Prompt定义智能体的角色、行为准则和目标。要清晰、具体。例如不要只说“你是一个助手”而要说“你是一个专注于日程管理和信息检索的效率助手你的回答应简洁、准确优先使用工具获取实时信息。”工具描述工具函数的docstring就是给LLM看的说明书。描述必须精确无歧义说明输入参数的类型和含义以及返回值的格式。模糊的描述会导致模型错误调用。少样本示例Few-shot Examples在提示中包含几个输入输出的例子能极大地提升模型对任务格式和工具调用模式的理解。AgenticHub可能允许你在配置中注入这些示例。优化策略将提示模板化、参数化。不要将长提示硬编码在代码里。可以将其放在配置文件如YAML或数据库中便于A/B测试和迭代优化。5.2 工具调用的可靠性与错误处理LLM生成工具调用参数时可能会产生格式错误、类型不匹配或超出业务逻辑范围的值。输入验证在工具函数内部必须对输入参数进行严格的验证。例如add_calendar_event中的时间参数要检查是否为合法的ISO格式开始时间是否早于结束时间。优雅降级当工具调用失败如网络超时、API限流时智能体不应直接崩溃。框架应能捕获异常并将错误信息作为“观察”反馈给LLM让LLM决定是重试、换一种方式还是向用户报告失败。超时控制为每个工具调用设置超时时间防止某个缓慢的工具阻塞整个智能体循环。实操心得为关键工具编写详尽的单元测试和集成测试。模拟LLM可能生成的各种奇怪输入确保工具函数健壮。同时在智能体层面可以设置一个“安全工具”如ask_user_for_clarification当连续多次工具调用失败或陷入循环时主动让智能体向用户求助。5.3 成本控制与性能优化智能体的ReAct循环意味着一次用户查询可能触发多次LLM调用思考步骤和多次工具调用API费用。成本可能迅速增长。限制循环步数设置max_iterations如10步强制智能体在步骤用尽前给出最终答案。缓存对频繁且结果不变的查询如“今天的日期”可以在工具层或记忆层实现缓存。选择性价比模型在规划思考步骤使用能力强的模型如GPT-4在简单的文本处理或摘要步骤使用更便宜的模型如GPT-3.5-Turbo。AgenticHub的架构应支持为不同环节配置不同的模型。异步执行如果多个工具调用之间没有依赖关系可以考虑让它们并行执行以减少整体延迟。5.4 调试与可观测性智能体系统是一个黑盒吗不我们必须让它变得可观测。详细日志记录每一个ReAct循环的步骤模型的思考内容、生成的工具调用指令、工具返回的结果。这将是调试问题的最重要依据。可视化跟踪一些高级框架或外部工具如LangSmith可以提供智能体执行过程的可视化轨迹图清晰展示每一步的输入输出。评估指标定义业务相关的评估指标如任务完成率、平均步骤数、用户满意度等。通过持续监控这些指标来评估智能体的表现和优化效果。在AgenticHub项目中应该积极利用其可能提供的日志接口或集成现有的可观测性平台。自己构建时可以在Agent的run方法内外添加详细的日志记录。6. 进阶应用多智能体协作与复杂工作流当单个智能体无法处理复杂任务时就需要多个智能体分工协作。AgenticHub的“编排层”概念正是为此而生。设想一个“产品反馈分析”场景收集智能体Collector Agent负责从各个渠道应用商店评论、社交媒体、客服工单收集原始反馈文本。分类智能体Classifier Agent将反馈按主题如“UI/UX”、“性能”、“功能请求”和情感正面、负面、中性进行分类。总结智能体Summarizer Agent对每个类别的反馈进行归纳总结提取关键点和高频词。报告智能体Reporter Agent根据总结结果生成一份给产品经理的分析报告。在AgenticHub的架构下你可以定义一个“团队”Team或“工作流”Workflow将这四个智能体串联起来。工作流引擎会管理任务传递和数据流。例如它可以是一个有向无环图DAG收集-分类-总结-报告。每个智能体完成自己的工作后将输出传递给下一个智能体作为输入。这种模式将复杂性分解每个智能体可以专注于一个简单而明确的任务更容易开发和维护。同时框架需要解决智能体间的通信协议、错误传递和整体状态管理等问题。构建这样的系统是对AgenticHub这类框架编排能力的终极考验。你需要仔细设计每个智能体的接口、它们之间传递的数据格式以及整个工作流的异常处理和中途干预机制。从我个人的实践经验来看智能体开发目前正处在从“玩具演示”到“生产级应用”过渡的关键期。像AgenticHub这样的框架通过提供标准化的模式和可靠的底层组件极大地降低了开发门槛。但真正构建一个稳定、有用、可控的智能体应用仍然需要开发者在提示工程、工具设计、错误处理和系统观测上投入大量的精力。它不是一个“银弹”而是一个强大的“杠杆”能放大你和团队在AI应用开发上的效率。开始的最佳方式就是选择一个像AgenticHub这样设计良好的开源项目从一个具体的小任务入手亲手搭建、运行并迭代你的第一个智能体在实战中积累最宝贵的经验。

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