马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
各人好,我是jobleap.cn的小九。
AutoGPT 是一款基于大语言模子(LLM)的自主智能署理框架,可以或许自主规划、实行任务、调用工具并迭代优化效果,无需人工连续干预。本文将从环境搭建、核心 API 剖析到实战案例,全面教学 AutoGPT 的常用用法,串联其核心 API,资助你快速把握该框架的使用。
一、前置准备
1. 环境要求
- Python 版本:3.10+(AutoGPT 对 Python 版本兼容性要求较高)
- 依靠:OpenAI API 密钥(核心 LLM 驱动)、可选的第三方工具依靠(如 requests、beautifulsoup4 等)
2. 安装 AutoGPT
- # 安装核心库
- pip install autogpt==0.7.0 # 指定稳定版本,避免新版API变动
- # 安装常用依赖(自定义工具/内存管理)
- pip install python-dotenv requests beautifulsoup4 redis
复制代码 3. 设置 API 密钥
创建 .env 文件,设置 OpenAI API 密钥(AutoGPT 核心依靠 OpenAI LLM):- # .env 文件内容
- OPENAI_API_KEY=your_openai_api_key_here
- OPENAI_API_BASE=https://api.openai.com/v1 # 国内用户可配置代理地址
复制代码 二、AutoGPT 核心 API 剖析
AutoGPT 的核心本领围绕「智能署理(Agent)」睁开,核心 API 包罗:初始化署理、目标设置、工具注册、内存管理、运行署理、日记设置等。
1. 初始化 AutoGPT 署理(核心 API)
AutoGPT 类是框架的核心,用于创建智能署理实例,参数决定署理的脚色、目标、资源限定等。
关键参数分析:
参数名作用示例ai_name署理名称"DataAnalystGPT"ai_role署理脚色形貌"专业的数据分析师,负责爬取数据并生因素析陈诉"goals署理目标列表(优先级从高到低)["爬取https://example.com/data的表格数据", "分析数据的趋势", "天生markdown格式陈诉"]api_budgetAPI 调用预算(美元)1.0memory内存实例(默认本地内存)LocalMemory()llm_providerLLM 提供商(默认 openai)"openai"代码示例:
- from autogpt import AutoGPT
- from autogpt.memory import LocalMemory
- from dotenv import load_dotenv
- # 加载.env中的API密钥
- load_dotenv()
- # 初始化内存(本地内存,可选Redis内存)
- memory = LocalMemory()
- # 初始化AutoGPT代理
- agent = AutoGPT(
- ai_name="DataAnalystGPT",
- ai_role="专业的数据分析师,负责爬取指定网页数据、分析趋势并生成markdown报告",
- goals=[
- "爬取https://example.com/sample-data的HTML表格数据",
- "计算数据中每月销售额的平均值和增长率",
- "将分析结果生成名为sales_analysis.md的markdown报告",
- "报告保存到当前目录"
- ],
- api_budget=1.0,
- memory=memory
- )
复制代码 2. 动态设置/修改署理目标(set_goals API)
若需在运行中修改署理目标,使用 set_goals 方法,覆盖原有目标列表。
代码示例:
- # 动态修改目标(比如新增“发送报告到指定邮箱”)
- new_goals = [
- "爬取https://example.com/sample-data的HTML表格数据",
- "计算每月销售额增长率",
- "生成sales_analysis.md报告",
- "将报告通过邮件发送到[email protected]"
- ]
- agent.set_goals(new_goals)
复制代码 3. 注册自界说工具(register_tool API)
AutoGPT 内置了文件使用、网页欣赏等根本工具,但实际场景需自界说工具(如爬虫、数据分析),通过 register_tool 注册自界说工具。
自界说工具开辟规范:
- 工具函数需用 @tool 装饰器标志;
- 函数需包罗清晰的形貌(供 LLM 明白工具用途);
- 参数需明白范例和分析。
代码示例(自界说爬虫工具):
- from autogpt.tools.decorators import tool
- import requests
- from bs4 import BeautifulSoup
- # 自定义工具:爬取网页表格数据
- @tool("crawl_table_data", "爬取指定URL的HTML表格数据,返回结构化列表")
- def crawl_table_data(url: str) -> list:
- """
- 爬取指定URL的HTML表格数据,返回结构化的列表(每行数据为一个字典)
-
- 参数:
- url (str): 目标网页URL
-
- 返回:
- list: 表格数据,格式如[{"月份": "1月", "销售额": "10000"}, ...]
- """
- try:
- response = requests.get(url, timeout=10)
- response.raise_for_status()
- soup = BeautifulSoup(response.text, "html.parser")
- table = soup.find("table")
- if not table:
- return ["未找到表格数据"]
-
- # 解析表格头部
- headers = [th.text.strip() for th in table.find("thead").find_all("th")]
- # 解析表格行
- rows = []
- for tr in table.find("tbody").find_all("tr"):
- cells = [td.text.strip() for td in tr.find_all("td")]
- rows.append(dict(zip(headers, cells)))
- return rows
- except Exception as e:
- return [f"爬取失败:{str(e)}"]
- # 注册自定义工具到代理
- agent.register_tool(crawl_table_data)
复制代码 4. 内存管理 API(核心:add_memory/get_memory)
AutoGPT 通过内存生存任务上下文、工具调用纪录等,支持本地内存(LocalMemory)和 Redis 内存(RedisMemory),核心 API 包罗:
API 方法作用add_memory(content)向内存中添加内容get_memory(query)根据查询词检索内存内容clear_memory()清空内存代码示例:
- # 手动添加内存(记录任务开始时间)
- agent.memory.add_memory("2025-12-05 10:00:00 开始执行销售数据爬取任务")
- # 检索内存(查看任务相关记录)
- memory_results = agent.memory.get_memory("销售数据爬取")
- print("内存检索结果:", memory_results)
复制代码 5. 运行署理 API(核心:run_continuous/run_once)
这是触发署理实行任务的核心 API,有两种运行模式:
方法作用实用场景run_continuous()连续运行,直到完玉成部目标或到达 API 预算全自动任务实行run_once()单次运行(实行一步思考+举措)调试/分步实行代码示例:
- # 连续运行代理(直到完成所有目标)
- print("开始执行AutoGPT代理任务...")
- agent.run_continuous()
复制代码 6. 日记设置 API(set_logging_config)
AutoGPT 默认输出日记到控制台,可通过 set_logging_config 设置日记级别、输出文件等。
代码示例:
- import logging
- from autogpt.utils.logging import set_logging_config
- # 配置日志:级别为INFO,输出到文件和控制台
- set_logging_config(
- log_level=logging.INFO,
- log_file="autogpt_task.log" # 日志保存到该文件
- )
复制代码 三、实战案例:串联全部核心 API 完成完备任务
任务目标
创建一个 AutoGPT 署理,完成以下完备流程:
- 爬取指定网页的贩卖数据表格;
- 分析数据(盘算每月贩卖额增长率);
- 天生 markdown 格式分析陈诉;
- 生存陈诉到本地;
- 纪录任务日记并通过内存生存上下文。
完备代码
- # 1. 导入依赖
- from autogpt import AutoGPT
- from autogpt.memory import LocalMemory
- from autogpt.tools.decorators import tool
- from autogpt.utils.logging import set_logging_config
- from dotenv import load_dotenv
- import requests
- from bs4 import BeautifulSoup
- import logging
- # 2. 基础配置
- load_dotenv() # 加载API密钥
- set_logging_config(log_level=logging.INFO, log_file="sales_analysis.log") # 配置日志
- # 3. 自定义工具:爬取表格数据+数据分析
- @tool("crawl_table_data", "爬取指定URL的HTML表格数据,返回结构化列表")
- def crawl_table_data(url: str) -> list:
- """爬取指定URL的HTML表格数据,返回结构化字典列表"""
- try:
- response = requests.get(url, timeout=10)
- response.raise_for_status()
- soup = BeautifulSoup(response.text, "html.parser")
- table = soup.find("table")
- if not table:
- return ["未找到表格数据"]
-
- headers = [th.text.strip() for th in table.find("thead").find_all("th")]
- rows = []
- for tr in table.find("tbody").find_all("tr"):
- cells = [td.text.strip() for td in tr.find_all("td")]
- rows.append(dict(zip(headers, cells)))
- return rows
- except Exception as e:
- return [f"爬取失败:{str(e)}"]
- @tool("calculate_growth_rate", "计算每月销售额增长率,输入为销售数据列表,返回带增长率的列表")
- def calculate_growth_rate(sales_data: list) -> list:
- """
- 计算每月销售额增长率,公式:(本月销售额-上月销售额)/上月销售额 * 100%
-
- 参数:
- sales_data (list): 销售数据列表,格式如[{"月份": "1月", "销售额": "10000"}, ...]
-
- 返回:
- list: 新增增长率字段的销售数据
- """
- try:
- # 转换销售额为数字
- for item in sales_data:
- item["销售额"] = float(item["销售额"].replace(",", ""))
-
- # 计算增长率
- for i in range(1, len(sales_data)):
- prev_sales = sales_data[i-1]["销售额"]
- curr_sales = sales_data[i]["销售额"]
- growth_rate = (curr_sales - prev_sales) / prev_sales * 100
- sales_data[i]["增长率(%)"] = round(growth_rate, 2)
-
- # 第一个月增长率为0
- sales_data[0]["增长率(%)"] = 0.0
- return sales_data
- except Exception as e:
- return [f"计算失败:{str(e)}"]
- # 4. 初始化代理
- memory = LocalMemory()
- agent = AutoGPT(
- ai_name="SalesAnalystGPT",
- ai_role="专业的销售数据分析师,负责爬取销售数据、计算增长率并生成markdown报告",
- goals=[
- "调用crawl_table_data工具爬取https://example.com/sales-data的表格数据",
- "调用calculate_growth_rate工具计算每月销售额增长率",
- "生成包含月份、销售额、增长率的markdown分析报告",
- "将报告保存为sales_analysis.md到当前目录",
- "在内存中记录报告生成完成的时间"
- ],
- api_budget=2.0,
- memory=memory
- )
- # 5. 注册自定义工具
- agent.register_tool(crawl_table_data)
- agent.register_tool(calculate_growth_rate)
- # 6. 运行代理
- if __name__ == "__main__":
- print("=== 启动SalesAnalystGPT代理 ===")
- agent.run_continuous()
-
- # 运行完成后检索内存
- print("\n=== 内存中的任务记录 ===")
- memory_records = agent.memory.get_memory("报告生成")
- for record in memory_records:
- print(record)
复制代码 四、关键注意事项
- API 密钥权限:确保 OpenAI API 密钥有充足的额度,且支持 gpt-3.5-turbo/gpt-4(AutoGPT 优先使用 gpt-4 以包管自主本领);
- 工具形貌的告急性:自界说工具的文档字符串(docstring)需清晰、具体,LLM 会根据形貌判定是否调用该工具;
- 内存选择:本地内存恰当单机调试,Redis 内存恰当分布式/恒久运行的署理;
- 目标计划原则:目标列表需清晰、可量化、优先级明白,克制暗昧形貌(如“分析数据”→“盘算每月贩卖额增长率”);
- 调试本领:使用 run_once() 更换 run_continuous() 分步调试,检察署理的思考过程和工具调用逻辑。
五、扩展方向
- 集成更多工具:如数据库使用(SQLAlchemy)、邮件发送(smtplib)、Excel 处置惩罚(pandas)等;
- 切换 LLM 提供商:AutoGPT 支持 Azure OpenAI、Anthropic 等,只需修改 llm_provider 参数;
- 高级内存管理:使用 Pinecone/FAISS 向量数据库作为内存,提升上下文检索服从;
- 多署理协作:通过 AutoGPT 的多署理 API 实现分工协作(如爬代替理+分析署理+陈诉署理)。
通过以上教程,你已把握 AutoGPT 核心 API 的使用方法,并能串联全部常用 API 完成端到端的自主任务。AutoGPT 的核心代价在于“自主决定”,公道计划目标和工具,可大幅低极重复任务的人工资本。
|