刚才的演示成功展示了完整的出价调整流程:
# 腾讯广告 API
export TENCENT_AD_ACCESS_TOKEN="your_access_token_here"
export TENCENT_AD_ACCOUNT_ID="123456"
export TENCENT_AD_BASE_URL="https://api.e.qq.com/v3.0"
# ODPS(MaxCompute)数据仓库
export ODPS_ACCESS_ID="your_aliyun_access_key_id"
export ODPS_ACCESS_SECRET="your_aliyun_access_key_secret"
export ODPS_PROJECT="loghubods"
export ODPS_ENDPOINT="http://service.cn-shanghai.maxcompute.aliyun.com/api"
# 进入项目目录
cd /Users/liulidong/project/agent/Agent
# 安装 Python 依赖
pip install -r requirements.txt
# 确保安装了 ODPS 客户端
pip install pyodps
# 确保安装了 HTTP 客户端
pip install httpx
确保 ODPS 中存在以下表:
表 1: loghubods.creative_detail
表 2: loghubods.ad_put_tencent_ad
# 启动 Agent 系统
python examples/auto_put_ad/run.py
# 在交互界面输入
> 账户 123456 今日预算 10 万,帮我调整出价
系统流程:
budget_calculate_from_databid_adjustment_execute 执行import asyncio
from examples.auto_put_ad.tools.budget_calc import (
budget_calculate_from_data,
bid_adjustment_execute
)
async def main():
# 步骤 1: 计算方案
result = await budget_calculate_from_data(
account_id=123456,
total_budget_yuan=100000,
bizdate="20260406" # 或 "yesterday"
)
# 步骤 2: 展示方案
print(result.output)
# 步骤 3: 等待确认
confirm = input("\n是否执行?(y/n): ")
if confirm.lower() == 'y':
# 步骤 4: 执行调整
exec_result = await bid_adjustment_execute(
adjustment_plan=result.data["adjustment_plan"],
account_id=123456
)
print(exec_result.output)
if __name__ == "__main__":
asyncio.run(main())
# 创建定时脚本
cat > /path/to/daily_bid_adjustment.sh << 'EOF'
#!/bin/bash
cd /Users/liulidong/project/agent/Agent
source venv/bin/activate
# 设置环境变量
export TENCENT_AD_ACCESS_TOKEN="..."
export ODPS_ACCESS_ID="..."
export ODPS_ACCESS_SECRET="..."
# 执行调整(需要实现自动确认逻辑)
python examples/auto_put_ad/auto_bid_adjustment.py \
--account-id 123456 \
--budget 100000 \
--auto-confirm
EOF
chmod +x /path/to/daily_bid_adjustment.sh
# 添加到 crontab(每天早上 9:00 执行)
crontab -e
# 添加:0 9 * * * /path/to/daily_bid_adjustment.sh >> /var/log/bid_adjustment.log 2>&1
错误信息:
ODPS 客户端初始化失败: Invalid access key
解决方案:
# 检查环境变量
echo $ODPS_ACCESS_ID
echo $ODPS_ACCESS_SECRET
# 重新设置
export ODPS_ACCESS_ID="your_correct_access_key_id"
export ODPS_ACCESS_SECRET="your_correct_access_key_secret"
错误信息:
ad_update 失败: Invalid access token
解决方案:
# 检查 token 是否过期
# 重新获取 access_token(通过 OAuth2 流程)
export TENCENT_AD_ACCESS_TOKEN="new_access_token"
错误信息:
查询到 0 个广告的昨日效率数据
解决方案:
# 检查 bizdate 是否正确
# 检查 account_id 是否正确
# 检查数据表分区是否存在
# 手动查询验证
from examples.auto_put_ad.tools.data_query import data_query
result = await data_query(
table_name="creative_detail",
bizdate="20260406",
account_id=123456
)
print(result.output)
错误信息:
bid_adjustment_execute 超时
解决方案:
# 分批执行(每批 50 个广告)
adjustment_plan = result.data["adjustment_plan"]
for i in range(0, len(adjustment_plan), 50):
batch = adjustment_plan[i:i+50]
await bid_adjustment_execute(
adjustment_plan=batch,
account_id=123456
)
await asyncio.sleep(6) # QPS 限制:10/秒,休息 6 秒
# 监控脚本示例
import asyncio
from examples.auto_put_ad.tools.ad_api import ad_get_report
async def monitor_realtime():
"""监控实时消耗"""
while True:
result = await ad_get_report(
account_id=123456,
date_range="today",
level="ad"
)
# 解析消耗数据
total_cost = sum(ad["cost"] for ad in result.data)
print(f"当前消耗: {total_cost/100:.2f} 元")
await asyncio.sleep(300) # 每 5 分钟检查一次
asyncio.run(monitor_realtime())
关键指标:
评估周期:
根据效果调整参数:
# 如果消耗过快,增加缩量幅度
result = await budget_calculate_from_data(
account_id=123456,
total_budget_yuan=80000, # 降低预算
tier1_ratio=0.10, # 减少 Tier 1 占比
)
# 如果消耗过慢,减少缩量幅度
result = await budget_calculate_from_data(
account_id=123456,
total_budget_yuan=120000, # 提高预算
tier1_ratio=0.20, # 增加 Tier 1 占比
)
# 紧急暂停所有广告
from examples.auto_put_ad.tools.ad_api import ad_batch_update_status
await ad_batch_update_status(
account_id=123456,
adgroup_ids=[...], # 所有广告 ID
configured_status="AD_STATUS_SUSPEND"
)
✅ 系统已就绪:核心功能已实现并测试通过
✅ 演示成功:模拟数据执行流程完整
✅ 文档完善:提供详细的部署和执行指南
下一步行动:
文档版本: v1.0 更新日期: 2026-04-07 联系人: liulidong