AI 智能体 | 手捏素材选题库 Coze Bot,帮你实现无限输出

news2024/11/18 19:28:56

做自媒体的同学经常遇到的一个痛点就是无限输出,那怎么才能有源源不断的选题呢?那就是搭建一个选题素材库。

下面就为大家介绍一下基于 Coze Bot 快速搭建素材选题库,希望能让大家才思泉涌。

一、流程拆解

日常素材库积累的过程可以描述为:看到一篇不错的文章,记录标题、大纲、分类和地址。

这些环节正好都是大模型所擅长的。我们把这些环节拆分为不同节点去实现,最后用一个工作流去串联起来就可以了。

实现的效果如下:

图片

二、Bot 搭建

图片

一)Bot 设计

1、创建 Bot

打开 https://www.coze.cn/home,点击创建 Bot 按钮

图片

输入 Bot 名称和介绍后点击确定

图片

2、设定人设

图片

人设与回复逻辑

你是素材收集助手,用户输入一个url,你调用material_add_gzh工作流进行处理,并返回处理的结果,如果用户输入的不是有效的url信息,引导用户输入正确的信息格式。

在页面中间工作流标签点击添加工作流 material_add_gzh,如果还没有创建工作流,点击左侧创建工作流按钮即可开始创建,具体流程详见下一章节。

图片

二)流程设计

1、开始

不需要额外定义变量,仅用默认变量 BOT_USER_INPUT 即可。

图片

2、拼装查询条件

为了避免记录重复添加,我们这里是先根据 URL 查询飞书多维表中记录是否存在,如果存在则直接返回,不存在则执行添加操作。这里 query 的结构定义是基于飞书多维表查询条件结构来的,不能随意修改 query 对象中的属性名称。

图片

本节点是代码节点,Python 代码如下:

async def main(args: Args) -> Output:
    params = args.params
    ret: Output = {
        "query": {
            "conditions": [
            {
                "field_name":"url",
                "operator":"is",
                "value":[
                    params['url']
                ]
             }   
            ],
            "conjunction":"and"
        }
    }
    return ret
3、查询飞书多维表

app_token:输入多维表完整的 url,插件会自动解析处理;

filter:引用上一步拼装的查询条件 query;

图片

4、判断记录是否存在

这是一个选择器节点,实现分支的功能,根据上一步查询返回的记录判断用户输入的 URL 是否已录入。如果条件满足,则执行正常素材添加逻辑,否则执行文档跳过添加提示节点(后续说明)。

图片

图片

5、解析 URL 内容

这一步用的是 coze 插件市场中的 LinkReaderPlugin 插件,该插件可以获取指定 URL 的内容。

url:引用入参 BOT_USER_INPUT

图片

6、判断 URL 解析查询返回值

调测中遇到有的 url 链接解析获得内容为空,对于这种异常情况,跳过处理。

图片

7、文本提炼处理

本节点是大模型节点,借助大模型提炼文章标题、摘要、类别、发布日期、关键词。

提示词如下:

# 任务
根据{{input}},生成对应信息
 
# 输出要求
title:网页标题(如果有原标题,直接使用原标题;若找不到原标题,则根据关键信息,生成一个精确的标题)
summary:仔细阅读整个网页内容,捕捉内容主题、关键信息、阅读价值,生成一段简洁而全面的摘要;并指出适合的读者群体
category:有如下文本类别:AI智能体、AI提示词、Java编程、Python编程、认知思考、其他 共计6个类别,帮我根据输入的内容确定一个类别
link:{{url}}
publishDate:文章发布时间,格式YYYY-MM-DD
siteName:根据{{url}}判断平台名称
keywords:仔细阅读整个网页内容,提炼出与主题相关的3-5个关键词,以,分隔

图片

8、构建飞书字段记录

此处是基于飞书的添加多维表记录的报文结构构建的数组对象。title、category...publishDate 等都是多维表中定义的字段名称,根据需要调整即可。此处需要注意的是如果飞书中定义的字段为日期格式,那么存入的时候需要转换成时间戳,具体转换方法也在下面代码中。

图片

 
import json
from datetime import datetime
from pickle import LONG

async def main(args: Args) -> Output:
    params = args.params
    jsonObj = {
        "title": params['title'],
        "category": params['category'],
        "summary": params['summary'],
        "url": params['url'],
        "content": params['content'],
        "remark": params['remark'],
        "keywords": params['keywords'],
        "siteName": params['siteName'],
        "publishDate": date_to_timestamp(params["publishDate"])
    }

    record = {
        "fields": json.dumps(jsonObj)
    }
    
    jsonArray = []
    jsonArray.append(record)
    ret: Output = {
        "rawRecords": jsonArray,

    }
    return ret

