掘金 人工智能 08月07日
实战 Coze Studio 工作流搭建
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

Coze Studio 的工作流功能是构建复杂、强大AI智能体的关键。它允许用户通过可视化方式,将大模型、插件、代码、逻辑判断等节点串联起来,形成自动化的任务处理流程。文章详细介绍了工作流的各种节点类型,包括基础节点(大模型、插件、工作流)、业务逻辑节点(代码、选择器、循环、意图识别、批处理、变量聚合)、输入输出节点、数据库节点、知识库&数据节点以及组件节点。通过一个对接高德天气查询接口的实例,演示了如何创建包含代码节点(城市名转编码)和HTTP请求节点的工作流,并阐述了工作流的发布与使用。此外,文章还介绍了Coze Studio的代码沙箱功能,通过Deno+Pyodide实现安全隔离的代码执行环境,并提供了详细的配置方法。

💡 **工作流是AI智能体的“战术编排”**:Coze Studio 的工作流功能允许用户将大模型、插件、代码、逻辑判断等多个节点通过可视化方式串联起来,形成自动化的任务处理流程,这是构建复杂AI应用的核心能力。

🔧 **丰富的节点类型支持多样化任务**:工作流提供了包括大模型调用、插件执行、代码编写、条件选择、循环处理、数据查询与更新、知识库检索与写入、HTTP请求等六大类共计20余种节点,能够满足各种复杂的业务逻辑和数据处理需求。

🌦️ **实操演示:天气查询工作流构建**:文章通过一个实际案例,展示了如何创建一个工作流来解决城市名称与城市编码不匹配的问题。该工作流包含一个代码节点,用于将用户输入的城市名转换为高德API所需的城市编码,然后通过HTTP请求节点调用高德天气接口,最后将结果返回。

🛡️ **代码沙箱提供安全执行环境**:Coze Studio 的沙箱功能通过Deno和Pyodide技术,为代码节点提供了一个安全隔离的执行环境。用户可以精细化配置允许访问的环境变量、路径、网络地址以及执行的子进程,确保代码执行的安全性。

🚀 **工作流集成与发布**:创建好的工作流可以像插件一样被添加到智能体中,当用户的问题匹配到工作流的意图时,智能体将自动执行整个工作流,实现自动化任务处理,提升用户体验。

昨天我们初步探索了 Coze Studio 的智能体和插件功能,体验了如何快速构建并扩展 AI 应用。今天,我们将更进一步,深入学习 Coze Studio 的核心功能之一 —— 工作流(Workflow),它是构建复杂、强大、专业的智能体的关键。

工作流介绍

如果说插件是智能体的 “单兵武器”,那么工作流就是将这些武器组合起来的 “战术编排”。工作流允许我们通过可视化的方式,将大模型、插件、代码、逻辑判断等节点串联起来,形成一个自动化的任务处理流程。Coze Studio 内置了很多处理节点可供选用:

这些组件大致可分为 6 大类,每个组件的功能汇总如下:

创建工作流

下面我们来创建一个简单的工作流,假设我们现在要对接 高德的天气查询接口

这个接口就没有昨天那么直接了,该接口的 city 参数是城市编码,并不是城市名称,然而大模型是不知道每个城市的具体编码的,如果直接将该接口配置在插件里,调用必然会失败。这个时候我们就可以创建一个工作流,先将用户输入的城市名自动转换为城市编码,然后再调用高德的天气查询接口。

首先进入 “资源库” 页面,点击 “+ 资源” 并选择 “工作流”;然后为工作流命名,例如 “amap_weather”,工作流名称只能是英文;接着进入可视化编排画布:

所有工作流都由一个开始节点和一个结束节点构成,我们先从开始节点配起,开始节点用于定义工作流的输入,这里我们添加 cityextensions 两个字符串类型的参数,用于接收用户想要查询的城市名称和气象类型;

接着在开始节点后面加一个代码节点,为其定义输入参数 city_name 和输出参数 city_id,注意 city_name 参数设置成引用开始节点的 city 参数,然后编写一段 Python 代码将城市名称转成城市编码:

代码内容如下:

