从零搭建可运行的 AI Agent 自动化工作流:读取数据、生成报告到定时执行全流程
AI Agent 工作流自动化教程|附完整命令
在过去几年里,AI 的能力已经从“回答问题”逐渐发展到“执行任务”。如果说 ChatGPT 这类大语言模型更像是一个知识型助手,那么 AI Agent 则更像是一个可以理解目标、拆解任务、调用工具、执行流程并返回结果的“自动化员工”。
对于个人开发者、运营人员、产品经理、数据分析师,甚至中小企业团队来说,AI Agent 最有价值的地方并不是“聊天”,而是 自动化完成重复性工作流。例如:自动整理资料、生成报告、抓取网页信息、分析数据、写邮件、调用 API、生成代码、执行命令、创建任务计划等。
本文将从零开始介绍 AI Agent 工作流自动化的核心概念、常见架构、环境准备、实际案例,并附上完整命令,帮助你搭建一个可运行、可扩展的 AI Agent 自动化工作流。
一、什么是 AI Agent 工作流自动化?
1. AI Agent 是什么?
AI Agent 可以理解为具备以下能力的智能程序:
- 理解用户给出的目标;
- 将复杂目标拆解成多个步骤;
- 根据任务需要选择合适工具;
- 执行代码、调用 API、读写文件或访问数据库;
- 根据执行结果继续调整下一步行动;
- 最终完成任务并输出结果。
普通聊天机器人通常是“问一句答一句”,而 AI Agent 更强调 目标驱动和自动执行。
举个例子:
如果你对普通 AI 说:
帮我分析一下最近一周的销售数据。
它可能会告诉你应该如何分析。
但如果你对 AI Agent 说同样的话,它可以进一步执行:
- 读取本地或数据库中的销售数据;
- 清洗数据;
- 计算销售额、订单量、客单价、转化率;
- 找出异常波动;
- 生成 Markdown 或 PDF 报告;
- 发送到指定邮箱或企业微信。
这就是 AI Agent 工作流自动化的价值。
二、AI Agent 工作流自动化适合哪些场景?
AI Agent 工作流自动化非常适合处理具有明确流程、重复性高、数据来源固定或可以工具化的任务。
常见场景包括:
1. 内容生产自动化
- 自动生成日报、周报、月报;
- 根据关键词生成文章大纲;
- 批量生成 SEO 标题和描述;
- 根据网页资料生成摘要;
- 自动生成社交媒体文案。
2. 数据分析自动化
- 自动读取 CSV、Excel 或数据库数据;
- 自动生成统计图表;
- 自动识别异常数据;
- 自动输出分析结论;
- 自动生成数据报告。
3. 编程开发自动化
- 自动生成脚本;
- 自动检查代码;
- 自动生成测试用例;
- 自动修复简单 Bug;
- 自动阅读项目结构并给出说明。
4. 运营工作自动化
- 自动抓取竞品信息;
- 自动汇总用户反馈;
- 自动整理客服问答;
- 自动生成活动复盘;
- 自动推送消息。
5. 企业办公自动化
- 自动整理会议纪要;
- 自动生成待办事项;
- 自动发送邮件;
- 自动同步 Notion、飞书、钉钉等工具;
- 自动构建知识库问答系统。
三、AI Agent 工作流的核心组成
一个完整的 AI Agent 自动化系统通常包含以下几个部分:
1. 大语言模型
大语言模型负责理解任务、推理步骤、生成文本或代码。常见模型包括:
- OpenAI GPT 系列;
- Claude 系列;
- Gemini 系列;
- Qwen 通义千问;
- DeepSeek;
- Llama 开源模型。
2. 工具调用能力
Agent 最大的特点是可以调用工具。例如:
- 调用搜索工具;
- 执行 Python 代码;
- 读取文件;
- 写入数据库;
- 调用外部 API;
- 发送邮件;
- 控制浏览器。
3. 工作流编排
工作流编排用于定义任务执行顺序。常见方式有:
- 顺序执行;
- 条件判断;
- 循环执行;
- 多 Agent 协作;
- 人工审核节点;
- 定时触发。
4. 记忆与上下文
Agent 需要在任务执行过程中保存信息,例如:
- 用户偏好;
- 历史执行记录;
- 文件内容;
- 数据分析结果;
- 对话上下文。
这些信息可以存储在:
- 本地文件;
- SQLite;
- PostgreSQL;
- Redis;
- 向量数据库;
- 知识库系统。
5. 触发方式
AI Agent 可以通过多种方式触发:
- 手动命令行执行;
- 定时任务执行;
- Webhook 触发;
- API 调用;
- 前端按钮触发;
- 消息机器人触发。
四、本文要实现的示例目标
本文将实现一个简单但完整的 AI Agent 自动化工作流:
自动读取一个 CSV 销售数据文件,调用 AI 分析数据,生成一份 Markdown 销售分析报告,并保存到本地。
这个示例虽然简单,但它覆盖了 AI Agent 自动化的关键流程:
- 准备项目环境;
- 安装依赖;
- 配置模型 API Key;
- 创建示例数据;
- 编写 Agent 脚本;
- 读取数据;
- 调用大模型;
- 生成报告;
- 保存结果;
- 扩展为定时任务。
五、环境准备
本文示例基于 Python 实现。你需要提前准备:
- Python 3.10 或以上版本;
- 一个可用的大模型 API Key;
- macOS、Linux 或 Windows 终端环境;
- 基础命令行操作能力。
你可以先检查 Python 版本:
python --version
或者:
python3 --version
如果输出类似下面内容,说明环境可用:
Python 3.11.6
六、创建项目目录
首先创建一个项目目录:
mkdir ai-agent-workflow
cd ai-agent-workflow
创建几个必要目录:
mkdir data reports scripts
项目结构如下:
ai-agent-workflow/
├── data/
│ └── sales.csv
├── reports/
├── scripts/
│ └── sales_agent.py
├── .env
└── requirements.txt
七、创建 Python 虚拟环境
推荐使用虚拟环境,避免依赖冲突。
macOS / Linux
python3 -m venv .venv
source .venv/bin/activate
Windows PowerShell
python -m venv .venv
.venv\Scripts\Activate.ps1
如果激活成功,终端前面通常会出现:
(.venv)
八、安装依赖
创建 requirements.txt:
touch requirements.txt
写入以下内容:
openai
python-dotenv
pandas
tabulate
安装依赖:
pip install -r requirements.txt
如果你希望直接通过命令写入文件,可以使用:
cat > requirements.txt << 'EOF'
openai
python-dotenv
pandas
tabulate
EOF
然后执行:
pip install -r requirements.txt
九、配置 API Key
创建 .env 文件:
touch .env
写入你的 API Key:
OPENAI_API_KEY=你的_API_Key
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini
如果你使用兼容 OpenAI 接口的其他模型服务,也可以修改 OPENAI_BASE_URL 和 OPENAI_MODEL。
例如,如果某个模型服务提供 OpenAI Compatible API,你可以这样配置:
OPENAI_API_KEY=你的_API_Key
OPENAI_BASE_URL=https://your-model-provider.example.com/v1
OPENAI_MODEL=your-model-name
请注意:不要把 .env 文件提交到 GitHub,否则可能导致 API Key 泄露。
建议创建 .gitignore:
cat > .gitignore << 'EOF'
.env
.venv/
__pycache__/
reports/
EOF
十、创建示例销售数据
在 data/sales.csv 中写入示例数据:
cat > data/sales.csv << 'EOF'
date,region,product,orders,revenue,cost
2025-01-01,华东,A产品,120,36000,21000
2025-01-02,华东,A产品,135,40500,23600
2025-01-03,华东,B产品,98,29400,17200
2025-01-04,华南,A产品,160,48000,28800
2025-01-05,华南,C产品,75,22500,15000
2025-01-06,华北,B产品,110,33000,19800
2025-01-07,华北,C产品,90,27000,18000
2025-01-08,华东,A产品,150,45000,26000
2025-01-09,华南,B产品,130,39000,23000
2025-01-10,华北,A产品,105,31500,19000
EOF
你也可以手动创建 CSV 文件,只要字段名保持一致即可。
字段说明:
| 字段 | 含义 |
|---|---|
| date | 日期 |
| region | 区域 |
| product | 产品 |
| orders | 订单数 |
| revenue | 销售收入 |
| cost | 成本 |
十一、编写 AI Agent 脚本
创建脚本文件:
touch scripts/sales_agent.py
写入以下完整代码:
import os
from datetime import datetime
import pandas as pd
from dotenv import load_dotenv
from openai import OpenAI
def load_config():
"""
加载环境变量配置。
"""
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
base_url = os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1")
model = os.getenv("OPENAI_MODEL", "gpt-4o-mini")
if not api_key:
raise ValueError("未检测到 OPENAI_API_KEY,请在 .env 文件中配置。")
return api_key, base_url, model
def load_sales_data(file_path: str) -> pd.DataFrame:
"""
读取销售数据。
"""
if not os.path.exists(file_path):
raise FileNotFoundError(f"销售数据文件不存在:{file_path}")
df = pd.read_csv(file_path)
required_columns = {"date", "region", "product", "orders", "revenue", "cost"}
missing_columns = required_columns - set(df.columns)
if missing_columns:
raise ValueError(f"CSV 缺少必要字段:{missing_columns}")
df["profit"] = df["revenue"] - df["cost"]
df["profit_margin"] = df["profit"] / df["revenue"]
return df
def build_summary(df: pd.DataFrame) -> str:
"""
构建结构化数据摘要,减少直接传入大段原始数据导致的 Token 消耗。
"""
total_orders = int(df["orders"].sum())
total_revenue = float(df["revenue"].sum())
total_cost = float(df["cost"].sum())
total_profit = float(df["profit"].sum())
avg_profit_margin = float(total_profit / total_revenue) if total_revenue else 0
region_summary = (
df.groupby("region")
.agg(
orders=("orders", "sum"),
revenue=("revenue", "sum"),
cost=("cost", "sum"),
profit=("profit", "sum"),
)
.reset_index()
)
region_summary["profit_margin"] = region_summary["profit"] / region_summary["revenue"]
product_summary = (
df.groupby("product")
.agg(
orders=("orders", "sum"),
revenue=("revenue", "sum"),
cost=("cost", "sum"),
profit=("profit", "sum"),
)
.reset_index()
)
product_summary["profit_margin"] = product_summary["profit"] / product_summary["revenue"]
daily_summary = (
df.groupby("date")
.agg(
orders=("orders", "sum"),
revenue=("revenue", "sum"),
profit=("profit", "sum"),
)
.reset_index()
)
summary = f"""
【整体指标】
- 总订单数:{total_orders}
- 总销售收入:{total_revenue:.2f}
- 总成本:{total_cost:.2f}
- 总利润:{total_profit:.2f}
- 平均利润率:{avg_profit_margin:.2%}
【区域汇总】
{region_summary.to_markdown(index=False)}
【产品汇总】
{product_summary.to_markdown(index=False)}
【每日汇总】
{daily_summary.to_markdown(index=False)}
"""
return summary
def generate_report(summary: str, model: str, client: OpenAI) -> str:
"""
调用大模型生成销售分析报告。
"""
system_prompt = """
你是一名资深数据分析师,擅长为业务团队撰写清晰、可执行的销售分析报告。
请使用中文输出,结构清晰,观点明确,避免空泛表达。
报告需要包含:
1. 总体表现概览;
2. 区域表现分析;
3. 产品表现分析;
4. 异常点或值得关注的问题;
5. 可执行的业务建议;
6. 下一步行动计划。
"""
user_prompt = f"""
以下是销售数据摘要,请基于数据生成一份 Markdown 格式的销售分析报告。
{summary}
要求:
- 使用专业但易懂的中文;
- 不要编造数据摘要中不存在的具体数值;
- 可以基于数据趋势提出合理判断;
- 建议要具体,可执行;
- 输出完整 Markdown 报告。
"""
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": system_prompt.strip()},
{"role": "user", "content": user_prompt.strip()},
],
temperature=0.3,
)
return response.choices[0].message.content
def save_report(report: str) -> str:
"""
保存报告到 reports 目录。
"""
os.makedirs("reports", exist_ok=True)
now = datetime.now().strftime("%Y%m%d_%H%M%S")
file_path = f"reports/sales_report_{now}.md"
with open(file_path, "w", encoding="utf-8") as f:
f.write(report)
return file_path
def main():
api_key, base_url, model = load_config()
client = OpenAI(
api_key=api_key,
base_url=base_url,
)
file_path = "data/sales.csv"
print("正在读取销售数据...")
df = load_sales_data(file_path)
print("正在构建数据摘要...")
summary = build_summary(df)
print("正在调用 AI Agent 生成分析报告...")
report = generate_report(summary, model, client)
print("正在保存报告...")
report_path = save_report(report)
print(f"报告已生成:{report_path}")
if __name__ == "__main__":
main()
十二、运行 AI Agent
在项目根目录执行:
python scripts/sales_agent.py
如果一切正常,你会看到类似输出:
正在读取销售数据...
正在构建数据摘要...
正在调用 AI Agent 生成分析报告...
正在保存报告...
报告已生成:reports/sales_report_20250110_153000.md
然后查看报告:
ls reports
打开生成的 Markdown 文件:
cat reports/sales_report_20250110_153000.md
至此,一个最小可用的 AI Agent 工作流就完成了。
十三、这个示例为什么属于 AI Agent 工作流?
有人可能会说:“这不就是一个调用大模型的脚本吗?”
严格来说,AI Agent 并不是一定要非常复杂。只要它具备以下特征,就可以视为一个基础 Agent 工作流:
- 接收明确任务目标;
- 自动读取外部数据;
- 对数据进行预处理;
- 调用模型完成认知型任务;
- 输出结构化结果;
- 将结果保存到指定位置。
在这个示例中,AI 不只是回答问题,而是被嵌入到一个自动化流程中,完成了从数据读取到报告生成的完整链路。
当然,如果你希望让它更像“智能体”,还可以继续增强它的能力,例如:
- 自动判断数据质量;
- 自动选择分析维度;
- 自动生成图表;
- 自动发送报告;
- 支持多轮自我检查;
- 支持调用多个工具;
- 支持定时运行;
- 支持接入企业内部系统。
十四、扩展一:增加自动生成图表
可以安装图表依赖:
pip install matplotlib
在 requirements.txt 中追加:
echo "matplotlib" >> requirements.txt
示例图表代码如下:
import matplotlib.pyplot as plt
def generate_revenue_chart(df):
os.makedirs("reports", exist_ok=True)
daily = df.groupby("date")["revenue"].sum().reset_index()
plt.figure(figsize=(10, 5))
plt.plot(daily["date"], daily["revenue"], marker="o")
plt.title("每日销售收入趋势")
plt.xlabel("日期")
plt.ylabel("销售收入")
plt.xticks(rotation=45)
plt.tight_layout()
chart_path = "reports/revenue_trend.png"
plt.savefig(chart_path)
plt.close()
return chart_path
然后在 main() 中调用:
chart_path = generate_revenue_chart(df)
print(f"图表已生成:{chart_path}")
你还可以把图表路径写入最终 Markdown 报告:

