AI流程编排产品调研实践

news2024/11/15 23:32:31

86d0f21f0d00bc2d0816a8308202c951.gif

随着AI技术的发展,AI应用和相关的生态也在不断地蓬勃发展,孵化这些AI应用的平台也在这几年也逐渐成熟。大模型应用开发平台像是淘金者必不可少的铲子一样,成为很多云平台厂商和互联网公司必不可少的平台与工具。

提起大模型流程编排或者大模型应用开发平台,让人最多想起来的最多的是一直火热的LangChain,随着LangChain生态的不断繁荣,也诞生了Flowise这种开源三方可视化编排工具。除了工具外,还有产品化程度非常高的Dify等。今天让我们一起逐个看看这些开源产品的应用和优势吧。

10d4aa595e1f43a4f1036cbf22466549.png

相关产品

  开源项目 - LangChain
  • 概览

LangChain最核心的设计思想就是乐高架构,也叫可插拔架构。由于有这一套具有强扩展性的架构,使得我们下面介绍的Dify等其他开源项目也参考了这种架构。简单来说就是通过对系统基本Component的合理抽象,找到构造复杂系统的统一规律和可达路径,从而在降低系统实现复杂度的同时,提升系统整体的扩展性。

LangChain的目的是为了开发应用,通过模块组合的方式使用LLM,并与其他模块组合的方式来创造应用。LangChain的Components主要包括:Schema、Models、Prompts、Memory、Chain和Agent等。下面结合源码了解一下各个Component的作用。

1. Chain

Chain的语义其实非常强,顾名思义Chain就是负责连接一些东西,比如LLM模型和某个具体的能力(如操作数据库),也比如是LLM模型连接一个服务、计算能力等。

下面是官网的一个使用示例,通过Chain来实现LLM模型与数据库对象的连接。

# 定义个数据库对象
db = SQLDatabase.from_uri("sqlite:///../../../../notebooks/Chinook.db")
# 定义一个LLM的Model
llm = OpenAI(temperature=0)
# 定义一个Chain,连接模型和数据库
db_chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)
db_chain.run("How many employees are there?")

2. Agent

如果流程中需要根据用户的输入信息做一层逻辑功能时,这时Agent则可以派上用场。比如需要根据用户输入的信息先做一个判断,再决定是调用服务还是某个其他能力时,可以通过Agent来实现。

llm = OpenAI(temperature=0)
# tools表示Agent再执行任务过程中可以使用的函数,serpapi时调用搜索引擎的api,llm-math是进行计算的
tools = load_tools(["serpapi", "llm-math"], llm=llm)
# 定义Agent,只可以根据description来决定是否使用工具
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?")

3. Prompts

对话上下文设置对于AI应用开发者应该是非常熟悉了,这里与LLM模型中的Prompts上下文概念一致,LangChain提供了一些模板和工具,方便生成Prompt。

4. Model

LangChain中的Model主要分为三种:LLMs、Chat Models、Text Embedding Models。值得注意的是,Chat Models是一个特殊的LLM,Chat Model根据角色区分从而可以更精确地表达。角色(Role)分为System、AI Assistant、Human等。

5. Memory

Memory主要解决的是Chains 与 Agents 无状态的问题,比如记录所有与AI的交互的文本输入、输出,也可以选择持久化,提供了一些列相关的封装好的工具。

8a2dc494c79424d715fb7f329744c0ea.png

Memory在LangChain中的使用示意图

  • 总结

优势:

    • 组件化:LangChain受益于高度抽象与扩展性,抽象和封装了大模型领域常用的功能与模式,如统一模型接口、提示词模板和上下文状态存储等,使其在社区的持续收到关注。

    • 开箱即用:LangChain通过灵活的链式编排能力对上述原子组件进行结构化组装,以支持各式各样特定场景的高阶任务,如私有知识库问答、结合外部工具及自主决策行动的智能 Agent等。

局限:

    • 比较面向开发者,如前端应用、后端业务逻辑,及应用部署和运维等有额外的工作。

  开源项目 - Dify
  • 概览

1. 模型与应用设置

Dify内置了数十种主流模型提供方,包括OpenAI,国内的通义千问、文心一言、讯飞星火等。用户可以在界面内配置AccessKey、模型参数等即可接入使用。

e2a17dc09c34aeec0f7b34b256fd58b7.jpeg

