LangChain 创始人万字科普:手把手教你设计 Agent 用户交互
LangChain 可以算是 LLM 时代做 AI 应用开发必备的框架和平台,从模型选择、数据库链接与各种 Agent 搭建等,AI 应用的搭建、运行和管理都可以在 LangChain 上进行。
某种意义上,LangChain 可能是最了解 Agent(智能体)的平台。
最近,LangChain 创始人 Harrison Chase发表了一系列对于 Agent 的设计、规划和用户交互设计的探讨。对于当下如何理解 Agent、如何设计 AI 应用的交互上,有很多来自第一线的认知,推荐一读。
一些有意思的点:
什么是智能体?每个人似乎都有不同的定义,吴恩达的建议是,「与其争论什么应被归类为真正的智能体,不如承认系统具有不同程度的智能体特性(agentic)」,就像自动驾驶汽车有不同的自动化等级一样。
目前最主流的 UX 是「流式聊天」,一个很典型的例子是 ChatGPT,用户通过自然语言和 LLM 进行交互,不过,不少创业者相信,除了聊天之外,还有更多的 UX 模式值得考虑。
和流式聊天最大的区别在于,非流式聊天的响应是以完整的批次返回的,这是个缺点,因为你不知道系统内部发生了什么,但另一方面,Linus Lee 提到,「我有意将界面设计得尽可能不透明」,不透明的界面需要一定程度的信任,但信任一旦建立,你就只需要把任务委派给智能体,而不必过多干预。
如何建立用户对智能体的信任?一个简单的方式,把每次操作展示给用户。除此之外,不仅让用户看到发生了什么,还要让他们能够纠正智能体的操作。用户可以在工作流中途暂停,提供反馈,然后让智能体继续执行。
需要将用户从「在循环中」转变为「在循环上」。「在循环上」意味着智能体需要向用户展示其执行的所有中间步骤,用户可以在工作流中途暂停,提供反馈,然后让智能体继续执行。一个已经实现了类似用户体验的应用是 Devin——AI 软件工程师。
01
*什么是智能体?*
「什么是智能体?」
我几乎每天都会被问到这个问题。在 LangChain,我们构建工具帮助开发者创建大语言模型(LLM)应用程序,特别是那些作为推理引擎并与外部数据和计算资源交互的系统。这些系统通常被称为「智能体」。
每个人似乎对智能体的定义都有些不同。我的定义可能比大多数人更加技术化:
智能体是一个使用大语言模型(LLM)来决定应用程序控制流的系统。
即便如此,我承认我的定义并不完美。人们通常认为智能体是高级的、自主的、类似人类的——但如果是一个简单的系统,LLM 只是在两条不同路径之间进行路由选择呢?这符合我的技术定义,但与人们普遍对智能体应具备的能力认知不一致。要精确定义什么是智能体,确实非常困难!
因此,我非常喜欢 Andrew Ng 上周的推文。在推文中,他建议「与其争论什么应被归类为真正的智能体,不如承认系统具有不同程度的智能体特性(agentic)。」就像自动驾驶汽车有不同的自动化等级一样,我们也可以将智能体的能力视作一个光谱。我非常赞同这一观点,并且认为 Andrew 表达得非常到位。未来,当再有人问我什么是智能体时,我将转而讨论什么是「智能体特性」。
1.什么是智能体特性?
去年我在一场关于 LLM 系统的 TED 演讲中使用了下面这张幻灯片,来讨论 LLM 应用中不同的自主性级别。
系统越依赖 LLM 来决定其行为方式,它就越具有「智能体特性」。
使用 LLM 将输入路由到特定的下游工作流中,表现出少许「智能体」行为。这会归类为上图中的 Router(路由器)类别。
如果你使用多个 LLM 执行多个路由步骤呢?这会介于 Router 和 State Machine(状态机)之间。
如果其中一个步骤是在决定是否继续或结束——实际上允许系统循环运行直到完成?那么这就会归类为 State Machine。
如果系统能够构建工具,记住它们,并在后续步骤中再次使用它们?这与 Voyager 论文所实现的功能类似,并且是非常具有智能体特性的,属于更高的 Autonomous Agent(自主智能体)类别。
这些关于「智能体特性」的定义仍然相当技术化。我更倾向于这种技术性的定义,因为在设计和描述 LLM 系统时,这种定义非常实用。
2.「智能体特性」有什么用?
正如所有概念一样,我们有必要思考,为什么我们需要「智能体特性」这个概念?它有什么帮助?
了解系统的智能体特性能够指导你在开发过程中做出决策——包括构建、运行、与之交互、评估,甚至是监控。
2.1系统的智能体特性越强,编排框架的作用就越大。如果你正在设计一个复杂的智能体系统,拥有一个具备这些概念的抽象框架能够加速开发。这个框架应该支持一流的分支逻辑和循环控制。
**2.2系统的智能体特性越强,运行难度就越大。**它会变得更加复杂,有些任务可能需要很长时间才能完成。这意味着你可能需要将任务设为后台运行。同时,也需要具备持久执行能力,以应对任务过程中出现的错误。
**2.3系统的智能体特性越强,你就越希望在系统运行时进行交互。**你会希望能够观察系统内部正在发生的事情,因为具体步骤可能无法提前预知。你还需要在某个时间点调整智能体的状态或指令,以便当它偏离既定轨道时纠正回来。
**2.4系统的智能体特性越强,你就越需要为此类应用构建一个评估框架。**由于随机性会逐步累积,因此你可能需要多次进行评估。你不仅需要测试最终输出,还需要评估中间步骤,检查智能体的行为效率。
2.5系统的智能体特性越强,你就越需要一种全新的监控框架。你希望能够深入分析智能体执行的每一个步骤,还希望可以根据智能体执行的步骤来查询运行情况。
理解并运用系统的智能体能力光谱,能提升开发过程的效率与稳健性。
02
*如何为智能体进行规划*
在三月份的 Sequoia AI Ascent 大会上,我提到了智能体的三大限制:规划、用户体验(UX)和记忆。
如果你询问任何使用大语言模型(LLM)构建智能体的开发者,他们很可能会提到规划和推理能力的不足是影响智能体可靠性的一大问题。那么,规划对智能体意味着什么?人们目前是如何克服这一短板的?未来智能体的规划和推理能力可能会如何发展?我们将在下文中讨论这些问题。
1.什么是规划和推理?
智能体的规划和推理涉及 LLM 决定采取哪些行动的能力。这个过程包括短期和长期的步骤。LLM 需要评估所有可用的信息,然后决定:我需要采取哪些步骤?当前我应该采取的第一步是什么?
大多数情况下,开发者使用函数调用(也称为工具调用)来让 LLM 选择行动。函数调用是 OpenAI 于 2023 年 6 月首次在 LLM API 中引入的功能,随后在 2023 年底和 2024 年初被其他平台采用。通过函数调用,你可以为不同的函数提供 JSON 架构,让 LLM 输出的对象匹配这些架构之一。
函数调用通常用于让智能体选择当前的即时行动。然而,成功完成复杂任务往往需要一系列连续的行动。这种长期规划和推理对 LLM 来说更具挑战,原因有以下几点。首先,LLM 需要考虑一个长远的目标,但同时还必须跳回到当前的短期行动中。其次,随着智能体采取更多的行动,这些行动的结果会反馈给 LLM,这会导致上下文窗口不断扩大,进而可能导致 LLM 分心,表现不佳。
正如 LLM 领域的许多事情一样,当前模型在规划和推理方面的表现难以准确衡量。有一些合理的基准测试,例如伯克利函数调用排行榜,用于评估函数调用能力。我们也进行了一些关于多步骤应用的研究。但是,要了解这方面表现的最佳方式是针对你的具体问题建立一个评估集,并自行进行评估。
从经验来看,目前的规划和推理能力还没有达到处理现实任务所需的水平。
2.有哪些方法可以改善智能体的规划能力?
改善规划能力最简单的方式是确保 LLM 拥有进行合理推理和规划所需的所有信息。虽然这听起来很基础,但很多时候传递给 LLM 的提示中并没有包含足够的信息,导致它无法做出合理的决策。添加一个信息检索步骤,或者更加明确地说明提示中的指令,可以作为简单的改进措施。这也是为什么需要实际查看数据,看看 LLM 实际接收到的信息是什么。
接下来,我建议你尝试改变应用程序的认知架构。所谓「认知架构」,是指应用程序用于推理的数据处理逻辑。你可以选择两类认知架构来改善推理能力:通用认知架构和领域特定认知架构。
4.通用认知架构 vs. 领域特定认知架构
通用认知架构尝试在任意任务中提升推理能力。一个很好的例子是「规划与解决」架构。这篇论文(https://arxiv.org/abs/2305.04091)探讨了一种架构,在这种架构中,首先制定一个计划,然后逐步执行计划中的每一步。另一个通用架构是 Reflexion 架构,这篇论文(https://arxiv.org/abs/2303.11366)提出,在智能体完成任务后增加一个「反思」步骤,以评估任务执行得是否正确。
尽管这些想法展示了推理能力的提升,但它们往往过于通用,难以应用于生产环境中的智能体。相反,我们发现智能体通常使用领域特定的认知架构。这通常体现在领域特定的分类和路由步骤、验证步骤等方面。虽然某些通用的规划和反思理念在这里同样适用,但通常是以领域特定的方式应用。
以 AlphaCodium 论文(https://www.qodo.ai/products/alphacodium/)为例,它通过使用「流程工程」(认知架构的另一种说法)实现了当前最先进的性能。下图展示了他们所使用的流程。
该流程非常针对其要解决的问题。他们要求智能体按步骤进行操作——首先编写测试,然后编写解决方案,接着迭代更多的测试等。这个认知架构高度领域特定,并不会对写作任务产生帮助。
5.为什么领域特定的认知架构如此有用?
我喜欢从两个角度来解释这一点。
首先:你可以将其视为另一种向智能体传达其应执行任务的方式。你可以通过提示来传达指令,也可以通过代码明确规定具体的步骤。两种方式都是有效的!代码是传达预期行为的极佳方式。
其次:这实际上是将规划责任从 LLM 转移到了我们这些工程师手中。我们基本上是在告诉 LLM:「不用担心规划,我来替你做!」当然,我们并没有完全移除 LLM 的规划责任,因为在某些情况下我们仍要求它进行部分规划。
例如,回到上面的 AlphaCodium 例子。流程中的步骤基本上是我们替 LLM 进行的规划!我们告诉它先编写测试,然后写代码,再运行测试等。这实际上是作者认为编写软件的一个好计划。如果他们要为某个问题制定一个解决方案,可能也是以这种方式进行规划的。与其通过提示告诉 LLM 执行这些步骤——提示可能被忽略、误解或缺少细节——他们通过构建领域特定的认知架构向系统传达如何操作。
我们看到,几乎所有生产环境中的高级「智能体」实际上都有非常领域特定且定制的认知架构。
我们通过 LangGraph 让构建这些定制认知架构变得更加容易。LangGraph 的一个核心重点是可控性。我们设计了 LangGraph,使其操作非常底层且高度可控——因为我们发现,要创建可靠的定制认知架构,100% 的可控性是必须的。
6.规划和推理的未来会怎样?
LLM 领域变化迅速,我们在构建应用程序时,尤其是在构建工具时,应该对此保持关注。
我目前的看法是,通用推理将越来越多地融入模型层。模型将变得越来越智能,无论是通过规模的扩大还是研究的突破——押注这一趋势似乎是不明智的。模型也会变得更快、更便宜,因此传递大量上下文信息给它们将变得更加可行。
然而,我相信,无论模型多么强大,你始终需要以某种形式向智能体传达其应执行的任务。因此,我认为提示和定制架构将继续存在。对于简单任务,提示可能就足够了;而对于复杂任务,可能需要通过代码来定义其行为。代码优先的方法可能更快、更可靠、更易于调试,并且在很多情况下表达起来更加简洁、合理。
我最近参加了一个 podcast,与 Sequoia 的 Sonya 和 Pat 讨论了这个话题。他们绘制了一张很棒的图,展示了提示、认知架构和模型的角色和重要性如何随着时间推移而演变。
所以,尽管 LLM 的规划和推理能力将不断提升,我们依然坚信,如果你正在构建一个任务特定的智能体,定制认知架构将是必不可少的。这也是我们对 LangGraph 未来充满信心的原因。
03
用户交互之一
1.聊天体验不一定需要流式
人与计算机的交互已经研究了很多年。我相信在未来几年,人与智能体的交互也将成为一个重要的研究领域。
智能体系统与过去的传统计算机系统不同,主要是因为它们面临着新出现的挑战,如延迟、不可靠性和自然语言界面。因此,我坚信,与这些智能体应用程序交互的新 UI/UX 模式将会出现。
虽然目前智能体系统还处于早期阶段,但我认为已经有多个正在兴起的 UX 模式。本章,我们将讨论目前最主流的 UX 形式:聊天。
1.1流式聊天
「流式聊天」UX 是目前最主流的 UX。它简单地指的是一个智能体系统以聊天格式实时返回其思考和行为——ChatGPT 是其中最受欢迎的例子。这种交互模式看似简单,但实际上有几个重要的优点。
与大语言模型 (LLM) 交互的主要方式是通过自然语言。在聊天中,你可以通过自然语言直接与 LLM 互动。这意味着你和 LLM 之间几乎没有任何障碍。
在某些方面,流式聊天就像早期计算机的「终端」。
终端(尤其是早期计算机的终端)提供了更底层、更直接的访问操作系统的方式。但随着时间的推移,计算机逐渐转向更多基于图形用户界面的交互。流式聊天可能类似——这是我们与 LLM 互动的第一种方式,它提供了对底层 LLM 的直接访问。随着时间的推移,其他 UX 可能会出现(就像计算机逐渐转向更多的 UI 交互)——但低层次的访问在初期有显著的优势!
流式聊天的一个优势是 LLM 可能需要一些时间来处理。流式方式让用户能够理解系统内部的实时情况。你可以看到 LLM 执行的中间步骤(包括它采取的动作和结果)以及它「思考」时生成的 token。
流式聊天的另一个好处是 LLM 经常出错。聊天提供了一个非常自然的界面,可以用来纠正和引导它!我们已经习惯了在聊天中进行后续对话,并通过这种迭代方式讨论问题。
当然,流式聊天也有其缺点。首先,流式聊天是一种相对较新的 UX,因此我们现有的聊天平台(如 iMessage、Facebook Messenger、Slack 等)还没有内置这种模式。其次,对于需要较长时间运行的任务来说,这种模式可能会有点别扭——难道我要一直坐在那里看着智能体工作吗?第三,流式聊天通常需要由人类触发,这意味着人类仍然深度参与其中。
1.2非流式聊天
称它为「非流式聊天」听起来有些奇怪,因为直到两年前,我们还只是把它称为「聊天」——但事实就是这样。非流式聊天与流式聊天有很多相似之处——它向用户直接暴露 LLM,并且允许非常自然地进行纠正。
非流式聊天的主要区别在于,响应是以完整的批次返回的,这既有利也有弊。最大的缺点是你无法看到系统内部发生了什么,结果就是你会被蒙在鼓里。
但是……这真的是问题吗?
Linus Lee 最近对「委托」发表了一些精彩的见解,我非常喜欢。他的一个片段很好地说明了这一点:
我有意将界面设计得尽可能不透明。
他认为,不透明的界面需要一定程度的信任,但一旦建立了这种信任,就可以让你_只需将任务委派给智能体_,而不必进行微观管理。这种异步性质也有助于处理长时间运行的任务——这意味着智能体可以为你做更多的工作。
假设信任得以建立,这似乎是一个好事情。但它也会引发其他问题。例如,如何处理「重复发送」——即用户发送一条消息,智能体开始执行任务,而用户在智能体完成任务之前再次发送另一条(有时是无关的)消息。在流式聊天中,通常不会出现这种问题,因为智能体的流式信息会阻止用户输入新的内容。
非流式聊天 UX 的一个优势是它更符合我们的日常习惯,这意味着它可能更容易整合到现有的工作流程中。人们习惯于与其他人通过文本消息交流——为什么不也适应与 AI 进行文字交流呢?
非流式聊天的另一个大优点是,它通常允许 AI 花费更多的时间来回应。
这通常是因为非流式聊天更自然地集成到我们现有的工作流程中。我们不期望朋友立刻回复消息——为什么我们要期望 AI 这样做呢?这使得与更复杂的智能体系统交互变得更容易——这些系统往往需要时间,而如果我们期待即时回复,可能会感到沮丧。非流式聊天往往消除了这种期望,使得执行更复杂的任务变得更加轻松。
流式聊天似乎是更新、更闪亮、更具未来感的技术……但随着我们对智能体系统的信任增加,这种趋势是否会逆转呢?
2.聊天之外的更多 UX 形式?
我们相信除了聊天之外,还有更多的 UX 模式值得考虑。不过,仍然值得提醒的是,聊天是一个非常好的用户体验设计,它被广泛使用是有原因的。
聊天的好处:
允许用户直接与模型交互
允许用户轻松提出后续问题和/或进行纠正
流式与非流式聊天的优缺点
04
*用户交互之二*
*1.后台运行也可以建立用户信任*
在之前关于聊天型用户体验的章节中,我们探讨了聊天界面如何要求用户主动与 AI 互动。而如果 AI 可以在后台为您工作呢?
我认为,为了让智能体系统真正发挥潜力,必须实现让 AI 在后台运行的转变。当任务在后台处理时,用户通常对较长的完成时间更加宽容(因为他们不再过于追求低延迟)。这让智能体能够更专注地完成任务,而不是像在聊天界面中那样急于给出回应。
此外,后台运行的智能体能够让我们人类更高效地扩展我们的能力。聊天界面通常限制我们一次只能处理一个任务。但如果智能体在后台运行,多个智能体可以同时处理多个任务。
那么,后台运行智能体的用户体验是什么样的呢?
2.与后台智能体建立信任:从「人在循环中」到「人在循环上」
要让智能体在后台运行需要建立一定的信任。如何建立这种信任呢?
一个简单的方式就是展示给用户智能体正在执行的每一步操作,并让用户随时查看这些信息。虽然这些信息不会像流式反馈那样实时显示,但应该为用户提供可以点击查看的选项。
下一步,不仅仅是让用户看到发生了什么,还要让他们能够纠正智能体的操作。如果用户发现智能体在第 10 步中的第 4 步做出了错误选择,他们应该能够回到第 4 步进行纠正。
这种纠正方式可以通过几种形式实现。以纠正错误调用工具的智能体为例:
**2.1.**您可以手动输入正确的工具调用指令,使其看似由智能体生成,然后继续后续步骤。
**2.2.**您可以向智能体提供明确的指令,告诉它如何更好地调用工具——例如,「用参数 X 调用,而不是参数 Y」,并要求智能体更新其预测。
**2.3.**您可以更新当时的指令或状态,并从该步骤重新运行。
选项 2 和 3 的区别在于智能体是否意识到其先前的错误。选项 2 是要求智能体认识到其错误并加以纠正,而选项 3 则是在不知情的情况下只遵循新的指令。
这种方法将用户从「在循环中」转变为「在循环上」。「在循环上」意味着智能体需要向用户展示其执行的所有中间步骤,用户可以在工作流中途暂停,提供反馈,然后让智能体继续执行。
一个已经实现了类似用户体验的应用是 Devin——AI 软件工程师。Devin 能够长时间运行,用户可以查看所有执行的步骤,回到某个特定时间点,并从那里进行纠正。
3.整合人工输入:智能体在需要时如何请求帮助
虽然智能体在后台运行,但这并不意味着它必须完全自主地完成任务。有些时候,智能体可能不知道接下来该怎么做或如何回应。这时,它需要引起人类的注意并请求帮助。
以我正在构建的电子邮件助手智能体为例。虽然它能够处理一些基础的邮件任务,但对于某些任务,我不希望自动化处理,例如复杂的 LangChain 错误报告审阅或决定是否参加会议。
在这种情况下,电子邮件助手需要一种机制向我请求信息,而不是让我直接处理回复。它希望获得我的意见,然后利用这些信息撰写邮件或安排会议。
目前,我已经在 Slack 中设置了这个助手。它通过问题通知我,我在线程中回复,轻松集成到我的工作流程中。如果这种用户体验在更大范围内应用,我会设想一个类似客户支持仪表盘的界面,展示所有需要人工帮助的任务、请求的优先级及其他元数据。
我最初将这个电子邮件助手称为「智能体收件箱」——但更准确地说,它是一个为人类帮助智能体完成任务的收件箱……这种想法令人深思。
05
用户交互之三
1.电子表格、生成式和协作式 UI
了解批量处理智能体工作负载的电子表格用户体验、生成式 UI 以及与智能体协作的用户体验。
当我们共同探索构建和与智能体互动的最佳方式时,有太多值得挖掘的领域。智能体的 UI/UX 领域是我非常感兴趣的一个领域,我会密切关注未来几个月的创新。为了总结关于智能体 UI/UX 的讨论,我将重点介绍三种最近变得更受欢迎的用户体验。
2.电子表格用户体验
在过去两个月中,我看到的一种用户体验范式是电子表格用户体验。第一次见到这种方式是在今年早些时候推出的 Matrices——AI 原生电子表格。
我非常喜欢这种方式。首先,电子表格用户体验是支持批量处理工作负载的超级直观且用户友好的方式。每个单元格都可以变成一个独立的智能体,去研究特定的任务。这种批处理方式允许用户同时扩展并与多个智能体交互。
这种 UX 还有其他优势。电子表格格式是非常常见的用户界面,大多数用户都很熟悉,因此它可以轻松融入现有的工作流程中。这种 UX 对于数据丰富化尤其适用,这是 LLM 的一个常见使用场景,每列可以代表不同的待丰富属性。
从那时起,我在几个地方看到了这种 UX(Clay 和 Otto 是两个很好的例子)。
3.生成式 UI
「生成式 UI」可以有多种不同的含义。
一种解释是模型生成用于显示的原始组件,即真正的生成式 UI。这类似于 WebSim 等应用程序。其背后是,智能体主要编写原始 HTML 代码,允许其完全控制显示的内容。然而,这种方法可能会导致生成的 HTML 质量不一,因此最终结果可能看起来有些粗糙或不够精致。
另一种更受限的生成式 UI 方法是通过编程将 LLM 的响应映射到不同的预定义 UI 组件上。这通常是通过工具调用实现的。例如,如果 LLM 调用了天气 API,它将触发天气图组件的渲染。由于渲染的组件并非真正生成的(而是被选择的),因此生成的 UI 会更加精致,但在可生成内容的灵活性上有所限制。
4.协作式 UX
一种较少被探讨的 UX 是:当智能体和人类一起工作时会发生什么?想象一下 Google Docs,你可以与团队成员合作撰写或编辑文档——但其中一个合作伙伴是智能体。
我心目中该领域的领先思想家是 Geoffrey Litt 和 Ink & Switch,他们的 Patchwork 项目 是人类与智能体协作的一个很好的例子。
协作式 UX 与之前讨论的环境 UX 有何不同?我们的一位创始工程师 Nuno 强调了两者之间的主要区别:
主要区别在于并发性:
在协作式 UX 中,你和 LLM 经常同时工作,互相「借鉴」彼此的工作
在环境 UX 中,LLM 持续在后台工作,而你则专注于其他事情
这些差异也转化为构建这些应用时的不同需求:
对于协作式 UX,你可能需要展示 LLM 完成的细粒度工作(这可能介于单个 Token 和较大的应用程序特定工作单元之间,例如文本编辑器中的段落)。一个常见需求是自动合并并发更改的方式,类似于 Google Docs 管理实时协作的方式。
对于环境 UX,你可能需要总结 LLM 所完成的工作或突出显示变更。一个常见需求可能是触发由其他系统中的事件(例如通过 webhook)所启动的运行。
那么,如何系统的去学习大模型LLM?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
篇幅有限,部分资料如下:
👉LLM大模型学习指南+路线汇总👈
💥大模型入门要点,扫盲必看!
💥既然要系统的学习大模型,那么学习路线是必不可少的,这份路线能帮助你快速梳理知识,形成自己的体系。
👉大模型入门实战训练👈
💥光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉国内企业大模型落地应用案例👈
💥《中国大模型落地应用案例集》 收录了52个优秀的大模型落地应用案例,这些案例覆盖了金融、医疗、教育、交通、制造等众多领域,无论是对于大模型技术的研究者,还是对于希望了解大模型技术在实际业务中如何应用的业内人士,都具有很高的参考价值。 (文末领取)
💥《2024大模型行业应用十大典范案例集》 汇集了文化、医药、IT、钢铁、航空、企业服务等行业在大模型应用领域的典范案例。
👉LLM大模型学习视频👈
💥观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 (文末领取)
👉640份大模型行业报告👈
💥包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
👉获取方式:
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓
相关文章:
LangChain 创始人万字科普:手把手教你设计 Agent 用户交互
LangChain 可以算是 LLM 时代做 AI 应用开发必备的框架和平台,从模型选择、数据库链接与各种 Agent 搭建等,AI 应用的搭建、运行和管理都可以在 LangChain 上进行。 某种意义上,LangChain 可能是最了解 Agent(智能体)…...
Docker 用例:15 种最常见的 Docker 使用方法
容器化应用程序而不是将它们托管在虚拟机上是过去几年一直流行的概念,使容器管理流行起来。Docker 处于这一转变的核心,帮助组织无缝地采用容器化技术。最近,Docker 用例遍布所有行业,无论规模大小和性质如何。 什么是Docker&…...
若依 RuoYi4.6.0 代码审计
环境布置: 到官网下载源码:https://github.com/yangzongzhuan/RuoYi 采用phpstudy集成数据库,5.7版本。JDK1.8。 IDEA打开项目,等待自动加载,修改application-druid.yml配置文件:数据库名,账…...
C语言入门-选择结构
在编程中,我们经常需要根据不同的条件执行不同的操作。C语言为此提供了几种非常实用的选择结构:条件运算符、逻辑运算、if语句和switch语句。接下来,让我们深入探讨这些重要的知识点,帮助你更好地理解和掌握C语言的选择结构。 1.…...
Legion拯救者 刃7000K-26IAB联想台式机T5 26IAB7(90SU,90SV,90SW,90SX)原厂Windows11系统镜像下载
适用机型:【90SW、90SX、90SU、90SV】 链接:https://pan.baidu.com/s/1gJ4ZwWW2orlGYoPk37M-cg?pwd4mvv 提取码:4mvv lenovo联想原装WIN系统自带所有驱动、出厂主题专用壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软…...
代码随想录算法训练营第二十四天|Day24 回溯算法
93.复原IP地址 题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/ 思路 char** result; int resultTop; int segments[3]; int isValid(char* s…...
vue elementui table编辑表单时,弹框增加编辑明细数据
需求: 前端进行新增表单时,同时增加表单的明细数据。明细数据部分,通过弹框方式增加或者编辑。 效果图: 代码: <!-- 新增主表弹窗 Begin --><el-dialog:title"titleInfo"top"5vh"centerwidth"…...
springboot集成Redisson做分布式消息队列
这里演示Redisson做分布式消息队列。首先引入 Redisson依赖,官方github <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.17.6</version> </dependen…...
如何通过Lua语言请求接口拿到数据
文章目录 概要http客户端通过请求下载数据 概要 当某个需求是需要在模块内请求接口拿到数据,需要使用http客户端调用接口 http客户端 LuaSOC请求接口官方文档 调用:http.request(method,url,headers,body,opts,ca_file,client_ca, client_key, clien…...
Android 13 SystemUI 隐藏下拉快捷面板部分模块(wifi,bt,nfc等)入口
frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java createTileInternal(tileSpec)方法注释想隐藏的模块即可。...
自由学习记录(14)
unity操作问题 位置:子物体的位置是相对于父物体的。如果你移动父物体,子物体会保持相对于父物体的相对位置,跟着一起移动。 旋转:子物体的旋转也是相对于父物体的。旋转父物体会导致子物体围绕父物体的原点旋转。 缩放…...
疯狂Spring Boot讲义[推荐1]
《疯狂Spring Boot讲义》是2021年电子工业出版社出版的图书,作者是李刚 《疯狂Spring Boot终极讲义》不是一本介绍类似于PathVariable、MatrixVariable、RequestBody、ResponseBody这些基础注解的图书,它是真正讲解Spring Boot的图书。Spring Boot的核心…...
vue中$nextTick的作用是什么,什么时候使用
$nextTick 是 Vue 提供的一个方法,用于在下一次 DOM 更新周期之后执行回调函数。它通常用于在 Vue 完成数据更新后,需要访问更新后的 DOM 状态时,保证操作的是更新后的 DOM。 工作原理: Vue 是异步更新 DOM 的,当数据…...
Redis实现全局ID生成器
全局ID生成器 为什么要用全局ID生成器 1.当我们使用数据库自增来实现id的生成时,规律过于明显,会给用户暴露很多信息 2.当我们订单量过大时无法用数据库的一张表来存放订单,如果两张表的id都是自增的话,id就会出现重复 什么是全局ID生成器 全局ID生成器,是一种在分布式系统…...
Xshell远程连接工具详解
Xshell是一款在Windows平台上运行的远程连接工具,它支持SSH1、SSH2以及Microsoft Windows平台的TELNET协议。Xshell通过互联网实现对远程主机的安全连接,帮助用户在复杂的网络环境中享受他们的工作。本文将详细介绍Xshell的溯源、最新版本以及它的优势。…...
如何在verilog设计的磁盘阵列控制器中实现不同RAID级别(如RAID 0、RAID 1等)的切换?
以下是一种在Verilog设计的磁盘阵列控制器中实现不同RAID级别(以RAID 0和RAID 1为例)切换的方法: 添加控制信号 在磁盘阵列控制器模块中添加一个输入信号,例如raid_mode,用于选择RAID模式。假设raid_mode = 0表示RAID 0模式,raid_mode = 1表示RAID 1模式。module raid_co…...
基于元神操作系统实现NTFS文件操作(十)
1. 背景 本文补充介绍文件遍历操作的部分附加内容,譬如,过滤掉系统元文件、过滤掉重复的文件项、过滤掉隐藏文件等,并提供了基于元神操作系统的部分实现代码。 2. 方法 (1)过滤掉系统元文件 NTFS文件系统的前16个元…...
Qt的几个函数方法
void receiveInfo1() {// 假设这是从串口接收到的字符串QString receivedString "23.5C,45%,1012hPa";// 使用逗号分隔符分割字符串QStringList parts receivedString.split(,);// 检查分割后的列表是否有足够的部分if (parts.size() > 3) {QString part1 part…...
openpnp - bug - 散料飞达至少定义2个物料
文章目录 openpnp - bug - 散料飞达至少定义2个物料笔记END openpnp - bug - 散料飞达至少定义2个物料 笔记 散料飞达上定义的物料个数用完了,现在只需要一个料就可以。 用顶部相机去找编带上是否还有一个单独的料,找到了。 定义散料飞达的料为1个&…...
HDFS异常org.apache.hadoop.hdfs.protocol.NSQuotaExceededException
HDFS异常org.apache.hadoop.hdfs.protocol.NSQuotaExceededException 异常信息: Hive:org.apache.hadoop.hdfs.protocol.NSQuotaExceededException: The NameSpace quota (directories and files) of directory /xxxdir is exceeded: quota10000 file count15001N…...
数据库的构成与手写简单数据库的探索
一、引言 在当今数字化的时代,数据库扮演着至关重要的角色。无论是企业管理系统、电子商务平台还是各种移动应用,都离不开数据库的支持。数据库是存储和管理数据的核心工具,它的高效性、可靠性和安全性对于数据的处理和应用至关重要。本文将…...
基于STM32的智能晾衣架设计
引言 随着智能家居的普及,智能晾衣架成为了提升生活便利性的重要设备。智能晾衣架通过集成多个传感器,能够自动感知天气变化、湿度、光照等环境因素,实现自动升降、风干和报警功能,帮助用户更加高效地晾晒衣物。本项目基于STM32设…...
【MAUI】模糊控件(毛玻璃高斯模糊亚克力模糊)
文章目录 XAML.CSToBytes方法使用效果 常试过AcrylicView.MAUI和Sharpnado.MaterialFrame,对于二者教程很少,使用直接写控件然后调属性,没有报错但也并没有效果所幸就自己写一个 XAML <?xml version"1.0" encoding"utf-…...
深度学习:pandas篇
1. Pandas 基础 Pandas 是一个帮助你处理和分析数据的工具 安装 Pandas pip install pandas 导入 Pandas,我们用 pd 来代替 Pandas 的全称,这样以后写代码的时候更简洁 import pandas as pd 建 Series 和 DataFrame Pandas 最基本的两个数据结构是…...
Redis学习文档(Redis基本数据类型【Hash、Set】)
Hash(哈希) 介绍 Redis 中的 Hash 是一个 String 类型的 field-value(键值对) 的映射表,特别适合用于存储对象,后续操作的时候,你可以直接修改这个对象中的某些字段的值。 Hash 类似于 JDK1.…...
15分钟学Go 第9天:函数的定义与调用
第9天:函数的定义与调用 欢迎来到第9天的Go语言学习模块!今天我们将深入探讨函数的定义与调用,帮助你掌握如何编写和使用函数。学习函数不仅是Go语言的基础,也是程序设计的核心概念之一。这一节将详细介绍函数的结构、参数传递、…...
Java虚拟机:JVM介绍
1024 程序员节日快乐!愿您我的代码永远没有 bug ,人生永远没有 bug ! JVM 概述JVM 架构 概述 JVM( Java Virtual Machine ,Java 虚拟机),是 Java 语言的运行环境,是运行所有 Java 程…...
R数据科学 16.5.3练习题
(1) 编写代码以使用一种映射函数完成以下任务。 a. 计算 mtcars 数据集中每列的均值。 b. 确定 nycflights13::flights 数据集中每列的类型。 c. 计算 iris 数据集中每列唯一值的数量。 d. 分别使用 μ -10、0、10 和 100 的正态分布生成 10 个随机数。 library(purrr) # 计算…...
通过conda install -c nvidia cuda=“11.3.0“ 安装低版本的cuda,但是却安装了高版本的12.4.0
问题 直接通过 conda install -c nvidia cuda"11.3.0"安装得到的却是高版本的 不清楚原理 解决方法 不过我们可以分个安装 runtime toolkit 和 nvcc 安装指定版本的 cudatoolkit 和 nvcc conda install -c nvidia cuda-cudart"11.3.58" conda instal…...
简易CPU设计入门:验证取指令模块
项目代码下载 还是请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后ÿ…...
织梦网站怎么做备份/自己建网站怎样建
车牌识别行业已具备一定的市场规模,在电子警察、公路卡口、停车场、商业管理、汽修服务等领域已取得了部分应用。 import glob # Contains all .txt files except our listof classes txt_files [file for file inglob.glob(images/*.txt) if file ! images/clas…...
来年做啥网站致富/百度竞价入门教程
在Java程序运行过程中,对象会不断的被新建和回收,而对象大部分情况下是放在堆空间中的,所以一旦对象太多导致堆空间不足,就会抛出OOM异常,也就是堆内存溢出了。 就像查案一样,程序出现问题的时候ÿ…...
云服务器怎么样做网站/seo整站优化新站快速排名
本文面向需要在不同版本的 TensorFlow 之间向后兼容(针对代码或者数据)的用户,以及想要修改 TensorFlow 并同时保持兼容性的开发者。 语义化版本控制 2.0 TensorFlow 的公开 API 遵循语义化版本控制 2.0 (semver)。每个版本的 TensorFlow 都采…...
沈阳德泰诺网站建设公司/建站
那个身高不足一米六零的东方小个子,这次很有可能又搞了一笔大买卖。 据多家外媒报道,日本软银已同意以234亿英镑收购芯片巨头ARM。软银将为每股ARM股票现金支付17英镑,较ARM上周收盘价溢价43%。目前官方还未公开确认。 在此之前,软…...
专业网站建设分类标准/广告推广一个月多少钱
hi小伙伴们大家好-,初次与大家见面,我是Boy Isolation,一个喜欢数学物理的普通大学生,这篇文章将分享我觉得非常有趣又实用的一个数学概念给大家。如果觉得有帮助或是有趣,留下一个赞呗。在数学分析中有关函数极限的部…...
利于优化的网站/谷歌在线搜索
音视频实践学习 android全平台编译ffmpeg以及x264与fdk-aac实践ubuntu下使用nginx和nginx-rtmp-module配置直播推流服务器android全平台编译ffmpeg合并为单个库实践android-studio使用cmake编译ffmpeg实践android全平台编译ffmpeg视频解码器实践android全平台编译ffmpeg支持命…...