为了缓解AI工具应用快速更迭的资讯焦虑,在上一篇文章中,我提供了批量采集公众号+coze工作流AI总结+飞书自动推送的方案实现了每日自动跟踪微信公众号进行AI总结简报,效果如下:
飞书机器人每日推送
由于微信公众号的文章篇幅有限,无法对整体实践的全过程完整表述,因此后续将对中间关键阶段进行详细展开,本文主要针对第二阶段:搭建Coze工作流进行大模型AI总结微信公众号文章
方案思路
想到文章AI总结,第一想法就是方案一,将文章全量灌入模型,让大模型充分理解后再整体总结吐出。但我们的需求是每天总结20+篇文章,部分公众号文章可能篇幅较长字数 1W+,这种情况会造成整体文本非常大,单请求无法一次性提交,且大模型也有上下文的限制,当长文本超限后会出现丢失情况。因此我们分而治之,将单篇文章分别进行AI总结,汇总后再重新交给大模型进行整体汇总分类,调整格式后输出。
-
方案一:全量获取文章内容使用大型语言模型(LLMs)高效总结多文档内容
问题点:多文档长文本可能超出上下文范围会使大模型失效,无法一次性灌入理解 -
方案二:先对单篇文章进行摘要抽取,在将多篇摘要内容交给大模型归类汇总
工作流全貌
coze微信文章抓取AI总结分类飞书推送工作流全貌
coze微信文章AI总结飞书推送工作流
关键步骤
工作流输入
article_urls为需要抓取的文章列表; appid和app secret为飞书应用的调用参数;receive_id为接受人在该飞书应用中的open_id;此工作流是将上一篇抓取好的文章链接灌入,其实可以通过公众号的cookies+fakeid循环跟踪作者最新文章链接,不过经过我实验,coze生态他人开放的免费组件总会存在抓取失败的情况,且微信cookies和token易过期,因此作为长期固定任务该步骤不易放入工作流中。
工作流输入
模型AI总结
使用AI大模型对单篇文章内容进行提取摘要,整体遍历后再分类汇总。我使用的豆包1.5 pro.深度思考.128K 模型,几周实践下来效果还不错,单篇的资源耗点20左右,单日免费500资源点可以支持20-30篇左右文章汇总,基本满足个人需求。
coze工作流单篇文章总结
coze工作流多篇摘要整体汇总
飞书机器人推送
机器人推送方式下一篇文章详解,此处主要是通过不同的类别进行多次推送,耗时基本无感,展现形式可以定制卡片进行优化
coze工作流飞书推送组件
工作流调用
通过coze API接口调用工作流需要使用个人访问令牌
coze工作流个人访问令牌
个人访问令牌最长有限期为一个月,可使用cookie调用接口刷新,工作流调用API文档地址:www.coze.cn/open/docs/d…
def coze_workflow_run(token, workflow_id, parameters):
"""
通用Coze平台工作流API调用函数
:param token: Bearer Token字符串(不含'Bearer '前缀)
:param workflow_id: 工作流ID
:param parameters: dict类型,API参数
:return: 返回API响应内容
"""
logging.info("调用coze工作流开始")
url = 'https://api.coze.cn/v1/workflow/run'
headers = {
'Accept': '*/*',
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json',
}
data = {
'workflow_id': workflow_id,
'parameters': parameters
}
response = requests.post(url, headers=headers, data=json.dumps(data))
try:
return response.json()
except Exception:
return response.text
def coze_create_and_save_token(cookie_str, workspace_id=coze_workspace_id):
"""
调用Coze平台新建token接口,获取token后写入config.txt的coze.token,并更新expire_time为30天后。
:param cookie_str: 登录后用于请求的cookie字符串
:param workspace_id: 工作区ID
:param config_path: 配置文件路径
:return: 新token内容
"""
url = 'https://www.coze.cn/api/permission_api/pat/create_personal_access_token_and_permission'
headers = {
'Accept': '*/*',
'Content-Type': 'application/json',
'Cookie': cookie_str,
'User-Agent': 'PostmanRuntime-ApipostRuntime/1.1.0',
'Connection': 'keep-alive'
}
data = {
"name": "Secret token",
"duration_day": "30",
"account_permission": {"permission_list": []},
"workspace_permission_v2": {
"option": 1,
"workspace_id_list": [workspace_id],
"permission_list": ["Workflow.run"]
}
}
response = requests.post(url, headers=headers, data=json.dumps(data))
try:
resp_json = response.json()
token = resp_json.get('data', {}).get('token')
if not token:
feishu_send_message("自动化刷新coze token失败,请登录coze刷新cookie")
raise Exception(f"未获取到token: {resp_json}")
return token
except Exception as e:
feishu_send_message("自动化刷新coze token异常,请跟进查看")
logging.info(f"新建Coze token失败: {e}")
return None
总结
以上是使用大模型批量总结微信公众号文章的Coze工作流,工作流本身不复杂,主要是对整体方案组件通路的可行性验证花了一些时间。再者Coze自身生态虽然让人感觉很强大开放工具很多,但深入具体开发会发现很多组件不可用,或者很不稳定,又没有说明文档和使用demo,总让人想自己重写一个,很浪费时间。所以我后续也会将自己实践应用或手搓的工具放到共享空间,以便大家节约时间少踩坑。
最后,欢迎大家在留言区写下你的建议和问题,随手点赞,一起飞。
** 需要完整工作流和脚本,请关注公众号并回复你的coze用户名,以便加入coze共享空间,交流联系请扫码加我好友。