使用 Coze 构建一个旅行规划工作流

Coze(扣子)是字节跳动推出的一站式 AI Bot 开发平台。这个平台内置超过 60 种不同的插件,覆盖新闻阅读、旅行规划、生产力工具等多个领域,用户可根据需求为机器人快速添加功能,也支持创建自定义插件。Coze还支持工作流、知识库等。例如,可创建能播报最新时事新闻的 AI 新闻播音员,或开发能处理复杂对话的聊天机器人。

Coze 平台为用户提供了一套上层业务构建入口,降低了大模型复杂的使用门槛。其具有无限拓展的能力集、丰富的数据源、持久化的记忆能力等优势。通过知识库功能,可管理和存储数据,支持 bot 与用户自己的数据进行交互,用户能上传本地文件、在线网页内容及 API JSON 数据至知识库,以便 bot 使用这些内容回答问题。

在实际体验中,使用 Coze 生成 bot 较为便捷。例如,在注册、登陆账号后,可通过首页的插件能力创建 bot;其涵盖旅游、出行和娱乐等场景的插件可直接点击使用,还具备可无限扩展的能力集,能全面实现个性化定义 AI 机器人技术能力。不过,该平台可能也存在一些“幻觉”问题,其分析和对话能力还有提升和优化的空间。

总的来说,Coze 平台的推出降低了用户创建 chatbot 的门槛,使得人们能够参与到 AI 生态的建设中。同时,它也为 AI 应用的开发和推广提供了新的途径和可能性。

Coze 平台工作流设计灵活,允许用户通过拖拉拽方式快速搭建工作流,可集成大型语言模型、自定义代码和判断逻辑等。

本文带领大家手把手创建一个Coze工作流,让大家亲身感受一下Coze平台功能的强大以及容易上手的特点。

我们先简单看看Coze工作流到底是什么,它是如何工作的,然后介绍一下使用Coze工作流可以做什么事情。

Coze工作流是一种强大的工具,‌能够通过将大语言模型、‌Python代码或Javascript代码、‌知识库、‌选择器、‌变量、‌数据库、‌插件等诸多模块以工作流程的方式整合在一起,‌完成非常复杂的任务。

Coze工作流的核心在于其能够将不同模块和工具无缝连接,‌形成一个高效的工作流程,‌从而极大地提高了处理复杂任务的效率和准确性。‌这种工作流模式不仅适用于当前网站、‌手机App、‌电脑软件等应用程序的全部功能实现,‌而且由于其核心依托于AI,‌使得这些应用程序更加智能和方便。‌

从功能上来看,‌工作流更像是一个完成相对格式化且标准化的任务的指定模块,‌而多代理模式则更像一个可以完成复杂任务的团队。‌这意味着,‌通过精心设计和优化工作流,‌可以使得复杂的工作安排更加细致,‌从而更容易控制和管理。‌例如,‌在Coze中,‌通过点击创建工作流的按钮,‌可以自由添加不同类型的节点,‌如插件、‌大语言模型、‌代码、‌知识库等,‌通过这些节点的连接和配置,‌可以构建出具有特定功能的工作流。‌

我们要制作的是一个旅行规划的工作流,这个工作流可以为我们提供酒店,机票(火车票)的选择建议,并为我们提供目的地的景点介绍。先看一下工作流完成的样子。

下面我们一步一步的创建一个旅行行程规划的工作流。

首先我们需要注册Coze平台的用户,登录后才能使用Coze创建工作流的功能。我们可以通过直接访问Coze.cn来进入Coze平台。如果你本地安装有飞书,也可以直接在飞书中选择工作台中的扣子图标登录平台。

下面操作假设你已经可以正常登录扣子平台。

在个人空间选择工作流标签页,点击创建工作流,会弹出如下界面。

在工作流名称中填写“travel_planning”,工作流描述中填入这个工作流的描述“根据用户的旅游目的地推荐景点、酒店以及给出实时机票、高铁票信息”。

设置完这些信息后,点击确定按钮,创建一个全新的工作流。

在工作流的设计区域可以看到这个样内容。

设计区域已经为我们自动添加了开始和结束节点,左侧是可以增加的节点类型。从左侧列表,我们可以看到工作流节点可以添加插件,大模型等节点来强化工作流的功能,如果需要代码处理流程中的数据,可以增加代码节点。

本次开发的这个工作流为了降低开发难度,我们会选择很多已经存在的插件简化开发,在具体的数据处理上会写一些简单处理代码。

这个工作流的搭建思路就是,根据用户输入的目的地来获取当地酒店信息,这个功能使用扣子官方提供的携程搜索酒店的插件获取酒店推荐。接下来是根据出发地和目的地所在城市获取飞机和高铁车票信息,这其中也使用官方提供的携程飞机和高铁插件。由于我们获得的酒店,飞机和高铁车票等数据是数组形式不符合人们平时查看信息的习惯,我们还会使用代码节点来对数据进行格式化的操作。最后我们将把这些格式化的信息喂给大模型,我们在这个工作流中使用的是豆包大模型,通过给豆包指定提示词,让大模型根据我们的要求输出最终的结果信息。结果信息通过结束节点按照指定的格式显示出来。

下面我们一一添加和处理节点。

首先在开始节点上,输入我们的三个参数,“dep_city”,“arr_city”,“dep_time”,其含义就是出发城市,到达城市,以及出发时间。其中前两参数在流程开始时必须填写,因为用户很可能在规划行程时,还不能确定出发时间。填写完的开始节点是这样的。