Dify的模型列表

从大模型本身能力上来看,Dify参考LangChain的框架构建,Dify的领域抽象能力和组件生态方面其实是站在巨人的肩膀上,因此Dify可以在产品易用性上做出差异。下面是这个开源库的一些核心实现代码:

  • Core:包括Agent和流程编排的核心实现,其中包含模型、Prompt、工作流等部分。

    • 核心理念:模型提供方和模型是1对N的关系。简单理解就比如OpenAI是模型提供方,提供了LLM模型(推理类模型)、text_embedding(embedding类模型)、tts类模型等。

    • LLM接入:当前已经支持GPT3.5、GPT4、GPT4o模型等。内部模型本地部署接入也是类似方式:继承LargeLanguageModel类实现接入。

709d9c02ca82b00a0dd663001b4ccc84.png

Dify的模型接入实现

  • DataSource:类似的思路,数据库提供方和向量数据库也是1对N关系,继承基类可以进行扩展。

    • 向量数据库接入:Dify集成了一些常见的向量数据库,如用户想基于三方的开源库实现一个向量数据库,基于他们的BaseModel覆写即可。

600ad6d6dc29601a57f5a34ddae4dd63.png

Dify的向量数据库接入实现

2. 流程编排

类似于Coze等其他Agent编排平台,Dify也具有非常简单易用的可视化编排界面。可以所见即所得地编排和调试提示词。

ddfe02615bca481d9c54c0a0ff7cff09.png

Dify的流程编排效果

除了一些固定前缀的提示词外,Dify支持用户输入变量、关联用户导入的私有数据集,将其作为上下文嵌入到提示词中,进而实现“私有知识问答”等高阶需求。

e2715db8a2dd7c3a0a0ba19e841af289.png

Dify的用户输入支持变量输入和私有数据集导入

3. 应用发布与集成

Dify的定位是针对大模型场景的低代码应用开发平台。官方文档解释:它是LLMOps(Large Language Model Operations) 的目标是确保高效、可扩展和安全地使用这些强大的 AI 模型来构建和运行实际应用程序。当然涉及到模型训练、部署、监控、更新、安全性和合规性等方面。

Dify支持常规的全栈应用生成,也支持前后端的独立输出。比如Dify应用可以生成并且透出独立的后端API。

753b84b494d99416a40d386e9060484f.png

Dify创建的应用透出

除此之外,Dify还支持发布的应用可以直接嵌入到自己的业务前端网站中,通过iframe标签或者script标签可以直接引入到前端项目中,对于非专业开发者或者低代码开发者非常友好。

67c5dfc1aed74954fe808b7b8028948d.jpeg

通过标签直接引入的前端组件效果

4. 运维

Dify的定位是一站式开发平台,应用部署发布后也提供了日志、标注和数据统计的能力。除了能够采集和上报每一次用户与 AI 之间的交互行为,Dify 还支持展示用户或运营人员对 AI 响应内容的评价(赞、踩),以及运营人员添加的改进标注(期望的回答样本)。

除日志外,Dify还集成了很多聚合类的数据统计指标,用来观测用户对产品的满意度、粘性等。

  • 总结

总体而言,Dify是一个完成度非常高的一站式大模型应用开发平台。Dify由于其产品化最好,因此社区上也是同类型的开源项目中最活跃的项目。

124cda2592815b7465038fbbf8809117.png

Dify的社区活跃度情况

优势:

  • 可视化:用户可以在全可视化的Web界面中创建、配置、发布和管理应用。降低开发维护成本;

  • 声明式:其中的AI应用,包括Prompt、上下文、插件等都可以通过YAML文件描述;

  • 一站式:相对与LangChain这种模式,用户的开发运维体验更好,也就是“Ops”的核心体现;

  • 集成与扩展:预留了足够的扩展性,不过其他平台也都很好的预留了扩展性。 

82fa024f058c2caf4a0a928bc447b980.png

网站上和其他产品的对比表格

由于Dify的产品度非常高,也为很多的类似流程编排的系统提供了实现(造轮子)的思路。

  开源项目 - Flowise
  • 概览

Flowise也是基于LangChain的第三方可视化编排工具。产品使用上的体验和Dify相似,但是从能力上相对Dify差一点,比如不可观测、没有一些企业级应用能力如权限控制等。

07f5d9e1e88ad795ba8193d8026932bf.png

