第六章 框架开发实践
第六章 框架开发实践在第四章中,我们通过编写原生代码,实现了 ReAct、Plan-and-Solve 和 Reflection 这几种智能体的核心工作流。这个过程让我们对智能体的内在执行逻辑有了理解。随后,在第五章,我们切换到“使用者”的视角,体验了低代码平台带来的便捷与高效。
本章的目标,就是探讨如何利用业界主流的一些智能体框架,来高效、规范地构建可靠的智能体应用。我们将首先概览当前市面上主流的智能体框架,然后并对几个具有代表性的框架,通过一个完整的实战案例,来体验框架驱动的开发模式。
6.1 从手动实现到框架开发从编写一次性的脚本到使用一个成熟的框架,是软件工程领域一次重要的思维跃迁。我们在第四章中编写的代码,其主要目的是为了教学和理解。它们能很好地完成特定任务,但如果要用它们来构建多个、不同类型且逻辑复杂的智能体应用,很快就会遇到瓶颈。
一个框架的本质,是提供一套经过验证的“规范”。它将所有智能体共有的、重复性的工作(如主循环、状态管理、工具调用、日志记录等)进行抽象和封装,让我们在构建新的智能体时,能够专注于其独特的业务逻辑,而非通用的底层实现。
6.1.1 为何需要智能体框 ...
第五章 基于低代码平台的智能体搭建
第五章 基于低代码平台的智能体搭建在前一章中,通过编写 Python 代码,从零开始实现了 ReAct、Plan-and-Solve 和 Reflection 多种经典的智能体工作流。这个过程为我们打下了坚实的技术基础,让我们深刻理解了智能体内部的运作机理。然而,对于一个快速发展的领域而言,纯代码的开发模式并非总是最高效的选择,尤其是在需要快速验证想法、或者非专业开发者希望参与构建的场景中。
5.1 平台化构建的兴起随着技术的成熟,我们看到越来越多的能力正在被“平台化”。正如网站的开发从手写 HTML/CSS/JS,演进到了可以使用 WordPress、Wix 等建站平台一样,智能体的构建也迎来了平台化的浪潮。本章将聚焦于如何利用图形化、模块化的低代码平台,来快速、直观地搭建、调试和部署智能体应用,将我们的重心从“实现细节”转向“业务逻辑”。
5.1.1 为何需要低代码平台“重复造轮子”对于深入学习至关重要,但在追求工程效率和创新的实战中,我们往往需要站在巨人的肩膀上。尽管我们在第四章中封装了可复用的 ReActAgent、PlanAndSolveAgent 等类, ...
第四章 智能体经典范式构建
第四章 智能体经典范式构建在上一章中,我们深入探讨了作为现代智能体“大脑”的大语言模型。我们了解了其内部的Transformer架构、与之交互的方法,以及它的能力边界。现在,是时候将这些理论知识转化为实践,亲手构建智能体了。
一个现代的智能体,其核心能力在于能将大语言模型的推理能力与外部世界联通。它能够自主地理解用户意图、拆解复杂任务,并通过调用代码解释器、搜索引擎、API等一系列“工具”,来获取信息、执行操作,最终达成目标。 然而,智能体并非万能,它同样面临着来自大模型本身的“幻觉”问题、在复杂任务中可能陷入推理循环、以及对工具的错误使用等挑战,这些也构成了智能体的能力边界。
为了更好地组织智能体的“思考”与“行动”过程,业界涌现出了多种经典的架构范式。在本章中,我们将聚焦于其中最具代表性的三种,并一步步从零实现它们:
ReAct (Reasoning and Acting): 一种将“思考”和“行动”紧密结合的范式,让智能体边想边做,动态调整。
Plan-and-Solve: 一种“三思而后行”的范式,智能体首先生成一个完整的行动计划,然后严格执行。
Reflection: 一种 ...
第三章 大语言模型基础
# 第三章 大语言模型基础
前两章分别介绍了智能体的定义和发展历史,本章将完全聚焦于大语言模型本身解答一个关键问题:现代智能体是如何工作的?我们将从语言模型的基本定义出发,通过对这些原理的学习,为理解LLM如何获得强大的知识储备与推理能力打下坚实的基础。
3.1 语言模型与 Transformer 架构3.1.1 从 N-gram 到 RNN语言模型 (Language Model, LM) 是自然语言处理的核心,其根本任务是计算一个词序列(即一个句子)出现的概率。一个好的语言模型能够告诉我们什么样的句子是通顺的、自然的。在多智能体系统中,语言模型是智能体理解人类指令、生成回应的基础。本节将回顾从经典的统计方法到现代深度学习模型的演进历程,为理解后续的 Transformer 架构打下坚实的基础。
(1)统计语言模型与N-gram的思想
在深度学习兴起之前,统计方法是语言模型的主流。其核心思想是,一个句子出现的概率,等于该句子中每个词出现的条件概率的连乘。对于一个由词 $w_1,w_2,\cdots,w_m$ 构成的句子 S,其概率 P(S) 可以表示为:
$$P(S)=P ...
第二章 智能体发展史
第二章 智能体发展史为了深刻理解现代智能体为何呈现出如今的形态,以及其核心设计思想的由来,本章将回溯历史:从人工智能领域的古典时代出发,探寻最早的“智能”如何在逻辑与符号的规则体系中被定义;继而见证从单一、集中的智能模型到分布式、协作式智能思想的重大转折;最终理解“学习”范式如何彻底改变了智能体获取能力的方式,并催生出我们今天所见的现代智能体。
图 2.1 AI智能体的演进阶梯
如图2.1所示,每一个新范式的出现,都是为了解决上一代范式的核心“痛点”或根本局限。 而新的解决方案在带来能力飞跃的同时,也引入了新的、在当时难以克服的“局限”,而这又为下一代范式的诞生埋下了伏笔。理解这一“问题驱动”的迭代历程,能帮助我们更深刻地把握现代智能体技术选型背后的深层原因与历史必然性。
2.1 基于符号与逻辑的早期智能体人工智能领域的早期探索,深受数理逻辑和计算机科学基本原理的影响。在那个时代,研究者们普遍持有一种信念:人类的智能,尤其是逻辑推理能力,可以被形式化的符号体系所捕捉和复现。这一核心思想催生了人工智能的第一个重要范式——符号主义(Symbolicism),也被称为“逻辑A ...
第一章 初识智能体
第一章 初识智能体欢迎来到智能体的世界!在人工智能浪潮席卷全球的今天,智能体(Agent)已成为驱动技术变革与应用创新的核心概念之一。无论你的志向是成为 AI 领域的研究者、工程师,还是希望深刻理解技术前沿的观察者,掌握智能体的本质,都将是你知识体系中不可或缺的一环。
因此,在本章,让我们回到原点,一起探讨几个问题:智能体是什么?它有哪些主要的类型?它又是如何与我们所处的世界进行交互的?通过这些讨论,希望能为你未来的学习和探索打下坚实的基础。
图 1.1 智能体与环境的基本交互循环
1.1 什么是智能体?在探索任何一个复杂概念时,我们最好从一个简洁的定义开始。在人工智能领域,智能体被定义为任何能够通过传感器(Sensors)感知其所处环境(Environment),并自主地通过执行器(Actuators)采取行动(Action)以达成特定目标的实体。
这个定义包含了智能体存在的四个基本要素。环境是智能体所处的外部世界。对于自动驾驶汽车,环境是动态变化的道路交通;对于一个交易算法,环境则是瞬息万变的金融市场。智能体并非与环境隔离,它通过其传感器持续地感知环境状态。摄像头、 ...
前言
前言自 2022 年底以来,以 ChatGPT 为代表的大语言模型(Large Language Model, LLM)如同一场技术海啸,彻底改变了我们与人工智能交互的方式。LLM 强大的自然语言理解和生成能力,让我们看到了通往通用人工智能(AGI)的曙光。然而,当最初的惊艳沉淀下来,开发者们开始探索下一个前沿:如何让 AI 不仅仅是一个“有问必答”的工具,而是成为一个能自主规划、调用工具、解决复杂问题的“行动者”?
答案,就是 智能体(Agent)。
如果说 2024 年是“百模大战”的元年,那么 2025 年无疑开启了“Agent 元年”。我们看到,技术的焦点正从训练更大、更强的基础模型,转向如何构建更聪明、更高效的智能体应用。单个智能体已经能胜任特定领域的任务,而由多个智能体分工、协作、甚至辩论,共同完成一个宏大目标的多智能体系统(Multi-Agent System, MAS),则被视为释放 LLM 全部潜能、解决真实世界复杂问题的关键钥匙。
然而,当前的生态中存在一个明显的断层:一方面是层出不穷的 Agent 框架和应用,令人眼花缭乱;另一方面,却是系统性知识的极度匮乏。大多 ...
MySQL ORDER BY 有索引却不用?揭秘 `EXPLAIN` 中的“索引失效”真相
MySQL ORDER BY 有索引却不用?揭秘 EXPLAIN 中的“索引失效”真相在日常的 MySQL 性能优化中,我们常常会遇到一个令人困惑的现象:明明为 ORDER BY 的字段创建了索引,但使用 EXPLAIN 查看执行计划时,却发现 key 为 NULL,Extra 中出现了 Using filesort,索引似乎“失效”了。
这究竟是怎么回事?是索引没建好?还是 MySQL 优化器“抽风”了?今天,我们就来深入剖析这一现象背后的真正原因,并提供切实可行的解决方案。
一、问题重现假设我们有一个用户表 users,并为 created_at 字段创建了索引:
1CREATE INDEX idx_created_at ON users(created_at)
执行查询:
1EXPLAIN SELECT * FROM users ORDER BY created_at;
你可能会惊讶地发现,执行计划中并未使用 idx_created_at 索引,而是进行了全表扫描和 filesort。
这到底是为什么?
二、核心原因:回表成本过高要理解这个问题,我们必须先了解 MySQL ...
Linux 根目录扩容操作
Linux 根目录扩容操作需求描述由于测试环境需要,虚拟机根目录需要扩容至120G。
查看本机磁盘环境1234567891011121314151617[root@localhost ~]# df -h文件系统 容量 已用 可用 已用% 挂载点/dev/mapper/centos-root 35G 5.5G 30G 16% /devtmpfs 3.9G 0 3.9G 0% /devtmpfs 3.9G 0 3.9G 0% /dev/shmtmpfs 3.9G 11M 3.9G 1% /runtmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup/dev/sda1 1014M 275M 740M 28% /boottmpfs 783M 52K ...
mysql 创建用户并赋予管理员权限
mysql 创建用户并赋予管理员权限12345678-- 创建新用户,将new_username替换为你想要创建的新用户名,将password替换为用户的密码。CREATE USER 'new_username'@'localhost' IDENTIFIED BY 'password';-- 授予new_username用户在所有数据库和所有表上的所有权限,并且WITH GRANT OPTION选项允许该用户授予其他用户权限GRANT ALL PRIVILEGES ON *.* TO 'new_username'@'localhost' WITH GRANT OPTION;-- 刷新权限以使更改生效FLUSH PRIVILEGES;