十五、扩展二:自动发送邮件
如果希望报告生成后自动发送邮件,可以使用 Python 内置的 smtplib。
在 .env 中增加:
SMTP_HOST=smtp.example.com
SMTP_PORT=465
SMTP_USER=your_email@example.com
SMTP_PASSWORD=your_password
MAIL_TO=receiver@example.com
发送邮件代码示例:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send_email(subject: str, content: str):
smtp_host = os.getenv("SMTP_HOST")
smtp_port = int(os.getenv("SMTP_PORT", "465"))
smtp_user = os.getenv("SMTP_USER")
smtp_password = os.getenv("SMTP_PASSWORD")
mail_to = os.getenv("MAIL_TO")
if not all([smtp_host, smtp_user, smtp_password, mail_to]):
print("邮件配置不完整,跳过发送。")
return
message = MIMEText(content, "plain", "utf-8")
message["From"] = Header(smtp_user)
message["To"] = Header(mail_to)
message["Subject"] = Header(subject, "utf-8")
with smtplib.SMTP_SSL(smtp_host, smtp_port) as server:
server.login(smtp_user, smtp_password)
server.sendmail(smtp_user, [mail_to], message.as_string())
print("邮件发送成功。")
在 main() 末尾调用:
send_email("AI 自动生成销售分析报告", report)
这样就可以实现:
读取数据 → 分析数据 → 生成报告 → 自动发送邮件
这是非常典型的企业自动化工作流。
十六、扩展三:设置定时任务
如果你希望每天上午 9 点自动运行 Agent,可以配置系统定时任务。
macOS / Linux 使用 cron
查看当前定时任务:
crontab -l
编辑定时任务:
crontab -e
添加以下内容:
0 9 * * * cd /你的路径/ai-agent-workflow && /你的路径/ai-agent-workflow/.venv/bin/python scripts/sales_agent.py >> logs/agent.log 2>&1
注意先创建日志目录:
mkdir logs
如果不知道当前项目路径,可以执行:
pwd
Windows 使用任务计划程序
可以创建一个 run_agent.bat:
@echo off
cd /d C:\你的路径\ai-agent-workflow
.venv\Scripts\python.exe scripts\sales_agent.py >> logs\agent.log 2>&1
创建日志目录:
mkdir logs
然后在 Windows “任务计划程序”中设置每天 9 点运行该 .bat 文件。
十七、扩展四:接入 Webhook
如果你希望由外部系统触发 AI Agent,可以使用 FastAPI 创建一个接口。
安装依赖:
pip install fastapi uvicorn
创建 scripts/api_server.py:
from fastapi import FastAPI
import subprocess
app = FastAPI()
@app.post("/run-sales-agent")
def run_sales_agent():
result = subprocess.run(
["python", "scripts/sales_agent.py"],
capture_output=True,
text=True,
)
return {
"returncode": result.returncode,
"stdout": result.stdout,
"stderr": result.stderr,
}
启动服务:
uvicorn scripts.api_server:app --host 0.0.0.0 --port 8000
调用接口:
curl -X POST http://localhost:8000/run-sales-agent
这样,你就可以通过外部系统、低代码平台、企业微信机器人、飞书机器人、Zapier、Make 等工具触发 Agent。
十八、扩展五:让 Agent 支持多步骤决策
前面的示例中,流程是固定的。如果希望 Agent 更智能,可以让它根据数据状态自动决策。
例如:
- 如果销售额下降,则生成预警;
- 如果利润率低于阈值,则分析原因;
- 如果某区域增长明显,则建议加大投入;
- 如果数据字段缺失,则提示修复;
- 如果报告生成失败,则自动重试。
示例逻辑:
def detect_risks(df):
risks = []
total_revenue = df["revenue"].sum()
total_profit = df["profit"].sum()
profit_margin = total_profit / total_revenue if total_revenue else 0
if profit_margin < 0.3:
risks.append("整体利润率低于 30%,需要关注成本控制。")
region_profit = df.groupby("region")["profit"].sum()
worst_region = region_profit.idxmin()
risks.append(f"利润最低区域为:{worst_region},建议进一步分析。")
return risks
然后将风险信息加入 Prompt:
risks = detect_risks(df)
risk_text = "\n".join([f"- {r}" for r in risks])
这样,Agent 就不只是被动分析,而是开始具备一定的规则判断能力。
十九、实际落地中的关键建议
1. 不要一开始就追求复杂 Agent
很多人一开始就想做一个“全自动超级智能体”,结果往往很难落地。正确做法是:
- 先选择一个具体场景;
- 明确输入和输出;
- 固定流程;
- 跑通最小版本;
- 再逐步增加智能决策和工具调用。
2. Prompt 要尽量结构化
一个好的 Prompt 应该包含:
- 角色设定;
- 输入数据;
- 输出格式;
- 分析维度;
- 约束条件;
- 示例或边界要求。
不要只写:
帮我分析一下数据。
更好的写法是:
你是一名资深数据分析师,请根据以下销售数据摘要生成 Markdown 报告。
报告必须包含总体表现、区域分析、产品分析、风险点和行动建议。
不要编造数据中不存在的数值。
3. 能用程序算的,不要全交给模型
例如:
- 总收入;
- 利润率;
- 排名;
- 同比环比;
- 异常值;
- 分组汇总。
这些更适合用代码计算。模型更适合做:
- 解释数据;
- 总结趋势;
- 生成报告;
- 提出建议;
- 将复杂信息转化为业务语言。
这样可以减少幻觉,提高准确性。
4. 保存中间结果
实际生产环境中,建议保存:
- 原始输入;
- 数据摘要;
- 模型 Prompt;
- 模型输出;
- 执行日志;
- 错误信息。
这样方便排查问题,也方便优化 Agent。
5. 设置失败重试和人工审核
对于关键业务流程,不建议完全无人值守。可以加入:
- 失败自动重试;
- 输出结果校验;
- 敏感操作人工确认;
- 邮件发送前审核;
- API 调用限流。
二十、常见问题排查
1. 提示 OPENAI_API_KEY 未配置
检查 .env 文件是否存在,并确认内容类似:
OPENAI_API_KEY=sk-xxxx
同时确认脚本中调用了:
load_dotenv()
2. 模型接口连接失败
检查:
- API Key 是否正确;
OPENAI_BASE_URL是否正确;- 当前网络是否可访问;
- 模型名称是否填写正确;
- 账号是否还有余额或额度。
3. CSV 读取失败
检查文件路径:
ls data
确认存在:
data/sales.csv
检查 CSV 字段是否包含:
date,region,product,orders,revenue,cost
4. 中文乱码
确保文件保存时使用 UTF-8 编码:
with open(file_path, "w", encoding="utf-8") as f:
f.write(report)
5. 定时任务不执行
重点检查:
- cron 中是否使用了绝对路径;
- 虚拟环境 Python 路径是否正确;
- 日志目录是否存在;
- 脚本是否有执行权限;
- 环境变量是否能被读取。
二十一、完整命令汇总
下面给出从零创建项目到运行的完整命令。
macOS / Linux
mkdir ai-agent-workflow
cd ai-agent-workflow
mkdir data reports scripts logs
python3 -m venv .venv
source .venv/bin/activate
cat > requirements.txt << 'EOF'
openai
python-dotenv
pandas
tabulate
EOF
pip install -r requirements.txt
cat > .env << 'EOF'
OPENAI_API_KEY=你的_API_Key
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini
EOF
cat > .gitignore << 'EOF'
.env
.venv/
__pycache__/
reports/
logs/
EOF
cat > data/sales.csv << 'EOF'
date,region,product,orders,revenue,cost
2025-01-01,华东,A产品,120,36000,21000
2025-01-02,华东,A产品,135,40500,23600
2025-01-03,华东,B产品,98,29400,17200
2025-01-04,华南,A产品,160,48000,28800
2025-01-05,华南,C产品,75,22500,15000
2025-01-06,华北,B产品,110,33000,19800
2025-01-07,华北,C产品,90,27000,18000
2025-01-08,华东,A产品,150,45000,26000
2025-01-09,华南,B产品,130,39000,23000
2025-01-10,华北,A产品,105,31500,19000
EOF
然后创建脚本:
nano scripts/sales_agent.py
将前文完整 Python 代码粘贴进去,保存后执行:
python scripts/sales_agent.py
查看报告:
ls reports
cat reports/*.md
二十二、总结
AI Agent 工作流自动化的核心,不是让 AI “看起来很智能”,而是让它稳定地参与到真实业务流程中,帮助我们减少重复劳动、提升处理效率、降低沟通成本。
本文通过一个销售分析报告自动化案例,完整演示了:
- 如何创建 Python 项目;
- 如何配置模型 API;
- 如何读取和处理 CSV 数据;
- 如何调用大模型生成分析报告;
- 如何保存 Markdown 文件;
- 如何扩展图表、邮件、定时任务和 Webhook。
如果你刚开始学习 AI Agent,建议不要直接追求复杂框架,而是从一个明确、稳定、可验证的小流程开始。只要你能把一个重复任务自动化,就已经迈出了 AI Agent 落地的第一步。
后续你可以继续扩展这个项目,例如接入数据库、企业微信、飞书、Notion、浏览器自动化工具,或者引入 LangChain、LangGraph、AutoGen、CrewAI 等框架,构建更复杂的多 Agent 协作系统。
真正有价值的 AI Agent,不是炫技,而是能在每天的工作中持续节省时间、减少错误,并稳定地产出结果。