Flowise效果图

  • 总结

优势:相对于Dify和LangChain,看起来造轮子更加简单:本地通过NodeJS的v18版本的指令运行,服务部分可以通过官方提供的镜像通过docker-compose直接部署。

#### install & start project ####
npm install -g flowise


npx flowise start


npx flowise start --FLOWISE_USERNAME=user --FLOWISE_PASSWORD=1234
#### build image locally ####
docker build --no-cache -t flowise .


docker run -d --name flowise -p 3000:3000 flowise

缺点:相对于LangChain,没那么多的可扩展能力,相对于Dify,产品的整体完成度没那么高。

  Coze
  • 相关地址

国内:www.coze.cn / 海外:www.coze.com

  • 总结

功能上基本对齐,可能是对用户的使用成本更低,比如提供了开放的API接口如获取热榜等、国内发布平台也接入了一些开放平台。

  衍生产品

在开源项目的基础上,很多公司已经有不少类似的一站式模型应用开发产品。基于开源功能,各公司丰富了一些垂直的应用功能,包括但不限于:

  • 权限:账号权限接入、数据脱敏等;

  • 模型接入:大语言模型(各公司自研内部模型、微调模型)、Embedding模型等;

  • 开发调用:后端调用的二方包等;

  • 向量数据库:开源常见的向量数据库Chroma,接入搜索服务作为向量匹配;

  • 业务定制流程:结合业务场景做定制化的流程等。

实践:表单开发助手
  1. 应用创建

我们通过Dify试用AI流程编排的功能。首先进入应用创建部分,创建适合自己场景的应用。当前看起来内部还新增了工作流这种业务定制化场景。

5dabd8e818b7b620798c603a85f1f03a.png

Dify创建新的应用


  2. 数据集准备

由于业务开发中,我们需要参考一些业务组件的文档,我们可以事先导入一些组件的开发文档。比如我们这里可以导入Fromily v2.x 的Linkage部分的文档作为我们的知识库,当然也可以导入所有的文档。

8821c82aa5538b78198e81a2a5a745e3.png

5b34c9b727613fb2784899df4d0fff83.png

Dify平台上创建文本知识库

完成文本的分割和向量化后,可以在平台上直接进行召回测试。如下图所示,可以直接按照向量的相似度进行排序。因为实际的使用场景下,开发者可能要不断地实验来评估各种参数,比如Embedding模型、段落Chunk的大小等等,才能找到最适合的配置组合。

249df300a31c4426dbb108119c3c8aca.png

召回测试效果实验图


  3. 提示词编排

完成相关的数据集准备后,我们进入最核心的提示词编排环节,打开“编排”页面,可以让Dify根据我们场景的描述,自动先生成一段初始版提示词:

708e4905364985ff0dca197e8150a0a7.png

提示词编排初始化

我们可以看到,通过提示词生成器生成的提示词质量还是比较可靠的。除此之外,Dify还提供了下一步问题的建议等有用的增强功能。

9d1c6b63e7834983c37d1bbd3a37345d.png

其他功能可以按需取用


  4. 预览与发布

完成上面的这些配置后,我们可以在右侧对当前的编排节点进行预览测试。为了整体体验流程快速简单,我们没有通过工作流来构建Multi-Agent,通过单个模型测试链路功能与效果。

af7e9d2880e0f41070238ff4507c5c42.png

对节点进行预览与测试

完成相关的预览与测试后,我们可以将这个基础编排发布为前端组件或者API

  • 前端组件

4751d1161262ab264fa8e1afe07bf891.png

前端接入方式

可以在前端页面中以script方式引入到页面中,甚至可以以Chrome浏览器扩展的形式引用。只能说Dify的产品化做的确实非常好。

那我们试试在业务的仓库中能否可以顺利的接入。比如我们创建一个前端应用仓库,按照这种方式接入到前端页面中。

useEffect(() => {
    window.difyChatbotConfig = {
      token: 'Your Token'
    };
    const script = document.createElement('script');
    script.src = 'https://udify.app/embed.min.js';
    script.id = 'Your Token';
    script.defer = true;
    document.body.appendChild(script);
    return () => {
      document.getElementById('Your Token')?.remove();
    };
  }, []);

可以看到,很简单的一段代码就可以在前端页面中注入对话组件,已经内部集成了组件、模型和服务,非常方便。