def date_to_timestamp(date_str, date_format='%Y-%m-%d'):
    """
    将日期字符串转换为10位时间戳。

    :param date_str: 日期字符串
    :param date_format: 日期字符串的格式,默认为'%Y-%m-%d'
    :return: 10位时间戳
    """
    try:
        # 将日期字符串转换为datetime对象
        date_obj = datetime.strptime(date_str, date_format)
        # 将datetime对象转换为时间戳
        timestamp = int(date_obj.timestamp() * 1000)
        return timestamp
    except ValueError as e:
        print(f"Error: {e}")
        return None    
9、添加记录到飞书多维表

此处使用的是 coze 中飞书多维表插件的 add_records 函数。

app_token:同前面记录查询节点中的配置,此处填写完整的飞书多维表 url 即可,形如:

https://xzqakftmv0.feishu.cn/base/xxxx?table=tbyyy&view=vewJFRrIho

records:引用前一步构建记录的返回的 rawRecords 变量。

图片

10、判断记录添加是否成功

有些字段格式不正确或者其他原因,可能导致记录添加失败,这里对添加记录节点返回值进行判断,根据成功与否给出用户不同的提示信息。

图片

11、提示信息拼接

为了更好地用户体验,对文本添加成功、失败、跳过、解析错误都采用了字符串处理节点拼接提示消息,大家可以根据需要选择。

图片

图片

图片

图片

12、设置返回信息

由于结束节点输出变量需要具体指定,而实际可能出现不同的处理结果,因此将 11 节点的内容统一的一个变量 returnMsg 中,此处为代码节点:

图片

python 代码如下:


def get_non_empty_string(str1, str2, str3,str4):
    # 检查每个字符串是否为空,返回第一个非空字符串
    if str1:
        return str1
    elif str2:
        return str2
    elif str3:
        return str3
    elif str4:
        return str4        
    else:
        return None  # 如果所有字符串都为空,则返回None

async def main(args: Args) -> Output:
    params = args.params
    message = get_non_empty_string(params['addSucc'], params['addFailed'], params['skipAdd'], params['parseFailed'])
    ret: Output = {
        "returnMsg": f'{message}'
    }
    return ret
13、结束

结束节点直接定义的用设定内容直接回答,回答内容就是 output 的值,output 则设定引用上面的 returnMsg。

图片

三、测试验证

工作流创建完成并发布后,与步骤一中的 Bot 绑定,就可以进行调试,为此进行了几种常见验证,分别是:

不符合 URL 格式、记录已存在、记录不存在。

图片

图片

查看飞书文档,记录也已经正确添加。大家根据自己的需求继续迭代。

我是黑马非马,探索 AI 编程与 AI 智能体,欢迎围观。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2169328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

eslint-plugin-react的使用中,所出现的react版本警告

记一次使用eslint-plugin-react的警告 Warning: React version not specified in eslint-plugin-react settings. See https://github.com/jsx-eslint/eslint-plugin-react#configuration . 背景 我们在工程化项目中,常常会通过eslint来约束我们代码的一些统一格…

汽车总线之----J1939总线

instruction SAE J1939 是由美国汽车工程协会制定的一种总线通信协议标准,广泛应用于商用车,船舶,农林机械领域中,J1939协议是基于CAN的高层协议,我们来看一下两者之间的关系。在J1939 中,物理层和数据链路…

第13讲 实践:设计SLAM系统

设计一个视觉里程计,理解SLAM软件框架如何搭建,理解视觉里程计设计容易出现的问题以及解决方法。 目录 1、工程目标 2、工程框架 3、实现 附录 1、工程目标 实现一个精简版的双目视觉里程计。由一个光流追踪的前端和一个局部BA的后端组成。 2、工程…

asp.net mvc core 路由约束,数据标记DataTokens

》从0自己搭建MVC 》用 asp.net Core web 应用 空web 应用程序 需要配置 mvc服务 、mvc路由 新建 Controller 、Models、Views 》》》core 6 之前版本 vs2022 asp.net Core Web 应用(模型-视图-控制器) 不需要配置 就是mvc框架 asp.net Core web 应…

从Elasticsearch到RedisSearch:探索更快的搜索引擎解决方案

文章目录 RedisSearch 的关键功能与 ElasticSearch 对比性能对比产品对比 如何使用 Docker 安装 RedisSearch1. 获取 RedisSearch Docker 镜像2. 启动 RedisSearch 容器3. 验证安装 RedisSearch 使用示例1. 连接到 RedisSearch2. 创建索引3. 添加文档4. 执行搜索搜索所有包含 &…

【Geoserver使用】2.26.0版本发布主要内容

文章目录 前言一、GeoServer 2.26.0 版本二、主要内容1.Java17支持2.Docker更新3.搜索改进4.广泛的 MapML 改进4.重写演示请求页面5.栅格属性表扩展6.GeoCSS 改进7.地球静止卫星 AUTO 代码8.labelPoint 功能改进9.改进的矢量图块生成10.GeoPackage QGIS 兼容性改进11.新的图像马…

深度学习—神经网络基本概念

