微信扫码
添加专属顾问
我要投稿
深入探索LLM Agents和ReAct框架的革命性进展。 核心内容: 1. AI Agents的发展历程和里程碑事件 2. LLM Agents的构成要素及其工作原理 3. ReAct框架在各行业中的应用实例与优势分析
LLM Agents 作为一个新兴且极具潜力的领域,正逐渐改变人们与技术交互的方式。本文将深入探讨 LLM Agents,重点聚焦于 ReAct 框架,剖析其原理、优势以及实际应用。
“Agents” 这一概念在人工智能领域并非新生事物。从早期简单的语音激活玩具到如今功能强大的数字助理,AI Agents 经历了漫长的发展历程。
1916 年的 Radio Rex 是最早的例子之一,这是一款语音激活玩具,当你呼唤它的名字时,它会做出反应,尽管功能简单,却开启了机器依照指令行动的先河。1952 年,Bell Labs 推出 Audrey,它能够识别 spoken digits,为语音识别技术奠定了基础。
1960 年代,MIT 的 Joseph Weizenbaum 创造了 ELIZA,它通过简单的模式匹配模拟对话。虽然 ELIZA 的回复并非基于真正的理解,但却引发了人们对机器智能交互的思考,产生了著名的 ELIZA 效应。1970 年代,Carnegie Mellon University 开发的 Harpy,是早期的语音识别系统,它利用语言模型减少错误,能理解大约 1000 个单词 。
到了 1980 年代,IBM 的 Tangora 使用统计方法识别多达 20000 个单词,为现代语音转文本软件奠定了基础。1990 年代,Dragon NaturallySpeaking 成为首批商业语音识别系统之一,能够实时将语音转录为文本,改变了人们与计算机的交互方式。同年,IBM Simon 智能手机结合了基本的语音识别和短信功能,预示着多功能数字助理的到来。
2011 年,Apple 推出 Siri,利用自然语言处理理解用户请求,执行各种任务并进行基本对话。2014 年,Amazon 的 Alexa 问世,迅速融入智能家居生态系统,不仅能回答问题,还能管理家庭设备、下单购物和提供娱乐 。这些系统都可被视为 “Agents”,其中部分借助人工智能的系统,如 Siri 和 Alexa,属于 “AI Agents”。
随着 LLM 的发展,LLM Agents 应运而生。LLM Agents 是能够利用 LLM 对问题进行推理、制定解决方案并借助一系列工具、内存和检索执行计划的系统。它主要包含四个关键组件:检索、推理、记忆和工具使用。
检索功能使 Agent 能够获取实时数据,确保信息的准确性。例如,在金融领域,Agent 可以获取最新的市场趋势数据,为投资者提供及时的建议。推理方面,通过先进的提示技术,如思维链,引导 Agent 做出决策。以医疗领域为例,Agent 可以根据患者的症状和医学知识进行推理,提供初步的诊断建议。记忆包括短期记忆(近期对话历史)、长期记忆(结构化信息存储)和特定任务回忆,使 Agent 能够适应不同场景并提供个性化服务。工具使用则让 Agent 能够与外部系统交互,获取数据或执行操作,比如在电商场景中,Agent 可以调用库存系统查看商品是否有货 。
ReAct,即 Reasoning and Acting,于 2023 年 3 月在论文 “ReAct: Synergizing Reasoning and Acting in Language Models” 中被提出。它旨在让 LLM 在解决任务时更像人类一样思考和行动。
ReAct 框架主要包含三个步骤:推理、行动和观察。当接收到问题时,Agent 首先进行推理,生成解决问题的思路、计划或策略。然后,根据推理结果采取行动,比如搜索信息或与环境进行交互。最后,Agent 观察行动产生的新信息,并利用这些信息进一步推理和行动,直到得出最终答案。
以 “What is the population of the capital of France?” 为例,ReAct Agent 会先推理出需要将问题拆分为两部分:找出法国的首都,然后查询该首都的人口。接着,它会执行搜索 “capital of France” 的行动,观察搜索结果得知法国首都是巴黎。之后,再次推理需要查找巴黎的人口,并采取搜索 “population of Paris” 的行动 。
ReAct 框架具有显著的优势。首先是协同组合,它将推理和行动相结合,发挥两者的协同作用。通过推理指导行动,行动又为进一步推理提供依据,形成一个高效的循环。其次,ReAct 框架提高了可解释性和可信度。它生成的任务解决轨迹比没有推理痕迹的基线更具可解释性,让人们能够区分模型内部知识和外部环境信息。最后,ReAct 框架使问题解决过程更具事实依据和可靠性。借助外部知识库,Agent 能够获取更准确的信息,从而得出更可靠的答案 。
为了构建一个文本到 SQL 的 Agent,首先需要搭建一个示例数据库。这里使用 SQLite 数据库,并创建两个表:“companies” 表用于存储公司详细信息,包括 id、title 和 description;“customers” 表用于存储客户信息,包括 id、name、revenue 以及一个外键 company_id,用于关联 “companies” 表。
import sqlite3def create_sample_database(): """ Create a simple SQLite database with a 'companies' table and a 'customers' table. Each company has an id, title, and description. Each customer has an id, name, revenue, and a foreign key company_id referencing the companies table. This function resets the database for a clean slate. """ conn = sqlite3.connect("sample.db") cur = conn.cursor() # Enable foreign key support in SQLite. cur.execute("PRAGMA foreign_keys = ON;") # Create the companies table. cur.execute(""" CREATE TABLE companies ( id INTEGER PRIMARY KEY, title TEXT NOT NULL, description TEXT ) """) # Create the customers table with a foreign key to companies. cur.execute(""" CREATE TABLE customers ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, revenue REAL NOT NULL, company_id INTEGER, FOREIGN KEY (company_id) REFERENCES companies(id) ON DELETE SET NULL ) """) # Insert sample data into companies. companies_data = [ (1, 'Acme Corp', 'Leading provider of innovative solutions'), (2, 'Beta Inc', 'Specializes in data analytics and insights'), (3, 'Gamma LLC', 'Pioneer in cloud computing services') ] cur.executemany("INSERT INTO companies (id, title, description) VALUES (?, ?, ?)", companies_data) # Insert sample data into customers. customers_data = [ (1, 'Alice', 1500.0, 1), (2, 'Bob', 2400.0, 2), (3, 'Charlie', 1800.0, 1), (4, 'Diana', 3200.0, 3), (5, 'Ethan', 2100.0, 2) ] cur.executemany("INSERT INTO customers (id, name, revenue, company_id) VALUES (?, ?, ?, ?)", customers_data) conn.commit() return conn
接下来,需要为 LLM 设置系统提示,向其提供数据库模式。系统提示告知 LLM 有关表及其列的信息,以便它能够生成有效的 SQL 查询。
system_prompt = f"""You are a helpful assistant that translates natural language queries into SQL queries for the following SQLite database schema.Table "companies": - id: INTEGER PRIMARY KEY - title: TEXT NOT NULL - description: TEXTTable "customers": - id: INTEGER PRIMARY KEY - name: TEXT NOT NULL - revenue: REAL NOT NULL - company_id: INTEGER (Foreign key referencing companies(id))Instructions: 1. When you receive a text query that is relevant to this schema, generate the corresponding SQL query. Return only the SQL query with no additional commentary or characters like ``` or quotes e.g. SELECT * FROM COMPANIES. 2. If you receive a text query that includes an error message, generate a corrected SQL query that fixes the error, again returning only the SQL query. 3. If the query is irrelevant, do not output any extra text."""
Agent 的核心逻辑围绕 ReAct 循环展开:使用 LLM 从自然语言请求生成 SQL 查询,执行查询,如果出现错误,则将错误消息反馈给 LLM,以便其调整并迭代,直到查询成功运行。
import timedef test(): nl_request = input("Enter natural language query: ").strip() if not nl_request: print("No natural language query provided.") return conn = sqlite3.connect("sample.db") max_iterations = 5 iteration = 0 feedback = None final_result = None while iteration < max_iterations: iteration += 1 print(f"--- Iteration {iteration} ---") sql_query = generate_sql_query(nl_request, feedback) if not sql_query: print("No corresponding SQL query for this query.") break result, error = execute_query(conn, sql_query) if error: print(f"SQL execution error: {error}") feedback = f"The query resulted in the following error: {error}. Please adjust the SQL query accordingly." time.sleep(1) else: if not result: print("No results found.") else: print("Query executed successfully. Results:") for row in result: print(row) final_result = result break if final_result is None: print("Failed to generate a valid SQL query after several iterations.") conn.close()
在这个简单的示例中,由于数据库较为简单,Agent 通常能一次生成正确的 SQL 查询。但在更复杂的数据库场景中,ReAct Agent 可能需要多次迭代来优化查询,确保最终的 SQL 准确匹配用户的请求 。
除了文本到 SQL 的转换,ReAct 框架在其他领域也有着广泛的应用前景。在智能客服领域,ReAct Agent 可以更好地理解用户的复杂问题,通过推理和行动,调用知识库、查询相关数据,为用户提供更准确、更全面的解答。在智能写作辅助方面,它可以根据作者的写作意图,推理出合适的写作思路,然后调用各种工具,如语法检查工具、素材库等,帮助作者提升写作质量 。
在数据分析领域,ReAct Agent 能够根据用户提出的分析需求,推理出所需的数据和分析方法,然后调用相应的数据处理工具和算法,生成分析报告。例如,当用户想要分析某产品在不同地区的销售趋势时,Agent 可以先推理出需要从销售数据库中获取相关数据,然后使用数据分析工具进行数据处理和可视化,最终向用户呈现清晰的分析结果 。
本文详细介绍了 LLM Agents 的发展历程,重点探讨了 ReAct 框架。从 AI Agents 的早期雏形到 LLM Agents 的兴起,再到 ReAct 框架的深入剖析和实际应用,我们看到了人工智能在交互能力和问题解决能力上的不断进步。ReAct 框架通过将推理和行动相结合,为 LLM Agents 的发展提供了一个强大的解决方案,展现出了显著的优势和广泛的应用潜力 。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-15
5W字长文 Agent多智能体探秘:架构设计、交互模式与应用实践深度剖析
2025-04-15
刚刚,OpenAI 发布 GPT-4.1 !吊打 GPT-4.5,14 万/月的博士级 AI 曝光
2025-04-15
不怕模型混乱,OpenAI又推“全能模”GPT-4.1,B端市场福音
2025-04-15
AI Agent破局:MCP与A2A定义安全新边界
2025-04-15
一文读懂:如何使用 MCP Server
2025-04-15
谈谈MCP协议,如何缓解我们对大模型“数据安全”的焦虑
2025-04-15
进入"群体智能"时代,MCP和A2A正颠覆AI生态圈
2025-04-15
OpenAI发布GPT-4.1全新系列模型,性能全面超越GPT-4o
2024-08-13
2024-06-13
2024-08-21
2024-09-23
2024-07-31
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-09-17
2025-04-13
2025-04-13
2025-04-13
2025-04-12
2025-04-12
2025-04-11
2025-04-11
2025-04-10