cf457729a36be29004aff187d4917b3f.png

前端页面接入

  • 后端接口

后端接口直接以API形式透出给用户,同时预留了API的鉴权等基础功能。详细可以参考官方文档(非常详细)。

c1505c39c95323ddff9c61438331ba86.png

  5. 运维与日志

回到系统运维的界面,可以看到用户对话的日志与记录。

24b287c2f2891531597b1d2a99f02cf8.png

用户对话的记录以组件形式直接显示

在监测页面可以看到这个应用的消息数量、活跃用户数和Token输出速度等。由此可以看到,Dify确实是一个产品化非常高的平台。

368a4b324f8ed00f89fecac0536aa448.png

监控消息、对话、Token输出

结语

随着AI技术的持续演进,大模型应用开发平台正逐步成为推动AI应用创新的关键基础设施。LangChain、Dify等项目的出现,不仅极大地促进了AI技术的普及与应用,更为开发者探索AI赋能的无限可能开辟了新的道路。未来,随着这些平台的不断优化与更多创新项目的涌现,大模型应用的开发将变得更加高效、灵活,进一步加速人工智能技术在各行各业的深度融合与广泛应用。

e7f3e6845b9c7f60ae6c3a86a25431f6.png

参考资料

  • https://github.com/langchain-ai/langchain

  • https://github.com/langgenius/dify

  • https://github.com/FlowiseAI/Flowise

4bac5b6628d9d9fb8193e9c5692cb51e.png

团队介绍

我们是淘天集团-业务技术-泛端技术团队,一支专注于通过技术驱动阿里巴巴商业场景的技术团队,是阿里为消费者提供更优的商品、服务、价格的重要一环。我们不断探索并实践新的技术,结合新技术、大数据、算法与人工智能,重塑影响消费者和商家的商业体系,致力于用技术为生活供应美好。

¤ 拓展阅读 ¤

3DXR技术 | 终端技术 | 音视频技术

服务端技术 | 技术质量 | 数据算法

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

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

相关文章

CSDN的Markdown编辑器语法

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

4个图片编辑神器,简单好用,可以快速出图

图片编辑是我们生活中常见的需求,有很多好用的图片编辑软件可以推荐,按照端口不同可以给大家分享4个分别在电脑和手机上使用的图片编辑神器,简单好用,可以快速出图。 一、电脑软件 1.改图鸭 图片编辑软件中的全能选手&#xff0…

CleanMyMac X2024最新官方中文破解版本下载

🧹 嘿,Mac用户们,你们的小助手来了! 今天要跟大家分享的,是一个能让你们的电脑焕发新生的神器——CleanMyMac X。这可不是一般的清洁工,它可是拥有超能力的超级英雄哦!🌟 CleanMyMa…

AIGC与数据分析融合,引领商业智能新变革(TOP企业实践)

AIGC与数据分析融合,引领商业智能新变革(TOP企业实践) 前言AIGC与数据分析融合 前言 在当今数字化时代,数据已成为企业发展的核心资产,而如何从海量数据中挖掘出有价值的信息,成为了企业面临的重要挑战。随…

索尼的Web3蓝图:从技术创新到现实应用的全方位布局

近年来,随着区块链技术和加密资产的迅猛发展,全球科技巨头纷纷投入其中,力图在Web3浪潮中占据一席之地。作为传统科技行业的巨头,索尼(Sony)也不甘落后,积极推动其Web3战略布局,展现出其在新兴领域的强烈野…

OpenHarmony鸿蒙开发( Beta5.0)智能手表应用开发实践

样例简介 本项目是基于BearPi套件开发的智能儿童手表系统,该系统通过与GSM模块(型号:SIM808)的通信来实现通话和定位功能。 智能儿童手表系统可以通过云和手机建立连接,同步时间和获取天气信息,通过手机下…

Qt/C++开源项目 TCP客户端调试助手(源码分享+发布链接下载)

这是一个TCP客户端调试助手,具有简洁直观的界面,用户能够方便地测试TCP协议的通信功能,并可同时作为客户端与服务器端使用。以下是该程序的功能特点及用途介绍: 功能特点: TCP客户端与服务器调试:支持同时…

C++11 --- 可变参数模板

序言 不知道大家有没有细细研究过在 C 语言 中的 printf 函数,也许我们经常使用他,但是我们可能并不是那么了解他。先看一下调用格式:int printf ( const char * format, ... );,在这里的 format 代表我们的输出格式,后…

