AutoGPT 全面教程:常用 API 串联与实战指南

[复制链接]
发表于 2025-12-5 13:34:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
各人好,我是jobleap.cn的小九。
AutoGPT 是一款基于大语言模子(LLM)的自主智能署理框架,可以或许自主规划、实行任务、调用工具并迭代优化效果,无需人工连续干预。本文将从环境搭建、核心 API 剖析到实战案例,全面教学 AutoGPT 的常用用法,串联其核心 API,资助你快速把握该框架的使用。
一、前置准备

1. 环境要求


  • Python 版本:3.10+(AutoGPT 对 Python 版本兼容性要求较高)
  • 依靠:OpenAI API 密钥(核心 LLM 驱动)、可选的第三方工具依靠(如 requests、beautifulsoup4 等)
2. 安装 AutoGPT
  1. # 安装核心库
  2. pip install autogpt==0.7.0  # 指定稳定版本,避免新版API变动
  3. # 安装常用依赖(自定义工具/内存管理)
  4. pip install python-dotenv requests beautifulsoup4 redis
复制代码
3. 设置 API 密钥

创建 .env 文件,设置 OpenAI API 密钥(AutoGPT 核心依靠 OpenAI LLM):
  1. # .env 文件内容
  2. OPENAI_API_KEY=your_openai_api_key_here
  3. 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"代码示例:
  1. from autogpt import AutoGPT
  2. from autogpt.memory import LocalMemory
  3. from dotenv import load_dotenv
  4. # 加载.env中的API密钥
  5. load_dotenv()
  6. # 初始化内存(本地内存,可选Redis内存)
  7. memory = LocalMemory()
  8. # 初始化AutoGPT代理
  9. agent = AutoGPT(
  10.     ai_name="DataAnalystGPT",
  11.     ai_role="专业的数据分析师,负责爬取指定网页数据、分析趋势并生成markdown报告",
  12.     goals=[
  13.         "爬取https://example.com/sample-data的HTML表格数据",
  14.         "计算数据中每月销售额的平均值和增长率",
  15.         "将分析结果生成名为sales_analysis.md的markdown报告",
  16.         "报告保存到当前目录"
  17.     ],
  18.     api_budget=1.0,
  19.     memory=memory
  20. )
复制代码
2. 动态设置/修改署理目标(set_goals API)

若需在运行中修改署理目标,使用 set_goals 方法,覆盖原有目标列表。
代码示例:
  1. # 动态修改目标(比如新增“发送报告到指定邮箱”)
  2. new_goals = [
  3.     "爬取https://example.com/sample-data的HTML表格数据",
  4.     "计算每月销售额增长率",
  5.     "生成sales_analysis.md报告",
  6.     "将报告通过邮件发送到[email protected]"
  7. ]
  8. agent.set_goals(new_goals)
复制代码
3. 注册自界说工具(register_tool API)

AutoGPT 内置了文件使用、网页欣赏等根本工具,但实际场景需自界说工具(如爬虫、数据分析),通过 register_tool 注册自界说工具。
自界说工具开辟规范:


  • 工具函数需用 @tool 装饰器标志;
  • 函数需包罗清晰的形貌(供 LLM 明白工具用途);
  • 参数需明白范例和分析。
代码示例(自界说爬虫工具):
  1. from autogpt.tools.decorators import tool
  2. import requests
  3. from bs4 import BeautifulSoup
  4. # 自定义工具:爬取网页表格数据
  5. @tool("crawl_table_data", "爬取指定URL的HTML表格数据,返回结构化列表")
  6. def crawl_table_data(url: str) -> list:
  7.     """
  8.     爬取指定URL的HTML表格数据,返回结构化的列表(每行数据为一个字典)
  9.    
  10.     参数:
  11.         url (str): 目标网页URL
  12.    
  13.     返回:
  14.         list: 表格数据,格式如[{"月份": "1月", "销售额": "10000"}, ...]
  15.     """
  16.     try:
  17.         response = requests.get(url, timeout=10)
  18.         response.raise_for_status()
  19.         soup = BeautifulSoup(response.text, "html.parser")
  20.         table = soup.find("table")
  21.         if not table:
  22.             return ["未找到表格数据"]
  23.         
  24.         # 解析表格头部
  25.         headers = [th.text.strip() for th in table.find("thead").find_all("th")]
  26.         # 解析表格行
  27.         rows = []
  28.         for tr in table.find("tbody").find_all("tr"):
  29.             cells = [td.text.strip() for td in tr.find_all("td")]
  30.             rows.append(dict(zip(headers, cells)))
  31.         return rows
  32.     except Exception as e:
  33.         return [f"爬取失败:{str(e)}"]
  34. # 注册自定义工具到代理
  35. 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()清空内存代码示例:
  1. # 手动添加内存(记录任务开始时间)
  2. agent.memory.add_memory("2025-12-05 10:00:00 开始执行销售数据爬取任务")
  3. # 检索内存(查看任务相关记录)
  4. memory_results = agent.memory.get_memory("销售数据爬取")
  5. print("内存检索结果:", memory_results)
复制代码
5. 运行署理 API(核心:run_continuous/run_once)

这是触发署理实行任务的核心 API,有两种运行模式:
方法作用实用场景run_continuous()连续运行,直到完玉成部目标或到达 API 预算全自动任务实行run_once()单次运行(实行一步思考+举措)调试/分步实行代码示例:
  1. # 连续运行代理(直到完成所有目标)
  2. print("开始执行AutoGPT代理任务...")
  3. agent.run_continuous()
