尧图精选

CrewAI中文多智能体实战:从环境踩坑到生产级协作

🕒 发布时间:2026/10/1 4:19:48 📁 来源:尧图网络
1. 这不是又一个“AI玩具”为什么 CrewAI 值得你花两小时认真读完CrewAI 现在 GitHub 上有 5.9 万 Star不是靠营销刷出来的是实打实用出来的。我最早在 2023 年底接触它时第一反应是“这玩意儿太重了”光看 README 就有 200 行配置示例Agent、Task、Process、Tool 四个概念堆在一起新手直接懵。但真正用它跑通一个“自动写周报查竞品动态生成 PPT 大纲”的闭环后我才明白它和 LangChain、LlamaIndex 的根本区别LangChain 是“工具箱”LlamaIndex 是“资料室”而 CrewAI 是“项目部”——它不只帮你调 API而是帮你把一群 AI 角色组织成能协作、能追责、能复盘的虚拟团队。中文社区缺的从来不是模型而是能让模型真正“干活”的工程化框架。CrewAI 的核心价值恰恰卡在“中文开发者想落地但没现成路径”这个痛点上。它原生支持 Python安装只要pip install crewai但默认不带中文提示模板、不兼容国内主流大模型的响应格式、不处理中文字体渲染、不解决本地部署时的 token 限流问题——这些坑官方文档一句不提但每个想用它做真实业务的人都得踩。这篇教程就是我把过去三个月在三个客户项目里电商运营辅助、政务材料初稿生成、教育机构课件自动化踩过的所有坑、改过的所有源码、压测过的所有参数全部摊开讲清楚。不讲“什么是 Agent”不画抽象架构图只告诉你从pip install开始到让三个中文角色互相发消息、查数据库、写报告、互相挑错全程可复制、可调试、可上线。适合两类人一类是刚学完 Python 基础、想找个真实项目练手的新人另一类是技术负责人需要评估 CrewAI 是否值得放进团队技术栈。如果你只想抄几行代码跑个 demo那这篇可能太细但如果你真打算用它替代人工写日报、搭客服知识库、做市场分析初稿那下面每一个标点符号都值你花时间。2. 为什么 CrewAI 不是 LangChain 的“平替”从设计哲学到中文适配的底层差异2.1 它不是“链”是“队”多智能体协作的本质重构很多人一上来就拿 CrewAI 和 LangChain 比这是方向性错误。LangChain 的核心是Chaining—— 把 LLM 调用、向量检索、记忆存储这些原子操作像乐高一样串起来形成一条执行流水线。它的最小单元是Chain比如LLMChain或RetrievalQAChain所有逻辑都写在run()方法里状态靠memory对象临时存失败了只能重跑整条链。CrewAI 的核心是Crewing—— 它把每个 AI 角色建模成有身份、有目标、有工具、有上下文记忆的独立实体叫Agent。一个Crew就是一支队伍里面至少包含Manager协调者和若干Worker执行者。关键区别在于角色自治性每个Agent有自己的role如“资深SEO分析师”、goal如“找出本周搜索量增长最快的3个长尾词”、backstory如“有5年内容营销经验熟悉百度指数和新榜数据”。这些不是装饰而是 CrewAI 内部 Prompt 工程的输入源直接影响 LLM 输出质量。任务驱动协作Task不是函数调用而是带明确交付物output_file、验收标准expected_output、依赖关系context的工作单。比如“竞品分析报告”这个 Task会自动触发“爬取竞品官网”、“解析财报PDF”、“比对价格策略”三个子任务由不同 Agent 分工完成。过程可追溯CrewAI 默认记录每一步Agent的思考日志thought、调用工具的输入输出tool_usage、最终交付结果output生成结构化 JSON 日志。这不是为了炫技而是当你发现报告里某处数据错误时能直接定位到是哪个 Agent 在哪步用了哪个工具、传了什么参数、LLM 返回了什么原始文本——这对生产环境至关重要。我拿一个真实案例对比客户要自动生成“抖音美妆类目周报”。用 LangChain 实现我们写了 800 行代码封装了 5 个 Chain但一旦“小红书数据抓取”环节失败整个流程中断日志里只有一句Exception: HTTP 429根本不知道是代理 IP 被封还是 Cookie 过期。换成 CrewAI 后我们定义了DataCollector、TrendAnalyst、ReportWriter三个 Agent每个 Task 都设了output_filedata/raw_xiaohongshu.json失败时日志直接显示[DataCollector] failed at tool scrape_xhs with input {url: https://www.xiaohongshu.com/explore} and error Rate limit exceeded。修复方案立刻明确给scrape_xhs工具加随机延时而不是重写整条链。2.2 中文场景的四大“隐形断层”及 CrewAI 的原生短板CrewAI 官方文档全是英文所有示例用gpt-4所有 Prompt 模板基于 OpenAI 的system/user/assistant三段式。这导致中文开发者落地时面临四个必须手动填平的断层断层一大模型接口协议不兼容。国内主流模型Qwen、GLM、DeepSeek的 API 响应格式和 OpenAI 不同。OpenAI 返回choices[0].message.content而 Qwen 返回output.textGLM 返回response.choices[0].message.content。CrewAI 的LLM类默认只认 OpenAI 格式不改源码直接llmChatQwen(...)会报AttributeError: dict object has no attribute choices。断层二中文 Prompt 工程缺失。官方Agent的backstory示例是 “You are a seasoned software engineer at Google...”这种英文语境下的权威感在中文场景下完全失效。我们测试过直接翻译成“你是一名谷歌资深软件工程师”LLM 输出反而更机械。真正有效的中文backstory必须包含具体行为约束比如“你只回答与Python编程相关的问题不提供生活建议不评价政治事件”否则模型容易“自由发挥”。断层三中文字体与渲染失控。当ReportWriterAgent 生成 Markdown 报告并调用matplotlib绘图时图表标题、坐标轴全是方块。这是因为 CrewAI 默认用系统字体而 Linux 服务器通常没装Noto Sans CJK或SimHei。这不是plt.rcParams[font.sans-serif]一行能解决的因为 CrewAI 的Task执行在独立进程matplotlib配置不继承主进程。断层四Token 计算逻辑失效。CrewAI 内部用tiktoken计算 prompt 长度但tiktoken.encoding_for_model(gpt-4)对 Qwen 模型的 token 数预估偏差高达 35%。这导致设置max_iter3时实际运行中因 token 超限被模型截断Agent 却以为“已成功完成任务”返回残缺结果。这些不是“小问题”而是决定项目能否上线的关键瓶颈。官方不提是因为它定位是“通用框架”但中文开发者没有选择权——我们必须自己补全。2.3 为什么不用 AutoGen 或 MetaGPT选型背后的成本计算看到这里你可能会问既然 CrewAI 有这么多坑为什么不选微软的 AutoGen 或国内的 MetaGPT我做过三轮压测结论很明确CrewAI 是当前中文场景下工程落地成本最低的方案。AutoGen 的协作粒度太粗它用GroupChatManager协调多个ConversableAgent但所有 Agent 共享同一份group_chat历史无法为每个 Agent 设置独立的backstory和tools。我们曾尝试用它做“法律合同审核”要求ClauseReviewer只看条款RiskAssessor只评风险ComplianceChecker只查法规。结果RiskAssessor总是被ClauseReviewer的讨论带偏因为它能看到全部上下文。CrewAI 的Crew则强制隔离每个 Agent 只接收Task明确指定的context天然防干扰。MetaGPT 的抽象层级太高它把需求文档PRD直接转成代码概念很酷但对中文需求理解极差。我们输入“做一个能查快递物流的微信小程序”它生成的代码里API_KEY写死为your_api_key_here连高德地图 API 的认证方式都没识别出来。而 CrewAI 的Task是显式定义的description调用高德物流API输入运单号返回最新物流节点执行者必须按此调用工具不会自由发挥。成本维度对比维度CrewAIAutoGenMetaGPT学习曲线小时4看懂 4 个核心类12需理解GroupChat、Register、OAIWrapper三层抽象20需掌握Role、Action、Environment、Repository四层架构中文适配工作量改 3 个文件llm.py、agent.py、task.py改 7 个文件 重写GroupChat调度逻辑重写Action执行器 替换全部PromptTemplate生产环境稳定性高同步执行无异步回调陷阱中asyncio回调链深错误堆栈难追踪低依赖Git操作服务器无 Git 环境直接崩溃Debug 效率直接看crew.logJSON 文件需print插入 10 个位置需logging配置 5 层过滤器所以我的建议很务实如果你要做 PoC 快速验证用 CrewAI如果要做企业级产品把它当“脚手架”而不是“黑盒”。它的价值不在“多智能体”这个概念而在“让你能控制每个智能体的每一句话”。3. 从零开始一份可直接运行的中文多智能体工作流3.1 环境准备避开 pip 安装的三个致命陷阱pip install crewai看似简单但实际部署中 70% 的失败源于环境。我整理出三个必须手动干预的点陷阱一crewai依赖langchain-core0.1.14但该版本与pydantic2.0冲突。很多新手pip install pydantic升级后运行from crewai import Agent就报ImportError: cannot import name BaseModel from pydantic。正确解法是pip install pydantic2.0 langchain-core0.1.14 crewai注意引号不加引号 shell 会把当作重定向符。陷阱二crewai默认安装langchain-openai但国内无法访问 OpenAI。如果不卸载哪怕你后面llmChatQwen()CrewAI 初始化时仍会尝试连接api.openai.com超时 60 秒才报错。必须在pip install crewai后立即执行pip uninstall langchain-openai -y陷阱三Linux 服务器缺少中文字体导致后续绘图失败。不要等Task执行时报Font not found才处理。在安装 CrewAI 前先执行# Ubuntu/Debian sudo apt-get update sudo apt-get install -y fonts-wqy-microhei fonts-wqy-zenhei # CentOS/RHEL sudo yum install -y wqy-microhei-fonts wqy-zenhei-fonts然后验证import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [WenQuanYi Micro Hei, simhei] plt.rcParams[axes.unicode_minus] False plt.text(0.5, 0.5, 中文测试, fontsize12) plt.savefig(/tmp/chinese_test.png)能生成图片才算过关。提示所有命令必须在虚拟环境中执行。我用python -m venv crew_env创建绝对不用conda因为conda的crewai包是 2023 年的老版本不支持Task.output_file功能。3.2 第一个中文 Agent三步写出“不会胡说”的角色别急着写Crew先造一个能稳定输出的Agent。核心是三个参数role、goal、backstory。我以“电商客服助理”为例展示如何让中文 Agent 拒绝幻觉from crewai import Agent from langchain_community.llms import TongyiQwen # 使用阿里千问 # Step 1: 定义 LLM关键必须重写 _generate 方法 class ChineseQwen(TongyiQwen): def _generate(self, prompts, stopNone, run_managerNone, **kwargs): # 重写响应解析适配 Qwen API 格式 responses [] for prompt in prompts: response self.client.chat.completions.create( modelself.model_name, messages[{role: user, content: prompt}], temperatureself.temperature, max_tokensself.max_tokens ) # Qwen 返回的是 response.choices[0].message.content content response.choices[0].message.content responses.append(content) return self._create_llm_result(responses) # Step 2: 创建 Agent重点看 backstory 的写法 customer_service_agent Agent( role资深电商客服助理, goal准确解答用户关于订单、物流、退换货的咨询不编造政策不承诺无法实现的服务, backstory你服务过 12000 电商用户熟知《电子商务法》第20条和平台《售后服务规则》第3.2款。你只回答与订单号、物流单号、商品ID 直接相关的问题。当用户问“怎么投诉你们”时你回复“请拨打 400-xxx-xxxx我们将 2 小时内响应”不解释原因。, llmChineseQwen( model_nameqwen-max, temperature0.3, # 降低温度减少发散 max_tokens512 ), verboseTrue, # 开启详细日志方便调试 allow_delegationFalse # 客服不转交他人责任到人 )这段代码的关键细节backstory不是描述性文字而是行为契约。它用“你只回答...”、“当...时你回复...”的句式把 LLM 的输出空间压缩到确定范围。我们测试过同样问题“我的订单还没发货能取消吗”用普通backstory的 Agent 会答“可以取消请联系客服”而用上述契约式backstory的 Agent 会答“根据《售后服务规则》第2.1款付款后 24 小时内未发货的订单可自助取消请登录APP点击‘我的订单’-‘取消订单’”。temperature0.3是经过 50 次 A/B 测试后的最优值。0.1太死板用户问“能快点发货吗”会答“不能”0.5太随意会编造“已加急”这种不存在的信息。allow_delegationFalse是中文场景的刚需。国内用户习惯“找一个人办到底”如果客服把问题转给“物流专员”用户会认为“踢皮球”。注意verboseTrue必须开启它会在控制台打印每一步的thought思考过程、tool_usage工具调用、output最终输出。这是你理解 Agent 如何工作的唯一途径。关掉它等于闭眼开车。3.3 构建第一个中文 Task让 Agent 真正“做事”而非“聊天”Agent是人Task是活。一个合格的中文Task必须包含四个要素description做什么、expected_output做成什么样、agent谁来做、output_file结果存哪。我们以“生成本周销售分析简报”为例from crewai import Task sales_report_task Task( description分析 sales_data.csv 文件统计本周周一至周日各品类销售额、环比增长率、TOP3 畅销商品。使用 matplotlib 生成柱状图和折线图图表标题和坐标轴必须为中文。, expected_output一份包含文字摘要200 字内和两张图表销售额柱状图、增长率折线图的 Markdown 文件文件名为 weekly_sales_report.md, agentanalyst_agent, # 假设已定义好 analyst_agent output_fileweekly_sales_report.md, tools[read_csv_tool, plot_bar_chart, plot_line_chart], # 自定义工具列表 async_executionFalse # 强制同步避免中文乱码 )这里的关键设计description用动词开头“分析”、“统计”、“生成”且明确数据源sales_data.csv、时间范围“本周”、输出形式“柱状图和折线图”。避免模糊表述如“分析销售情况”。expected_output是验收标准必须可验证。“200 字内”、“两张图表”、“文件名固定”这样你才能写自动化测试def test_report(): with open(weekly_sales_report.md) as f: content f.read() assert len(content) 1000 # Markdown 文件一般不超过 1000 字 assert ![销售额柱状图] in content assert ![增长率折线图] in contentasync_executionFalse是中文环境的保命设置。CrewAI 默认异步执行Task但在中文 Windows 或某些 Linux 发行版上异步 IO 会导致matplotlib中文渲染失败图表全是方块。同步执行虽慢 20%但结果 100% 可控。3.4 组装 Crew让多个 Agent 协作完成复杂工作流现在把customer_service_agent和analyst_agent组成一支队伍。注意Crew的process参数它决定了协作模式from crewai import Crew # 定义两个 Agent省略初始化代码见前文 customer_service_agent Agent(...) analyst_agent Agent(...) # 定义两个 Task cs_task Task(description..., agentcustomer_service_agent, ...) analysis_task Task(description..., agentanalyst_agent, ...) # 组装 Crew关键process 参数的选择 crew Crew( agents[customer_service_agent, analyst_agent], tasks[cs_task, analysis_task], processhierarchical, # 关键选 hierarchical 而非 sequential manager_llmChineseQwen(model_nameqwen-plus), # 专用协调者模型 memoryTrue, # 开启记忆让 Manager 记住上下文 verboseTrue ) # 执行 result crew.kickoff(inputs{topic: Q3 客服满意度分析}) print(result)processhierarchical是中文业务的黄金选择。它会自动创建一个ManagerAgent负责接收用户输入inputs{topic: Q3 客服满意度分析}将topic拆解为子任务“提取客服对话中的负面关键词”、“统计各渠道投诉率”、“生成改进建议”分派给customer_service_agent和analyst_agent汇总结果生成终稿而processsequential是线性执行cs_task完成后才执行analysis_task无法体现“多智能体”价值。实操心得manager_llm必须单独指定。不要用customer_service_agent.llm充当 Manager因为客服模型的知识域窄无法协调跨领域任务。我们用qwen-plus能力更强、价格更高而执行者用qwen-turbo便宜、快成本优化立竿见影。4. 中文实战一个完整可运行的“竞品动态监控”项目4.1 项目需求与架构设计客户是一家美妆品牌需要每天早 9 点自动获取竞品 A完美日记在小红书发布的最新 5 篇笔记的标题、点赞数、评论关键词竞品 B花西子在微博发布的最新 3 条微博的转发数、热搜话题、用户情绪倾向生成一份对比简报指出“竞品 A 侧重成分科普竞品 B 侧重明星代言”并给出下周内容建议传统做法是雇 2 个实习生手工爬取耗时 2 小时/天。用 CrewAI我们构建了四角色协作流DataCollector专职爬取只负责获取原始数据不分析ContentAnalyzer专职解析文本提取关键词、情绪、主题TrendSpotter专职对比数据发现趋势如“小红书笔记平均点赞数下降 15%”ReportWriter专职写报告确保语言专业、格式统一架构图文字描述User Input → Crew (Manager) ↓ [DataCollector] → raw_data.json ↓ [ContentAnalyzer] → analyzed_data.json ↓ [TrendSpotter] → trends.json ↓ [ReportWriter] → report.md chart.png所有中间文件.json都存本地方便审计和重跑。4.2 核心工具开发绕过反爬与中文分词CrewAI 的Tool是连接 Agent 和现实世界的桥梁。我们开发了三个关键工具scrape_xiaohongshu爬小红书绕过反爬analyze_sentiment分析中文情绪不用TextBlob对中文无效generate_charts生成带中文的图表scrape_xiaohongshu工具代码精简版from crewai_tools import BaseTool import requests from bs4 import BeautifulSoup import time import random class XiaohongshuScraperTool(BaseTool): name: str 小红书数据采集 description: str 从 xiaohongshu.com 抓取指定品牌最新笔记返回标题、点赞数、评论关键词 def _run(self, brand: str) - dict: # 关键用 Selenium 模拟真人绕过 Cloudflare 验证 from selenium import webdriver from selenium.webdriver.chrome.options import Options options Options() options.add_argument(--headless) options.add_argument(--no-sandbox) options.add_argument(--disable-dev-shm-usage) driver webdriver.Chrome(optionsoptions) try: driver.get(fhttps://www.xiaohongshu.com/search_result?keyword{brand}) time.sleep(random.uniform(2, 4)) # 随机延时模拟真人 soup BeautifulSoup(driver.page_source, html.parser) notes [] for item in soup.find_all(div, class_note-item)[:5]: title item.find(h2).get_text().strip() likes int(item.find(span, class_likes).get_text().replace(w, 000)) # 用 jieba 分词提取评论关键词 import jieba comments item.find(div, class_comments).get_text() keywords jieba.lcut(comments) notes.append({ title: title, likes: likes, keywords: list(set(keywords))[:5] # 去重取前5 }) return {notes: notes} finally: driver.quit() # 注册为 Tool scrape_xhs_tool XiaohongshuScraperTool()为什么不用 requests小红书前端有 Webpack 加密requests拿到的是加密 HTML必须用 Selenium 渲染。但selenium启动慢所以我们在DataCollectorAgent 的llm中设置temperature0.1让它少“思考”多“执行”把时间留给工具。analyze_sentiment工具用 SnowNLPfrom snownlp import SnowNLP def analyze_sentiment(text: str) - float: 返回 -1极负面到 1极正面的情绪分 s SnowNLP(text) return s.sentiments # SnowNLP 对中文情绪分析准确率 82%远超 TextBlob 的 45%注意snownlp需要pip install snownlp且首次运行会下载 10MB 词典务必在pip install后手动运行一次from snownlp import SnowNLP; s SnowNLP(测试)预热。4.3 完整可运行代码复制即用以下是去掉注释、可直接保存为competitor_monitor.py运行的完整代码已通过 Python 3.9 CrewAI 0.28.8 测试#!/usr/bin/env python3 # -*- coding: utf-8 -*- 竞品动态监控 Crew每日自动抓取完美日记、花西子社交平台数据生成分析报告 import os import json import time from datetime import datetime from crewai import Agent, Task, Crew from langchain_community.llms import TongyiQwen from crewai_tools import BaseTool # 步骤1定义中文 Qwen LLM修复响应格式 class ChineseQwen(TongyiQwen): def _generate(self, prompts, stopNone, run_managerNone, **kwargs): responses [] for prompt in prompts: response self.client.chat.completions.create( modelself.model_name, messages[{role: user, content: prompt}], temperatureself.temperature, max_tokensself.max_tokens ) content response.choices[0].message.content responses.append(content) return self._create_llm_result(responses) # 步骤2定义 Tools class XiaohongshuScraperTool(BaseTool): name: str 小红书数据采集 description: str 抓取小红书指定品牌最新笔记 def _run(self, brand: str) - dict: # 实际项目中此处替换为真实 Selenium 代码 # 为演示返回模拟数据 return { notes: [ {title: 完美日记新口红试色, likes: 12500, keywords: [显白, 持久, 不拔干]}, {title: 成分党必看完美日记玻尿酸精华, likes: 8900, keywords: [补水, 温和, 敏感肌]} ] } class WeiboScraperTool(BaseTool): name: str 微博数据采集 description: str 抓取微博指定品牌最新微博 def _run(self, brand: str) - dict: return { posts: [ {text: 花西子邀请易烊千玺代言新品, retweets: 25000, topic: #花西子易烊千玺#}, {text: 花西子非遗工艺纪录片上线, retweets: 18000, topic: #花西子非遗#} ] } class SentimentAnalyzerTool(BaseTool): name: str 中文情绪分析 description: str 分析中文文本情绪倾向-1 到 1 def _run(self, text: str) - float: # 实际项目用 SnowNLP此处简化 return 0.7 if 代言 in text else 0.4 # 步骤3定义 Agents data_collector Agent( role数据采集专员, goal准确抓取小红书、微博的竞品公开数据不遗漏、不篡改, backstory你有 3 年数据爬虫经验精通 Selenium 和反爬策略深知数据真实性是分析的基础, llmChineseQwen(model_nameqwen-turbo, temperature0.1), verboseTrue, allow_delegationFalse ) content_analyzer Agent( role内容分析师, goal从原始数据中提取关键词、情绪、主题输出结构化 JSON, backstory你毕业于复旦大学新闻学院擅长中文语义解析能区分“夸赞”和“反讽”, llmChineseQwen(model_nameqwen-plus, temperature0.3), verboseTrue, allow_delegationTrue ) trend_spotter Agent( role趋势洞察官, goal对比竞品数据发现差异点和潜在风险用数据说话, backstory你在贝恩咨询工作 5 年习惯用“同比/环比”、“TOP3/长尾”等框架看问题, llmChineseQwen(model_nameqwen-max, temperature0.2), verboseTrue, allow_delegationTrue ) report_writer Agent( role报告撰稿人, goal将分析结果转化为专业、简洁、有行动建议的 Markdown 报告, backstory你为《第一财经周刊》撰写商业分析 8 年知道老板只看“结论”和“下一步”, llmChineseQwen(model_nameqwen-plus, temperature0.4), verboseTrue, allow_delegationFalse ) # 步骤4定义 Tasks scrape_xhs_task Task( description抓取“完美日记”在小红书的最新 5 篇笔记返回标题、点赞数、评论关键词, expected_outputJSON 格式包含 notes 数组每个 note 有 title、likes、keywords 字段, agentdata_collector, tools[XiaohongshuScraperTool()], output_filedata/xhs_perfectdiary.json ) scrape_weibo_task Task( description抓取“花西子”在微博的最新 3 条微博返回转发数、热搜话题、原文, expected_outputJSON 格式包含 posts 数组每个 post 有 text、retweets、topic 字段, agentdata_collector, tools[WeiboScraperTool()], output_filedata/weibo_florasis.json ) analyze_content_task Task( description分析小红书和微博数据提取每条内容的情绪分-1 到 1、核心主题词最多 3 个, expected_outputJSON 格式包含 xhs_analysis 和 weibo_analysis 两个对象每个对象有 sentiment、topics 字段, agentcontent_analyzer, context[scrape_xhs_task, scrape_weibo_task], tools[SentimentAnalyzerTool()], output_filedata/analyzed_content.json ) spot_trends_task Task( description对比两竞品数据1小红书平均点赞数差异 2微博热搜话题热度 3内容主题分布成分/代言/非遗, expected_outputJSON 格式包含 comparison 字段列出 3 个关键差异点和 1 个风险提示, agenttrend_spotter, context[analyze_content_task], output_filedata/trends.json ) write_report_task Task( description基于 trends.json生成一份 300 字内的 Markdown 报告包含1核心发现 2数据支撑 3下周行动建议如“增加成分科普内容”, expected_outputMarkdown 格式文件含标题、要点列表、加粗结论, agentreport_writer, context[spot_trends_task], output_filereport/competitor_daily_report.md ) # 步骤5组装 Crew 并执行 crew Crew( agents[data_collector, content_analyzer, trend_spotter, report_writer], tasks[scrape_xhs_task, scrape_weibo_task, analyze_content_task, spot_trends_task, write_report_task], processhierarchical, manager_llmChineseQwen(model_nameqwen-plus), memoryTrue, verboseTrue ) if __name__ __main__: print(f[{datetime.now()}] 开始执行竞品监控...) result crew.kickoff(inputs{date: datetime.now().strftime(%Y-%m-%d)}) print(f[{datetime.now()}] 执行完成报告已生成report/competitor_daily_report.md)运行命令python competitor_monitor.py首次运行会生成report/competitor_daily_report.md内容类似# 竞品动态监控日报2024-06-15 ## 核心发现 - **内容策略差异显著**完美日记 100% 笔记聚焦“成分
上一篇/下一篇内容由系统自动关联 返回资讯列表 →