若依库存管理 ruoyi-wms V2.0发布:升级到jdk17和vue3,支持一物一码

开源地址 https://gitee.com/zccbbg/wms-ruoyi 项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可 活到老写到老 为兴趣而开源 为学习而开源 为让大家真正可以学到技术而开源 若依wms是一套基于若依的wms仓库管理系统,支持lodop和网页…

Windows环境虚拟机安装

一、软件安装 1. vmware官网地址 点进去选这个products 然后往下滑选这个查看桌面虚拟机管理程序 然后点击这个桌面虚拟机管理程序 然后下拉找到download now下载 然后会跳转到broadcom网站,选择注册账号,这里我是使用谷歌邮箱注册的 注册完之后点击这个链接&…

【LeetCode】07.整数反转

题目要求 解题思路 这道题的难点在于怎么判断越界,我们无法直接与最大值或最小值比较,但是由于每一次我们的ret都需要乘10这个特性来使用ret与最大值或最小值除10进行比较 代码实现 class Solution { public:int reverse(int x) {int ret0;while(x){…

JS生成二维码QRCode代码

JavaScript是一种广泛使用的前端编程语言,它不仅用于网页交互,还可以实现许多实用功能,如生成二维码。本篇文章将深入探讨如何使用JavaScript生成二维码,以及如何确保这种生成的二维码在各种浏览器和手机端都能正常工作&#xff0…

C语言-程序环境 #预处理 #编译 #汇编 #链接 #执行环境

文章目录 前言 一、程序的环境翻译和执行环境 二、翻译环境 (一)、整体把握 (一)、编译 1、预处理(预编译) 2、编译 a、词法分析 b、语法分析 c、语义分析 d、符号汇总 3、汇编 (二)、链接 三、运行环境 总结​​​​​​​ 前言 路漫漫其修远兮,吾将…

波导模式分析2 用于圆TE01模式高功率传输线的大型多模波导滤波器

摘要: 一种对于大型多模波导滤波器的设计方法,其能衰减掉(deteriorate)不想要的模式而不影响所需要的工作模式,被提出来抑制用于圆TE01模式高功率传输线的受限模式谐振。为了从TE10模式中分离出不期望的模式&#xff…

【蓝桥杯嵌入式(二)Led、Key、Lcd】

蓝桥杯嵌入式(二)Led、Key、Lcd 五、Led模块1.原理图配置2. 知识点3.底层代码 六、Key模块1.原理图配置2.知识点3.底层代码底层代码(四⾏代码版本)底层代码(状态机版本) 七、LCD模块1.原理图配置2.知识点底…

文章改写工具,帮你进行文章修改润色提升文章质量

在文字的世界里,每一篇文章都是创作者心灵的结晶。然而,即使是经验丰富的作家,也难免会在创作过程中遇到表达上的瓶颈。此时,文章改写工具便显得尤为重要,它以其独特的功能,对文章进行精准的修改与润色&…

机器学习算法那些事 | Plotly Express:一种简洁且强大的可视化神器

本文来源公众号“机器学习算法那些事”,仅用于学术分享,侵权删,干货满满。 原文链接:Plotly Express:一种简洁且强大的可视化神器 Plotly Express 是 Python 交互式库 Plotly 的高级组件,受 Seaborn 和 g…

全国机器人大赛 Robocon 常州工学院团队首战国三

全国机器人大赛 Robocon 常州工学院团队首战国三 通宵7天7夜,常州工学院RC团队,首次闯入全国机器人大赛国赛,并成功得分! 不同于老牌强队,常州工学院(下面用"常工"代替)的这只队伍&…

Java题集(由入门到精通)03

此系列文章收录大量Java经典代码题(也可以算是leetcode刷题指南),希望可以与大家一起努力学好Java。3、2、1,请看! 目录 1.创建学生成绩表 2.冒泡排序 3.模拟彩票中奖 4.杨辉三角 1.创建学生成绩表 输入n个学生的…

【学习笔记】SSL证书安全机制之证书撤销

前言:以往提到过,钓鱼网站会仿冒我们,如果我们的私钥泄露了,如果被不法分子得到了私钥,他们就能假装是我们网站。那现在,我们要做的是生成新私钥并申请新证书。问题来了,旧的证书亦然存在且有效…