从LangChain到LangGraph:AI智能体开发实战指南与避坑解析

news2026/4/27 16:30:44
1. 项目概述与学习路径设计如果你最近在关注AI应用开发尤其是智能体Agent这个方向大概率已经被LangChain、LangGraph这些框架的名字刷屏了。但当你真正打开官方文档准备动手时是不是感觉信息量巨大概念层层嵌套看完好像懂了但一写代码就无从下手这正是我最初接触这个领域时的真实感受。理论文档和实战开发之间似乎总隔着一道看不见的墙。Datawhale开源的Easy-langent项目就是为了推倒这堵墙而生的。这个项目名字很有意思“langent”是“lang”代表LangChain、LangGraph和“agent”的合成词它的核心目标非常明确让你在系统理解智能体核心逻辑的同时真正掌握用这些主流框架解决实际问题的能力实现从“知道”到“会做”的质变。我花了几天时间把这个项目的所有章节和配套实践都过了一遍。它不是一个简单的工具集合而是一份精心设计的、带有强烈“工程师思维”的学习路线图。整个教程摒弃了那种先堆砌几十页理论再给个“Hello World”的传统模式而是采用“认知-实操-进阶-实战”的螺旋式上升结构。每一章都紧扣“用框架做开发”这个核心学完一个概念立刻就有针对性的任务让你动手验证。这种设计对于想快速上手的开发者来说效率极高。整个学习大纲分为三个部分逻辑非常清晰第一部分框架认知与入门。带你快速建立对LangChain和LangGraph的直观感受完成环境搭建和第一个简单智能体的体验目标是消除对框架的陌生感。第二部分LangChain深度实操。这是重头戏拆解模型调用、提示工程、记忆、工具链等核心组件并通过RAG检索增强生成和中期综合实践教你如何用LangChain搭建一个完整的、可用的应用级系统。第三部分LangGraph与复杂系统构建。引入有状态工作流和多智能体协作的概念这是构建复杂、动态交互型AI应用的关键。最终以一个完整的“谁是卧底”游戏智能体作为综合实战串联所有知识点。这个路径设计的好处在于它模拟了一个真实项目的演进过程从单点工具的使用到简单工作流的组装再到复杂、有状态的系统编排。跟着走下来你获得的不是零散的知识点而是一套完整的、可迁移的智能体开发方法论。2. 核心组件深度解析与避坑指南Easy-langent教程的精华在于它对每个核心组件的讲解都直击要害并且附带了大量只有实战中才能积累的“坑点”提示。这里我结合自己的经验对其中的几个关键模块做一次“脱水”和“加料”解读。2.1 模型调用远不止一个API那么简单教程里会教你用LangChain的ChatOpenAI或ChatOllama来调用模型。但如果你以为这只是换了个函数名来发HTTP请求那就把问题想简单了。模型调用层是智能体稳定性的基石这里至少有三个必须关注的细节第一上下文长度Context Length与管理。不同模型的最大token数差异巨大。GPT-4 Turbo是128K而一些轻量级开源模型可能只有4K。在构建需要长对话记忆或处理长文档的智能体时你必须主动管理上下文。LangChain提供了ConversationTokenBufferMemory这类记忆组件但它本质是“被动”裁剪。更稳健的做法是在设计提示词和流程时就预估每个环节的token消耗并建立主动的摘要或归档机制。例如在对话超过一定轮数后让智能体自动生成之前对话的摘要用摘要替换掉原始的长历史这是一个非常实用的技巧。第二输出格式的强制约束。大模型的输出具有随机性这对于需要结构化数据下游处理的应用是灾难。LangChain的Output Parsers输出解析器模块就是为此而生。教程里会提到PydanticOutputParser它允许你定义一个Pydantic模型让LLM按照这个模型的字段和类型来生成JSON。但这里有个隐藏坑点如果LLM的输出不符合格式解析器会直接抛异常。更健壮的做法是结合RetryOutputParser当解析失败时自动将错误信息和原始输出重新构造提示词让模型再试一次。这相当于给解析过程加了一个自动重试的保险。from langchain.output_parsers import PydanticOutputParser, RetryOutputParser from langchain_core.pydantic_v1 import BaseModel, Field from langchain_openai import ChatOpenAI class ArticleSummary(BaseModel): title: str Field(description文章标题) key_points: list[str] Field(description三个核心要点) sentiment: str Field(description情感倾向正面、负面或中性) parser PydanticOutputParser(pydantic_objectArticleSummary) retry_parser RetryOutputParser.from_llm(parserparser, llmChatOpenAI()) # 使用retry_parser进行解析会自动处理格式错误第三Fallback策略与成本权衡。在生产环境中你不能只依赖一个模型端点。可能因为速率限制、服务宕机或单纯的成本考虑需要准备备选方案。LangChain的ChatOpenAI类可以配置多个模型并设置降级策略。例如优先使用GPT-4当达到速率限制或请求超时时自动降级到GPT-3.5-Turbo。这个功能在官方文档里不显眼但对于构建企业级应用至关重要。2.2 提示词工程从文本拼接走向模块化设计很多入门者会把提示词当成一段固定的、需要精心调校的“咒语”。但在智能体开发中提示词应该是动态、可组合、数据驱动的。LangChain的PromptTemplate和ChatPromptTemplate就是这个思想的体现。教程会教你使用变量插值比如template “请总结{text}”。但更高级的用法是提示词模块化。你可以把系统指令、少样本示例Few-shot Examples、用户查询模板、历史对话上下文分别定义成不同的MessagePromptTemplate然后用ChatPromptTemplate.from_messages将它们像积木一样组装起来。这样做的好处是可维护性修改系统角色或示例时无需在冗长的字符串中搜索。可复用性通用的指令模块可以在多个智能体间共享。清晰度模板结构清晰便于团队协作和代码审查。一个常见的误区是试图在一个提示词里解决所有问题。实际上对于复杂任务应该拆分成多个子步骤每个步骤使用一个针对性强的、简单的提示词通过LangChain的SequentialChain或LLMChain串联起来。这样不仅成功率更高也更容易调试——你可以看到是哪个环节的提示词导致了不理想的输出。2.3 记忆机制智能体“有脑子”的关键没有记忆的智能体每次对话都是失忆的重新开始。LangChain提供了多种记忆后端教程里会涵盖ConversationBufferMemory、ConversationSummaryMemory等。选择哪种取决于你的场景ConversationBufferMemory保存完整的对话历史。优点是信息无损缺点是token消耗随对话线性增长很快就会触及模型上下文上限。仅适用于短对话或需要精确回溯的场景。ConversationSummaryMemory每次交互后用LLM自动生成对当前对话的摘要只保存摘要。优点是极大地节省了上下文空间适合长对话缺点是存在信息压缩损失且每次更新摘要都需要额外调用一次LLM增加成本和延迟。ConversationBufferWindowMemory只保留最近K轮对话。这是平衡性能和效果的常用折中方案。对于大多数聊天机器人用户通常只关心最近的几轮对话保留最近5-10轮是一个经验值。实操心得不要盲目使用ConversationSummaryMemory。对于需要精确引用历史细节的任务如代码调试、法律条款核对摘要可能导致关键信息丢失。我的经验是对于通用聊天使用ConversationBufferWindowMemoryK10对于长文档分析或深度协作任务可以结合使用Buffer和Summary或者采用外部向量数据库存储历史按需检索。2.4 工具Tools与智能体“手脚”的扩展工具是智能体感知和影响外部世界的途径。LangChain让工具的定义和使用变得标准化。教程里你会学到如何用tool装饰器将一个Python函数转化为智能体可调用的工具。这里的关键进阶思想是工具的描述description质量直接决定智能体能否正确使用它。描述必须清晰、无歧义并说明输入参数的格式。例如一个查询天气的工具描述应该是“根据城市名称查询该城市当前的天气情况。输入应为单个字符串格式的城市名如‘北京’。”而不是简单的“查询天气”。更高级的用法是工具的动态选择与组合。当智能体拥有数十个工具时如何让它快速找到正确的工具除了依赖LLM自身的理解还可以通过Toolkit对工具进行分类或者在提示词中提供工具的选择指南。此外对于复杂操作可以设计“元工具”——一个工具内部调用其他多个工具或函数来完成一个高层任务。3. 从链Chain到图Graph工作流编排的演进这是Easy-langent教程从第二部分到第三部分的精髓也是智能体开发从“简单自动化”走向“复杂决策”的分水岭。3.1 LangChain链确定性的工作流在LangChain中Chain是将LLM调用、工具使用、数据预处理等环节串联起来的核心抽象。最简单的LLMChain是“提示词LLM解析器”。SequentialChain允许你定义多个链按顺序执行。但链的本质是确定性、线性的。就像工厂的流水线步骤A完成才能到步骤B。这对于很多场景足够了比如一个标准的RAG流程查询改写 - 向量检索 - 答案生成。教程的第四、五章会带你用链构建这样的应用。RAG实践中的核心细节文档分块Chunking不是简单按字数切分。对于代码、Markdown、PDF要按语义边界如函数、章节分块才能保证检索质量。LangChain的RecursiveCharacterTextSplitter是个不错的起点但你需要根据文档类型调整分隔符列表和块大小重叠。检索器Retriever除了最基础的相似度搜索如余弦相似度应优先考虑支持元数据过滤的向量数据库如Chroma、Weaviate。这样你可以先按类别、日期等条件过滤再在结果集里做语义搜索精度和效率都更高。重排序Re-ranking相似度搜索返回的前K个文档可能不完全相关。引入一个轻量级的重排序模型如Cohere的rerank API或开源的BGE-reranker对Top N的结果进行二次排序能显著提升最终答案的准确性这是生产级RAG的标配优化。3.2 LangGraph拥抱状态与循环当你需要智能体根据中间结果动态决定下一步做什么或者需要多个智能体相互协作、对话时线性的链就不够用了。这就是LangGraph的舞台。它的核心概念是“有状态的工作流”Stateful Workflow。你可以把LangGraph理解为一个由节点Nodes和边Edges构成的可执行图。每个节点是一个函数可以包含LLM调用、工具调用等它处理当前的“状态”State并返回更新后的状态。边决定了下一个执行哪个节点而这个决定可以是动态的基于当前状态的内容。教程的第六、七章会深入讲解。这里我强调几个关键概念状态State一个字典在整个图执行过程中传递和修改。它通常包含用户输入、对话历史、中间结果等一切需要共享的信息。节点Node执行单元。关键设计原则是“节点功能单一化”一个节点最好只做一件事。边Edge路由逻辑。可以是固定的“always_go_to_node_x”也可以是条件式的conditional_edge由一个路由函数根据状态决定下一站。与LangChain链的核心区别LangGraph引入了循环Cycle。一个节点执行完后可以路由回之前的节点或者根据条件在几个节点间循环直到满足某个终止条件。这使得构建对话系统、多轮审批流程、辩论型多智能体成为可能。例如在一个客服场景中图可以这样设计节点1理解用户意图- 节点2查询知识库- 条件边如果答案确定则到节点3生成回复并结束如果答案不确定或用户可能追问则路由回节点1请求用户澄清。这种带循环和条件分支的流程用链是很难优雅实现的。4. 综合实战“谁是卧底”游戏智能体的构建剖析教程的第八章和配套的狼人杀项目是检验学习成果的绝佳实战。我们以“谁是卧底”为例拆解如何用LangGraph构建一个复杂的多角色交互系统。这远不止是调用几次API而是完整的软件工程实践。4.1 系统架构设计首先你需要对游戏进行“领域建模”。状态State需要定义游戏的核心状态对象。这至少包括玩家列表含角色卧底/平民、当前回合数、当前发言玩家、每个人的发言历史、游戏阶段发言、投票、结束、当前争议的词组平民词/卧底词。节点Nodes将游戏流程分解为原子操作节点。例如InitializeGameNode初始化游戏分配角色和词语。PlayerTurnNode处理当前玩家的发言。这里需要调用LLM根据玩家的角色、历史发言和当前词语生成符合角色身份的、合理的描述。JudgeNode在所有玩家发言后模拟“裁判”或“公众讨论”分析发言找出逻辑矛盾可能触发投票或直接进入下一轮。VotingNode处理投票逻辑统计票数决定是否淘汰玩家。CheckGameOverNode判断游戏是否结束卧底被找出或卧底存活到最后。边Edges设计节点间的流转逻辑。这是一个典型的循环图Initialize-PlayerTurn(循环直到所有玩家发言完毕) -Judge- 条件边如果需要投票 -Voting-CheckGameOver- 如果未结束路由回PlayerTurn开始新回合如果结束则到EndNode。4.2 智能体“演技”的核心角色提示词设计让LLM扮演好“卧底”或“平民”是项目成败的关键。提示词必须精心设计系统指令明确告知LLM它的角色、胜利条件、以及核心行为准则。例如对卧底“你是卧底你的词是‘A’但其他人都认为词是‘B’。你的目标是隐藏身份避免被投票出局。你的发言应该听起来像在描述‘B’但又不能太准确以免暴露你知道真正的词。”游戏状态上下文在每次调用时将当前回合、已发生的发言、投票情况等作为上下文输入。发言约束为了避免LLM“作弊”比如直接说“我是卧底”需要给出严格的输出格式指令例如“你的输出必须是一句对词语的描述性话语不要提及角色、游戏进程或其他任何元信息。”4.3 状态管理与调试技巧在LangGraph中所有节点共享和修改同一个状态字典。必须非常小心地处理状态的并发修改和版本问题。虽然LangGraph默认是顺序执行但良好的实践是明确每个节点读写状态的哪些字段。最好在文档或代码注释中写明。对于复杂的更新可以考虑在节点内先深拷贝deepcopy需要修改的部分修改后再赋值回去避免意外的副作用。利用LangGraph的中间结果可视化。在开发时将Checkpointer配置为MemorySaver并输出每个步骤后的状态快照。这是调试复杂工作流最有效的手段你可以清晰地看到状态是如何一步步演变的在哪里出现了预期外的值。4.4 性能与成本优化这样一个多轮次、多玩家调用LLM的游戏如果直接使用GPT-4成本会很高。优化策略包括轻量级模型对于发言生成可以使用更轻量、更便宜但创造力足够的模型如Claude Haiku或本地部署的Qwen2.5-7B。异步并行在PlayerTurnNode理论上所有玩家的发言是独立的除了不能看到未来信息。可以利用LangChain的异步支持并发调用LLM生成所有玩家的发言大幅减少回合等待时间。缓存对于相对固定的提示词部分如系统指令可以使用LangChain的SemanticCache或简单的内存缓存避免重复向LLM发送完全相同的上下文节省token。5. 常见问题与排查实录在实际跟随Easy-langent学习和自己开发的过程中你肯定会遇到各种问题。我整理了几个最具代表性的“坑”及其解决方案。5.1 环境配置与依赖冲突问题按照教程pip install一堆包后运行示例代码出现ImportError或版本不兼容错误。根因LangChain生态更新极快且其部分子包如langchain-community,langchain-openai是独立发布的。直接pip install langchain安装的可能是“元包”它拉取的子包版本可能不匹配。解决方案优先使用项目提供的requirements.txt或pyproject.toml。Easy-langent仓库应该会有环境配置文件。如果没有建议使用虚拟环境conda或venv并显式、精确地安装核心包。一个更稳定的安装命令组合可能是pip install langchain-core0.1.0 langchain-openai0.0.5 langchain-community0.0.10版本号请以当时最新稳定版为准这里仅为示例。如果涉及向量数据库如Chroma注意其客户端库与服务器版本的兼容性。5.2 API密钥管理与安全性问题代码中硬编码API密钥既不安全也不便于协作和部署。解决方案绝对不要将密钥提交到Git仓库。使用环境变量管理。在项目根目录创建.env文件写入OPENAI_API_KEYsk-...。使用python-dotenv包在程序启动时加载from dotenv import load_dotenv load_dotenv() # 这会加载.env文件中的变量到环境变量 import os api_key os.getenv(OPENAI_API_KEY)在Jupyter Notebook中可以使用%load_ext dotenv和%dotenv魔术命令。5.3 智能体“胡言乱语”或拒绝执行问题智能体不按你设计的工具调用流程走要么自己编造答案要么说“作为AI我无法完成此操作”。根因提示词中系统角色System Role指令不够强或者工具描述不清晰。排查与解决强化系统指令在ChatPromptTemplate中将系统消息放在首位并使用强硬、明确的措辞。例如“你是一个专业的助手必须严格按照要求调用工具来解决问题。在得到工具返回的结果前不允许自行猜测或编造答案。”检查工具描述确保每个tool装饰器下的函数文档字符串docstring清晰描述了工具的功能、输入格式和输出。LLM主要靠这个描述来决定是否以及如何调用。启用详细日志在初始化LLM或Agent时设置verboseTrue。这会在控制台打印出智能体完整的“思考过程”ReAct模式下的Thought/Action/Action Input等这是调试其决策逻辑的最直接方法。使用更强大的模型如果经过上述调整问题依旧可能是基础模型能力不足。尝试切换到能力更强的模型如从GPT-3.5-Turbo切换到GPT-4或Claude-3。5.4 LangGraph工作流陷入死循环或提前结束问题图执行时在几个节点间无限循环或者没执行完所有必要节点就结束了。根因条件边conditional_edge的路由函数逻辑有误或者终止节点END被意外触发。排查与解决打印状态在每个节点的函数开头打印传入的state的关键信息。确认状态的变化符合预期。检查路由函数条件边依赖的路由函数必须返回一个字符串即下一个节点的名称。确保该函数覆盖所有可能的状态分支并且返回值与图中已定义的节点名严格一致注意大小写。理解END特殊节点在LangGraph中END是一个内置的特殊节点名表示工作流终止。只有当你的逻辑确实需要结束时才应返回“END”。常见的错误是在条件判断中某个分支意外地返回了“END”字符串。使用可视化如果问题复杂将你的图定义用graph.get_graph().draw_mermaid_png()输出为图片需要安装pygraphviz直观检查节点和边的连接关系是否正确。5.5 RAG效果不佳检索不到相关文档问题明明知识库里有相关文档但RAG系统总是检索不到导致答案不准确。根因问题通常不出在LLM而在检索环节。排查步骤检查文本分割打印出你分割后的文档块chunks。它们是否保持了语义完整性是否因为分割得太碎导致关键信息被切断检查嵌入模型你使用的文本嵌入模型是否适合你的语料中文/英文/代码可以尝试用Sentence Transformers库提供的其他模型如BGE系列对中文支持更好。测试查询向量将用户的查询语句用同样的嵌入模型向量化然后计算它与几个你认为应该被检索到的文档块的余弦相似度。如果相似度很低说明问题在嵌入模型或查询表述上。可以考虑对原始查询进行“查询扩展”或“改写”生成多个相关查询后再检索。检查检索数量你设置的k值返回最相似的k个文档是否太小可以先尝试调大比如从4调到10看看目标文档是否出现在结果列表中。引入元数据过滤如果向量数据库支持在检索时加入筛选条件如文档类型、日期范围可以缩小搜索范围提升精度。跟着Easy-langent的路径走下来最大的收获不是学会了某个框架的API而是建立起一套应对AI应用复杂性的思维框架和工程方法。它让我明白构建可靠的智能体20%是调参和提示词技巧80%是扎实的软件设计、清晰的状态管理和对失败场景的周密考虑。这个项目提供的正是那80%的、在快餐式教程里学不到的“工程内功”。

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