一,神经元 1.生物神经元与人工神经元 1.1神经元是人脑的基本结构和功能单位之一。人脑中有数1000亿个神经元,其功能是接受(树突),整合(细胞体),传导(轴突)和…

MySQL --用户管理

文章目录 1.用户1.1用户信息1.2创建用户1.3删除用户1.4修改用户密码 2.数据库的权限2.1给用户授权2.2回收权限 如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。 1.用户 1.1用户信息 MySQL中的用户,都存储在系…

Spring Cloud 教程(二) | 搭建SpringCloudAlibaba

Spring Cloud 教程(二) | 搭建SpringCloudAlibaba 前言一、SpringBoot 与 SpringCloud 版本对应关系:二、SpringCloud 与 SpringCloudAlibaba版本对应关系:三、SpringCloudAlibaba版本 与 组件版本 对应关系:四、搭建S…

Django项目配置日志

需求 在Django项目中实现控制台输出到日志文件,并且设置固定的大小以及当超过指定大小后覆盖最早的信息。 系统日志 使用Django自带的配置,可以自动记录Django的系统日志。 可以使用logging模块来配置。下面是一个完整的示例代码,展示了如…

Java | Leetcode Java题解之第438题找到字符串中所有字母异位词

题目&#xff1a; 题解&#xff1a; class Solution {public List<Integer> findAnagrams(String s, String p) {int sLen s.length(), pLen p.length();if (sLen < pLen) {return new ArrayList<Integer>();}List<Integer> ans new ArrayList<Int…

163页制造业变革转型:营销/服务/研发/供应链/制造/质量/财务

制造业企业要实现变革转型&#xff0c;可以从营销、服务、研发、供应链、制造、质量、劳务以及人力资源等多个方面着手&#xff1a; 一、营销 市场调研与定位 深入了解目标市场的需求、趋势和竞争态势。通过大数据分析、消费者调研等手段&#xff0c;精准把握市场动态&#…

管家婆分销费用分摊功能使用说明!

在入库和销售业务中&#xff0c;往往会产生一些费用需要和入库单和销售单关联&#xff0c;这时候就可以使用费用分摊的功能。下面我们一起来学习在分销A\V系列软件中费用分摊的操作步骤 一、入库费用分摊 1、只有移动加权平均成本算法才有入库费用分摊单&#xff1b;入库费用分…

centos7系统安装宝塔面板

1、开始安装 适用系统 Centos/OpenCloud/Alibaba 稳定版9.0.0 urlhttps://download.bt.cn/install/install_lts.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install_lts.sh $url;fi;bash install_lts.sh ed8484bec等待命令执行&#xff0c;安装完成&#…

【理解 Java 中的 for 循环】

理解 Java 中的 for 循环 for 循环是 Java 中用于迭代的常用控制结构&#xff0c;它可以帮助我们重复执行某段代码&#xff0c;直到满足特定条件。本文将介绍 for 循环的基本语法、执行流程、注意事项及一些练习。 基本语法 for 循环的基本语法如下&#xff1a; for (循环变…

Linux下的基本指令/命令(一)

目录 基本命令 1. Is命令/指令: 罗列当前目录下指定的文件或者目录. 2. pwd命令&#xff1a; 查看当前工作的路径 3. cd命令&#xff1a; 切换到指定路径下。 只能切换到目录中 4. tree命令: 树状显式目录 使用前要输入命令 yum install -y tree &#xff0c;用来安装一个…

数组模拟邻接表存图

图的定义 图&#xff08;graph&#xff09;是一种非线性数据结构&#xff0c;由顶点和边组成。我们可以将图 抽象地表示为一组顶点和一组边的集合。G(V,E) 图分为有向图和无向图&#xff0c;下图带箭头为有向图&#xff0c;无箭头为无向图 我们可以用两种方式来表示图&#x…

有点快要跟不上时代的感觉

团队的群里面有一个同事突然问了下&#xff0c;下面的这个 JavaScript 如何进行优化 var startIndex (start undefined || start null) ? null : start[0].Value;看上面的代码就是典型的判断和返回的问题。 如果是要调试的话也不是做不出来&#xff0c;但可能要花点时间&a…

【Java】—— 多线程:线程的创建方式3、4___实现Callable与线程池

目录 8.1 新增方式一&#xff1a;实现Callable接口 8.2 新增方式二&#xff1a;使用线程池 8.1 新增方式一&#xff1a;实现Callable接口 与使用Runnable相比&#xff0c; Callable功能更强大些 相比run()方法&#xff0c;可以有返回值 方法可以抛出异常 支持泛型的返回值&…

音视频整体解码流程和同步流程

目录 1. 整体解码流程1. 初始化 FFmpeg2. 打开媒体文件3. 查找解码器4. 打开解码器5. 读取和解码数据6. 处理解码后的帧7. 释放资源 2. 音视频同步整体流程1. 解复用媒体流2. 解码3. 以音频为时钟源进行音视频同步的策略4. 缓冲区设计 现在先说大体流程&#xff0c;不分析代码 …