复制代码
6. 日记设置 API(set_logging_config)

AutoGPT 默认输出日记到控制台,可通过 set_logging_config 设置日记级别、输出文件等。
代码示例:
  1. import logging
  2. from autogpt.utils.logging import set_logging_config
  3. # 配置日志:级别为INFO,输出到文件和控制台
  4. set_logging_config(
  5.     log_level=logging.INFO,
  6.     log_file="autogpt_task.log"  # 日志保存到该文件
  7. )
复制代码
三、实战案例:串联全部核心 API 完成完备任务

任务目标

创建一个 AutoGPT 署理,完成以下完备流程:

  • 爬取指定网页的贩卖数据表格;
  • 分析数据(盘算每月贩卖额增长率);
  • 天生 markdown 格式分析陈诉;
  • 生存陈诉到本地;
  • 纪录任务日记并通过内存生存上下文。
完备代码
  1. # 1. 导入依赖
  2. from autogpt import AutoGPT
  3. from autogpt.memory import LocalMemory
  4. from autogpt.tools.decorators import tool
  5. from autogpt.utils.logging import set_logging_config
  6. from dotenv import load_dotenv
  7. import requests
  8. from bs4 import BeautifulSoup
  9. import logging
  10. # 2. 基础配置
  11. load_dotenv()  # 加载API密钥
  12. set_logging_config(log_level=logging.INFO, log_file="sales_analysis.log")  # 配置日志
  13. # 3. 自定义工具:爬取表格数据+数据分析
  14. @tool("crawl_table_data", "爬取指定URL的HTML表格数据,返回结构化列表")
  15. def crawl_table_data(url: str) -> list:
  16.     """爬取指定URL的HTML表格数据,返回结构化字典列表"""
  17.     try:
  18.         response = requests.get(url, timeout=10)
  19.         response.raise_for_status()
  20.         soup = BeautifulSoup(response.text, "html.parser")
  21.         table = soup.find("table")
  22.         if not table:
  23.             return ["未找到表格数据"]
  24.         
  25.         headers = [th.text.strip() for th in table.find("thead").find_all("th")]
  26.         rows = []
  27.         for tr in table.find("tbody").find_all("tr"):
  28.             cells = [td.text.strip() for td in tr.find_all("td")]
  29.             rows.append(dict(zip(headers, cells)))
  30.         return rows
  31.     except Exception as e:
  32.         return [f"爬取失败:{str(e)}"]
  33. @tool("calculate_growth_rate", "计算每月销售额增长率,输入为销售数据列表,返回带增长率的列表")
  34. def calculate_growth_rate(sales_data: list) -> list:
  35.     """
  36.     计算每月销售额增长率,公式:(本月销售额-上月销售额)/上月销售额 * 100%
  37.    
  38.     参数:
  39.         sales_data (list): 销售数据列表,格式如[{"月份": "1月", "销售额": "10000"}, ...]
  40.    
  41.     返回:
  42.         list: 新增增长率字段的销售数据
  43.     """
  44.     try:
  45.         # 转换销售额为数字
  46.         for item in sales_data:
  47.             item["销售额"] = float(item["销售额"].replace(",", ""))
  48.         
  49.         # 计算增长率
  50.         for i in range(1, len(sales_data)):
  51.             prev_sales = sales_data[i-1]["销售额"]
  52.             curr_sales = sales_data[i]["销售额"]
  53.             growth_rate = (curr_sales - prev_sales) / prev_sales * 100
  54.             sales_data[i]["增长率(%)"] = round(growth_rate, 2)
  55.         
  56.         # 第一个月增长率为0
  57.         sales_data[0]["增长率(%)"] = 0.0
  58.         return sales_data
  59.     except Exception as e:
  60.         return [f"计算失败:{str(e)}"]
  61. # 4. 初始化代理
  62. memory = LocalMemory()
  63. agent = AutoGPT(
  64.     ai_name="SalesAnalystGPT",
  65.     ai_role="专业的销售数据分析师,负责爬取销售数据、计算增长率并生成markdown报告",
  66.     goals=[
  67.         "调用crawl_table_data工具爬取https://example.com/sales-data的表格数据",
  68.         "调用calculate_growth_rate工具计算每月销售额增长率",
  69.         "生成包含月份、销售额、增长率的markdown分析报告",
  70.         "将报告保存为sales_analysis.md到当前目录",
  71.         "在内存中记录报告生成完成的时间"
  72.     ],
  73.     api_budget=2.0,
  74.     memory=memory
  75. )
  76. # 5. 注册自定义工具
  77. agent.register_tool(crawl_table_data)
  78. agent.register_tool(calculate_growth_rate)
  79. # 6. 运行代理
  80. if __name__ == "__main__":
  81.     print("=== 启动SalesAnalystGPT代理 ===")
  82.     agent.run_continuous()
  83.    
  84.     # 运行完成后检索内存
  85.     print("\n=== 内存中的任务记录 ===")
  86.     memory_records = agent.memory.get_memory("报告生成")
  87.     for record in memory_records:
  88.         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 的核心代价在于“自主决定”,公道计划目标和工具,可大幅低极重复任务的人工资本。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表