Posted in

AI 流程编排产品调研&实践_AI阅读总结 — 包阅AI

包阅导读总结

1. 关键词:AI 流程编排、LangChain、Dify、Flowise、大模型应用开发平台

2. 总结:

随着 AI 技术发展,大模型应用开发平台逐渐成熟。文中介绍了 LangChain 的核心设计思想及主要组件,还有 Dify、Flowise 等开源项目的特点、优势及应用实践,强调这些平台推动了 AI 应用创新,未来有望加速 AI 技术在各行业的融合应用。

3. 主要内容:

– AI 流程编排产品调研与实践

– 背景

– AI 技术发展,相关应用和生态蓬勃发展,大模型应用开发平台成熟

– 开源项目

– LangChain

– 核心设计思想:乐高架构(可插拔架构)

– 主要组件:Schema、Models、Prompts、Memory、Chain、Agent 等

– 优势与局限

– Dify

– 模型与应用设置

– 流程编排

– 应用发布与集成

– 运维

– 优势

– Flowise

– 基于 LangChain 的第三方可视化编排工具

– 优势与缺点

– Coze

– 功能基本对齐,使用成本低,提供开放 API 接口

– 衍生产品

– 丰富了垂直应用功能

– 实践

– 通过 Dify 试用 AI 流程编排功能

– 应用创建

– 数据集准备

– 提示词编排

– 预览与发布

– 运维与日志

– 结语

– 大模型应用开发平台是关键基础设施,未来将加速 AI 技术融合应用

思维导图:

文章地址:https://mp.weixin.qq.com/s/I6azx3fwbYeN6cUB4OBAvw

文章来源:mp.weixin.qq.com

作者:巡一

发布时间:2024/8/30 10:18

语言:中文

总字数:4951字

预计阅读时间:20分钟

评分:92分

标签:AI流程编排,开源项目,LangChain,Dify,Flowise


以下为原文内容

本内容来源于用户推荐转载,旨在分享知识与观点,如有侵权请联系删除 联系邮箱 media@ilingban.com

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

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

开源项目 – 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 = OpenAI(temperature=0)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 = load_tools(["serpapi", "llm-math"], llm=llm)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的交互的文本输入、输出,也可以选择持久化,提供了一些列相关的封装好的工具。


优势:

局限:


开源项目 – Dify

1. 模型与应用设置

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


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





2. 流程编排

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

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


3. 应用发布与集成

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


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


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


4.运维

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


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


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


优势:

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

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

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

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


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

开源项目 – Flowise


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



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

npm install -g flowise
npx flowise start
npx flowise start

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接口如获取热榜等、国内发布平台也接入了一些开放平台。

衍生产品


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


实践:表单开发助手

1.应用创建


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

2.数据集准备


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

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


3.提示词编排


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

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

4.预览与发布


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

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


可以在前端页面中以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();    };  }, []);


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



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


5. 运维与日志


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

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


结语

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


参考资料

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

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

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



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