city_list = [  "北京市,110000",  "天津市,120000",  "石家庄市,130100",  # ...]async def main(args: Args) -> Output:  city_name = args.params['city_name']  city_id = '110000'  for city_info in city_list:    city_info = city_info.split(',')    if city_name in city_info[0]:      city_id = city_info[1]      break  ret: Output = {    'city_id': city_id  }  return ret

这里的 city_list 为城市编码表,可以从高德官网下载。然后点击上面的小三角测试该节点:

验证没问题后,接着再在代码节点后面加一个 HTTP 请求节点,配置如下参数:

配置好的 HTTP 请求节点如下:

仍然还是点击小三角测试:

测试通过后,将 HTTP 请求节点和结束节点连接起来,并在结束节点上添加 output 参数,引用 HTTP 请求节点的出参:

结束节点有两种返回方式:

这里选择 “返回变量” 方式,至此,整个工作流搭建完成,可以点击下方的 “试运行” 按钮,对整个工作流进行测试:

使用工作流

这样一个简单的工作流就创建好了,发布之后,我们就可以在创建智能体时,像添加插件一样,将这个工作流添加到智能体的技能中。当用户提问时,如果命中了这个工作流的意图,智能体就会自动执行整个流程:

注意,结束节点不要选 “返回文本”,可能导致工作流正常调用,但智能体却显示 “运行中止” 这样的情况。

代码沙箱配置

在上面的工作流示例中,代码节点默认会在服务所处的 Python 虚拟环境中直接运行,进入 Coze 容器,可以看到默认的 Python 版本和已安装的依赖:

如果你有隔离需求,可以开启沙箱功能,沙箱为我们提供了一个安全隔离的代码执行环境。沙箱配置位于 docker/.env 文件:

# 支持 `local` 和 `sandbox` 两种类型,默认 `local`export CODE_RUNNER_TYPE="sandbox"

Coze Studio 的沙箱功能通过 Deno + Pyodide 实现的。Pyodide 是一个将 Python 运行时编译为 WebAssembly 的项目,使 Python 能够直接在 JavaScript 环境中运行,比如浏览器,无需后端服务器支持。它由 Mozilla 开发并维护,旨在将 Python 的科学计算生态系统带到 Web 平台。

Pyodide 非常适合作为代码沙箱环境,因为它在设计上就具备良好的安全性,可以有效限制代码的执行范围和权限,我们可以通过下面这些环境来限制它:

# 允许访问的环境变量,使用逗号分割,比如 `PATH,USERNAME`export CODE_RUNNER_ALLOW_ENV=""# 允许读取的路径,使用逗号分割,比如 `/tmp,./data`export CODE_RUNNER_ALLOW_READ=""# 允许写入的路径,使用逗号分割,比如 `/tmp,./data`export CODE_RUNNER_ALLOW_WRITE=""# 允许执行的子进程,比如 `python,git`export CODE_RUNNER_ALLOW_RUN=""# 允许访问的网络地址,域名或 IP# pyodide 通过下面的 CDN 地址下载必须的依赖包,用于运行 Python 代码,最好不要删export CODE_RUNNER_ALLOW_NET="cdn.jsdelivr.net"# 允许访问的外部函数接口(Foreign Function Interface),例如 `/usr/lib/libm.so`export CODE_RUNNER_ALLOW_FFI=""# node_modules 目录位置,默认当前目录export CODE_RUNNER_NODE_MODULES_DIR=""# 超时时间,默认 60 秒export CODE_RUNNER_TIMEOUT_SECONDS=""# 内存限制,默认 100Mexport CODE_RUNNER_MEMORY_LIMIT_MB=""

修改环境变量配置之后,通过下面的命令重启 Coze 服务生效:

$ docker compose --profile '*' up -d --force-recreate --no-deps coze-server

注意,由于修改了环境变量,这里用的 --force-recreate 参数强制容器重新创建,而不是重启。

小结

今天,我们深入学习了 Coze Studio 的工作流功能,我们不仅了解了工作流的基本概念和其丰富的节点类型,还通过一个实际的天气查询案例,动手创建了一个包含代码和 HTTP 请求的完整工作流。此外,我们还探讨了如何将工作流集成到智能体中,以及如何配置代码沙箱以确保执行安全。

接下来,我们将继续探索 Coze Studio 的另一个强大功能 —— 知识库,学习如何为我们的智能体注入专属知识,让它变得更加专业和智能。

欢迎关注

如果这篇文章对您有所帮助,欢迎关注我的同名公众号:日习一技,每天学一点新技术

我会每天花一个小时,记录下我学习的点点滴滴。内容包括但不限于:

目标是让大家用5分钟读完就能有所收获,不需要太费劲,但却可以轻松获取一些干货。不管你是技术新手还是老鸟,欢迎给我提建议,如果有想学习的技术,也欢迎交流!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Coze Studio AI工作流 智能体开发 可视化编程 代码沙箱
相关文章