下面我们来增加处理目的地酒店的节点。点击左侧插件节点上的加号,在添加插件的对话框中搜索携程旅行,选择search_hotel进行添加。我们将开始节点和search_hotel节点链接起来。

如果不清楚如何使用插件,可以查看示例。此处我们直接给出填写后的界面样子。

接下来增加search_flight_ticket节点。这个节点也是在插件中搜索携程旅行,选择其下面的search_flight_ticket工具。这个工具顾名思义,是查询机票信息的。所以我们需要出发和到达的城市信息,以及出发时间。将这个节点与前面的search_hotel节点连接起来。在这个节点中填写如下的信息。

现在添加search_train_ticket节点,用以搜索火车票信息。添加插件的方法参考上面的过程。将这个节点与前面的节点连接起来。这个节点中填写内容如下。注意,输入参数中start_city对应我们开始节点中的dep_city,end_city对应开始节点中的arr_city.

我们已经通过前面三个节点获取了目的地的酒店,飞机票和高铁火车票的数据。现在我们来处理这个获取到的数据,因为这些数据都是数组的形式,我们需要把这些数据按照通常习惯整理成便于人们理解的格式。这个时候就需要写一些代码了,但是不要担心,这些代码逻辑都很简单。

先增加代码节点,在左侧选择代码节点进行添加操作。

在输入参数部分,设置三个输入参数,分别是flight_data,train_data,hotel_data。他们的参数值都设置成引用的格式,数据分别来自于search_flight_ticket,search_train_ticket,search_hotel的data。接下来将下面代码填入代码区域。

async def main(args: Args):
    ret = {}
    params = args.params

    flight_data = params["fligth_data"]
    train_data = params["train_data"]
    hotel_data = params["hotel_data"]

    try:
    
        hangban_info = []
        if len(flight_data) > 0:
            i = 0
            for flight in flight_data[0:3]:
                temp = "航班: {} \n日期:{} \n出发机场:{} \n出发时间:{} \n到达机场:{} \n到达时间{} \n售价{} \n[购票链接]({})"
                res = temp.format(
                    flight["flight_no"],flight["flight_date"],flight["dep_airport"],flight["dep_time"],flight["arr_airport"],flight["arr_time"],flight["price"],flight["h5_url"]
                )
                hangban_info.append(res)
                if i >2:break
                i += 1

        train_info=[]
        if len(train_data) > 0:
            j = 0
            for train in train_data:
                temp = "车次: {} \n全程用时:{} \n出发车站:{} \n出发时间:{} \n到达车站:{} \n到达时间{} \n售价{} \n[购票链接]({})"
                res = temp.format(
                    train["train_no"],train["all_time"],train["start_station"],train["start_time"],train["end_station"],train["end_time"],train["tickets"][0]["ticket_price"],train["h5_url"]
                )
                train_info.append(res)
                if j >2:break
                j += 1

        hotel_info = []
        if len(hotel_data) > 0:
            k  =0
            for hotel in hotel_data:
                temp = "酒店:{} \n[预定链接]({}) "
                res = temp.format(
                    hotel["hotel_name"],hotel["h5_url"]
                )
                hotel_info.append(res)
                if k> 2:break
                k += 1
        
        ret = {
        "hangban_info":"\n".join(hangban_info),
        "train_info":"\n".join(train_info),
        "hotel_info":"\n".join(hotel_info)
    }
    except Exception as e:
        print(e)

    finally:
        return ret

输出是三个变量,分别对应hangban_info,train_info,hotel_info,都是string类型。这些变量就是上面三个输入参数经过代码处理后的字符串对象。

填写完的代码节点如下图。

我们现在来到了最后的处理节点:通过大模型来为我们规划整个旅行安排和目的城市的景点介绍。这个节点会让我们感受到大模型提供的辅助带给我们许多的便利。

先增加大模型节点。模型选项我们选择豆包-Function call模型。将这个节点与前面代码节点连接起来。设置4个输入参数:arr_city,flight,train,hotel,他们都是引用类型,除了第一个参数来自于开始节点-arr_city,其他三个都是代码节点的输出。

大模型的提示词使用如下信息:

你是一个旅游专家,我要去{{arr_city}}旅游,这是我查到的航班信息:{{flight}},火车信息:{{train}},酒店信息:{{hotel}}。请结合这些信息帮我写一份详细的旅游规划。开头应该表明这是为我量身制定的旅游规划,请查收等等话术,而不是分享给我。

- 最少2000字。

- 景点介绍需要丰富和吸引人

- 要有逻辑性,飞机和火车不是每天都乘坐,去了玩几天回来才会再坐

- 最好将火车、航班或酒店的实时购票链接包含在文章中而非结尾。

- 文字是小红书风格,排版规整优美。

我们把大模型节点与最后的结束节点连接,输出变量设置成views,引用大模型1-output,回答内容填写{{views}}

现在我们已经完成了工作流的搭建过程。

我们尝试运行一下这个旅行规划工作流。点击页面右上角的“试运行”按钮,在弹出界面中出发城市输入框中填写“北京”,到达城市填写“杭州”,点击运行后,工作流就开始启动。等待片刻,如果运行成功,我们可以在结束节点旁边看到最后的输出内容,见下图。

如果运行失败也不用害怕难以定位问题,扣子提供了每个节点的运行结果和运行时间信息,参考下图。

你也赶快来尝试一下扣子提供的丰富功能吧,你会惊叹于它带给你的惊喜!

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值