当GPT遇到低代码低代码平台AIGC开发落地实战
如果无法正常显示,请先停止浏览器的去广告插件。
1. 低代码平台AIGC开发
落地实战
腾讯 前端技术专家 / 姜天意
2. 2013-2020
2020-2023
阿里: B2B,盒马 腾讯: 医疗健康事业部-云产品二部
前端工程链路
数据可视化与低代码 ToB大数据及数字孪生产品研发与前端架构
开源低代码平台逻辑可视化方向PMC
Node.js framework eggjs
https://github.com/jtyjty99999
3. 目录
•
•
•
LLM Prompt engineering 与低代码技术介绍
低代码模块接入 GPT 实战
GPT 高级技巧与个人感想
4. 低代码与 LLM 提示工程介绍
5. 提示工程-什么叫提示工程-人说人话,GPT 说 GPT 话
提示工程是通用技术,适合于几乎所有大语言模型(Large Language Models,简称LLMs)
设计最佳提示以指导模型执行任务的方法就是所
谓的提示工程(prompt engineering)
prompt engineering 做得好 不仅可以提升回答
的质量,也可以限制回答的格式
这对后续跟其他系统的集成非常重要
•
•
•
•
指令 —— 希望模型执行的特定任务或指令
上下文 —— 可以包含外部信息或额外的上下文,以引
导模型更好地进行响应
输入数据 —— 我们感兴趣并希望找到响应的输入或问
题
输出指示符 —— 指示输出的类型或格式
6. 如何使用你的openai/chatgpt做提示工程测试
• temperature(温度) —— 简言之,温度越低,结果越具
https://platform.openai.com/playground
确定性,因为总是选择概率最高的下一个词。提高温度可
•
能导致更多的随机性,鼓励产生更多样化或富有创意的输
出对基于事实的问答任务使用较低的温度值,以鼓励更加
准确和简洁的回答。对于诗歌生成或其他创意任务,提高
温度值可能会更有益。
top_p —— 类似地,通过 top_p 调节名为 nucleus
sampling 的温度抽样技术,可以控制模型在生成回应时的
确定性。如果需要准确和事实性的答案,请保持较低
的 top_p 值,如果希望获得更多样化的回应,请增加到较
高的 top_p 值。
https://medium.com/@basics.machinelearning/temperature-and-top-p-in-chatgpt-9ead9345a901
text-davinci-003 和 gpt-3.5-turbo 有啥区别?
text-davinci-003 和 gpt-3.5-turbo 都是 OpenAI GPT-3 系列中的两个模型,区别在于性能和价格
性能:gpt-3.5-turbo 相对于 text-davinci-003 在性能方面有所提高。根据 OpenAI 的说法,gpt-
3.5-turbo 在许多任务中的性能与 text-davinci-003 相当或更好。这意味着,与 text-davinci-003
相比,gpt-3.5-turbo 可以在保持相同质量输出的同时更有效地完成任务。价格:gpt-3.5-turbo 的价
格相对于 text-davinci-003 更具竞争力。使用 gpt-3.5-turbo 的成本约为使用 text-davinci-003 的
1/4。这使得 gpt-3.5-turbo 成为许多应用和开发场景中更实惠的选择。
https://blog.apilayer.com/chatgptapi-vs-davinci-which-ai-api-is-right-for-you/
7. openai中 role 的解释与4096 token 的限制
GPT 家族的大语言模型会使用 Token 作为处理文本的标识,用来标识一段文本中的“词”。大语言模型会理解这些
Token 之间的关系,并能够预测一系列 token 中的下一个
系统消息(role = system)一般用于定义 GPT 对话的行为,比如:你是一个 SQL
工程师,擅长写 SQL。
gpt-3.5-turbo-0301 并不会把这个系统消息做很高的优先度关注。未来的模型
将被训练为更加关注系统消息。
用户消息(rule=user)一般是用户自己的输入以及开发者给 GPT 的一些指令。
根据 openai 的建议,一个 token 能写4个字母,或者0.5个汉字。因此4000个 token 可以写2000字的中文。
输入和输出都会计算 Token 。比如API 调用在消息输入中使用了 10 个Token,而您在消息输出中收到了 20 个
Token,则需要支付 30 个 Token 的费用。如果在调用时候超了,会调用失败。输出的时候超了,会被截断。因此你自
己的 GPT 应用, 一定要实现“试算 Token” 的功能。
助手消息(rule=assistant) 可以帮助存 GPT 自己的响应。
当对话场景需要引用之前的消息时,就需要维护好这个message数组,这就是
所谓 GPT 对话的上下文 or 历史记录。
大模型对过去的请求没有记忆,所以你如果想保持这个上下文,必须维护好这
个 message,然后在每次对话过程中,把完整的 message 传过去。
因此,如果这些记录超过了模型的 token 限制,就需要以某种方式缩短它。
https://platform.openai.com/docs/models/moderation
在一段时间之内,“省 Token ”都是 AI 应用需要关注的重要问题
8. 提示工程进阶-少样本提示(few shot)
通过多次提供 shots,可以发现gpt的回答更加精准
大模型自身
具有很强的零样本能力,
但在复杂的任务上表现并不好
大语言模型
具备强大的少样本学习能力
通过提供很少的例子
可以自我学习
few shot 的方式,很适合某些可枚举场景的问答,学习
9. 提示工程进阶-思维链
解决更复杂的算数/推理问题的利器
原始提示中添加“逐步思考”"请一步步思考问题"
魔法
少样本提示不一定能获得推理类问题的可靠答案。
介绍的任务类型涉及到更多的推理步骤。
换句话说,如果将问题分解成多个步骤并向模型演示,可能会有所帮助。
10. 提示工程进阶-思维链高级应用-决策器
最大化的让 AI 一步一步的思考
https://tsmatz.wordpress.com/2023/03/07/react-with-openai-gpt-and-langchain/
如何送礼物?
提供辅助 GPT 的工具
知道人的性别
告诉 GPT 应该如何思考问题
知道此性别的爱好
送出礼物
Reasoning + Acting :ReAct 每次让 LLM 输出一个当前的【思考】和【要做的动作】,这个动作并不只限
于检索信息,可以是调用任何工具,类似 ChatGPT plugin。LLM 通过 few shot 的例子和工具自带的描
述、还有它自己学到的常识来决定何时调用工具以及如何调用工具。
这样 ReAct 引入了外部工具的概念,让 LLM 能够通过这种步进式的方式逐步思考并调用外部工具,根据结
果进一步思考循环。同时也可以仅仅是输出一步思考,并继续下去,类似CoT。
11. 提示工程进阶-生成知识
让模型懂得更多
生成知识提示是一种利用语言模型自动生成知识并整合到
常识推理中的方法,这种方法利用了大语言模型的优势,
将其作为改进常识推理的、灵活的外部知识来源。通过使
用通用的提示格式直接从语言模型中生成知识陈述,然后
选择与给定任务相关的知识,可以提高常识推理的准确
性。这种方法在语言生成、自然语言推理和问答系统等领
域具有广泛的应用前景。
生成知识技术结合 few shot 是很多 AI +低代码技术的基石,也是构建问答系统、知识库等产品的重要技术依赖
12. 提示工程进阶-生成知识
让模型懂得更多
GPT 学会了我的技能(代替了我)
造 DSL 再也不能称为门槛了!
13. 如何编写提示工程的总结
普通原则
• 从最基本,最原子的任务做起,将大任务分解成
多个子任务
• 提示内容最好包含:指令、上下文、输入、输出
格式
• 对于希望模型执行的指令和任务要非常具体。提
示越具描述性和详细性,结果越好。最好带上例
子
• 不要写太多废话,尽量精炼,不要带前后矛盾的
提示。
进阶技巧
• 少样本提示(Few-Shot Learners)。给出一
些样例,引导模型按照样例回答。
• 思维链(Chain-of-Thought(CoT)
prompting)。通过提供推理步骤,让大语言模
型具备分析能力。过程中也提到了(Zero-Shot
CoT),引导模型在回答的时候,给出推理步
骤,会更容易获得理想的结果。
• 生成知识(Generated Knowledge
Prompting)。对于一些大模型不掌握的知识。
我们可以通过提示的形式输入进去,从而获得
更准确的答案。
https://github.com/promptslab/Awesome-Prompt-Engineering
关于提示工程更多的介绍可以学习 https://learnprompting.org/zh-Hans/
14. langchain-每个gpt开发者都应该掌握的包-Prompt-Ops工具
LLM调用
文本加载器/文本处理器
Loader/Embedding
提示词管理
Prompt
Chain
多模型(OpenAI/HuggingFace/..) 缓存(Redis/SQL/MEM)
流模式(EventSourcing) FakeLLM(mock)
云存储(Azure/AWS/...) 本地(CSV/JSON/...)
文档拆分(Chunk splitter) 向量数据库(Vector Store)
Prompt模板(LLM) Prompt模板(Chat)
输出解析器 shot选择器ExampleSelector
LLM Chain Index Related Chain
Sequential Chain Other Chain
Chains 是 LangChain 中最重要的概念,其实可以理解为一个个有明确输入/输出的独立任务,可以使用 Chain 构建完成某个特定任务的应用程序。例
如,我们可以创建一个链,它接收用户输入,使用 Prompts 相关组件格式化输入,然后将格式化后的结果传递给 LLM,然后将LLM 的输出传递给后端
组件或者其他链。我们也可以通过将多个链组合在一起,或将链与其他组件组合来构建更复杂的链。
LangChain 实现了很多现成的链,比如用于对文章进行总结的 Summarization 链,用于对指定文本进行问答的 Question Answering/Question
Answering with Sources 链,用于对指定知识库问答的 Retrieval Question Answering/Retrieval Question Answering with Sources 链,用于获取并
解析网页的 LLMRequestsChain 链,用于操作关系型数据库的SQLDatabaseChain链等。
15. 低代码介绍-产品矩阵
在国外,低代码类产品矩阵非常庞大。medium.com
将低代码类产品按照功能分为以下几类:
BI 数据可视化图表搭建
数分
卖家
运营
CRM 类应用搭建
机器学习类应用搭建
企业应用搭建
ISV/集成商
机器学习工程师
物联网开发
设计师
店铺装修工具
物联网、IOT 构建工具
Web、Mobile 应用开发
工作流系统
产品经理/isv/开发
产品经理/isv/开发
16. 低代码与GPT
GPT X UI
UI编排:构建用户界面
GPT X 业务逻辑
逻辑编排:构建业务逻辑
服务编排:构建接口服务
GPT X 文档
GPT X 数据源
逻辑编排:构建交互行为
GPT X 交互逻辑
模型编排:构建数据模型
GPT X 接口
17. 实战:根据低代码不同场景构建
Prompt
分解任务
构造 Promopt
获取openai的
输出并解析
18. GPT X 数据源开发-prompt 的 hello world
•
分解任务
•
•
构造
Promopt
目标:希望能够根据需求自动生成 SQL
我需要获取目前的库表信息,之后根据 SQL 知识构建 SQL
输出指示
•
•
•
指令 —— 希望模型输出 SQL
上下文 —— 当前在哪个库,哪个表
输入数据 —— 表结构 -DDL
输出指示符 —— 我希望输出纯正 sql,不想解析一堆内容
指令
上下文
在构建 GPT 产品时,主要的工作都在组织 prompt 上,因此对 prompt 进行设计可以有效达到目的
SQL 是 GPT 非常擅长编写的语言
利用生成知识(Generated Knowledge Prompting) 这一技巧,让 GPT 掌握了他不知道的东西
19. GPT X 数据源开发的 prompt 技巧
如何实现跟业务系统的集成
在实际产品中,GPT 通常是一个服务
人机交互由产品进行处理,同时通过代理访问 GPT
系统的元数据可以“喂给”GPT当作语料
通过对元数据的有效缩减可以减少Token
https://github.com/sqlchat/sqlchat
20. GPT X SQL开发-使用 langchain
Langchain的开发过程:
选择一个 or 多个 chain 贴合你的场景
初始化 chain 需要依赖的东西
Run!
21. GPT X 接口服务-传统接口
通过生成知识技术构建接口查询网关
分解任务
构造
Promopt
• 通过目前系统的接口如何获得数据
• 指令 —— 希望告诉我如何组装接口,获取有效的数据
上下文 —— 当前的接口数据
输入数据 —— 用户需要的字段
输出指示符 —— 指示输出的类型或格式
•
•
•
我们仍然利用万能的“生成知识”把
swagger 的接口信息给到 GPT 去学习
GPT 的学习能力能够理解很多接口操作
接口数据仍然占据大量的 Token
接口的能力会限制服务能力,用户的需求是
枚举不完的
https://github.com/obi1kenobi/trustfall
Swagger API
22. GPT X 接口服务-gpt X graphql 做 AI 友好的接口设计
AI友好,即在可以使用各种 prompt engineer 的基础上, 你仍然可以选
择 AI 最会的技能
23. GPT X 低代码搭建-基本思路
分解任务
•
•
通过输入文字,自动生成相应的页面
页面是什么东西?页面用什么构建?
构造
Promopt
•
•
•
•
指令 —— 希望告诉我如何生成一个页面,使用低代码平台的DSL 获取openai
上下文 —— 当前使用的技术栈
的输出并解
输入数据 —— ?
析
输出指示符 —— ?
基本思路:
1、利用生成知识技术,设计一个
prompt,使 GPT 返回自己的 DSL
2、利用相关的系统 API,将页面依
赖的数据源,系统的组件等信息加
载进来
存在的问题:
1、组件层面:组件很多,属性很
多,如何全部丢到 prompt 中?
2、大部分的 AIGC 类需求,都以
一次生成为主,但低代码这种高频
编辑(需求高频变动的)如何解决
更新问题
24. GPT X 低代码搭建-prompt的设计与系统架构
构建一份完整的 Prompt 模板,将相关代码说明传入
DSL知识
组件知识
25. GPT X 低代码搭建-如何做update
JSON patch的使用
JSON Path 可以描述 JSON 文档变化. 使用它可以避免在只需要修改某一部分的时候发送整个文档内
容. 补丁(Patch)内容的格式也是JSON.JSON Patch由IETF在RFC 6902中规范.
26. GPT X 低代码搭建-逻辑可视化低代码
Flow Based Programing (https://github.com/flowbased)是 J. Paul Rodker Morrison很早以前提出的一种编程范式。FBP 把应用看作
一个黑盒子,它能够看到的是一张进程(processes)组成的网,而进程间通过连接(connection)进行通信,进程通过端口(port)来
访问连接(这种抽象类似网络编程)。
FBP 的三大概念:
1、进程:组件(component)的一个实例,可以跟其他进程并行运
行。其他进程可以是同个组件的其他实例。
2、网络:表示为一个有向图,其中进程作为节点,而连接作为边
3、组件:对于应用开发者,通常可以看作黑盒;当要使用传统高级
语言来创建组件或者组件本身是个子图时,它就是白盒。
27. GPT X 低代码搭建-逻辑 DSL设计
设计一个 schema 来存储“图”, 兼顾绘图和逻辑。
Logic schema 由三个主要的实体结构构成:
Flow 流程主体, Node 节点描述,Link 节点关系描述
在数据库中可以通过 JSON 方式存储完整的 Flow
同样可以存储三张表:Node,Link 表与 Flow 表来将三个实体结构分开存储。
youtube.com/watch?v=nvLG_gcjbcQ&ab_channel=AKP%27sIoTTech
28. GPT X 低代码搭建-逻辑 DSL prompt
29. GPT X 数据可视化-基础用法
•
分解任务
•
生成一个柱状图,横轴是year,纵轴是count,数据是 XXX
构造
Promopt
•
•
•
指令 —— 生成一段图表的描述
上下文 —— 图表DSL的规范
输入数据 —— 当前的数据
输出指示符 —— 输出一段描述图表的DSL
https://www.graphmaker.ai/
30. GPT X 数据可视化-进阶-异常识别
你的可视化真的有用吗?
•
分解任务
•
展示袜子每年的销量数据趋势,并分析其中的异常,标注在图表上
构造
Promopt
•
•
•
能够构成自动化分析,解读的一些特征:
指令 —— 生成图表描述
上下文 —— 当前的库表字段,趋势要用什么图表,如何分析异常
输入数据 ——
输出指示符 —— 输出一段描述图表的DSL
31. GPT X 数据可视化-进阶-自动化可视化
你的可视化真的有用吗?
•
分解任务
•
展示袜子每年的销量数据趋势,并分析其中的异常,标注在图表上
构造
Promopt
•
•
•
寻找合适的图表形态展现数据
指令 —— 生成图表描述
上下文 —— 当前的库表字段,趋势要用什么图表,如何分析异常
输入数据 ——
输出指示符 —— 输出一段描述图表的DSL
32. GPT X 文档-让 AI 更智能
问答系统构建
•
分解任务
•
提问:平台如何支持在线打包发布
构造
Promopt
•
•
•
指令 —— 返回打包发布的文档
上下文 —— 全部文档
输入数据 —— 我需要哪方面的文档
输出指示符 —— 输出一段文档内容
• token不够,把全部文档喂给 GPT 需要大量 Token
• 如何判断用户的提问跟你的文档内容吻合?
• 我输入的是中文,这文档是英文啊,如何搜索?
• 如何去管理和存储你的文档?
33. GPT X 文档-让 AI 更智能
如何判断两个字符串“类似”-万物皆可 embedding
openai官网 embedding 使用范例 https://platform.openai.com/docs/guides/embeddings/use-cases
1. "狗咬耗子"
2. "犬类捕食啮齿动物"
3. "我家养了只狗"
搜索(结果按查询字符串的相关性进行排序)
聚类(将文本字符串按相似性分组)
推荐(推荐具有相关文本字符串的项目)
异常检测(识别相关性较小的异常值)
多样性测量(分析相似度分布)
分类(文本字符串按其最相似的标签进行分类)
在自然语言处理和机器学习领域,"embeddings" 是指将单词、短语或文本转换成连续向量空间的过程。这个向量空间通常被称为嵌入空
间(embedding space),而生成的向量则称为嵌入向量(embedding vector)或向量嵌入(vector embedding)。
嵌入向量可以捕获单词、短语或文本的语义信息,使得它们可以在数学上进行比较和计算。这种比较和计算在自然语言处理和机器学习中
经常被用于各种任务,例如文本分类、语义搜索、词语相似性计算等。
在中文语境下,"embeddings" 通常被翻译为 "词向量" 或者 "向量表示"。这些翻译强调了嵌入向量的特点,即将词汇转换成向量,并表示
为嵌入空间中的点。
34. GPT X 文档-让 AI 更智能
如何实现和存储 embedding-向量数据库技术介绍
1. 索引:向量数据库使用 PQ、LSH 或 HNSW 等算法(https://www.6aiq.com/article/1587522027341)对矢量进行索引
2. 查询:向量数据库将索引查询向量与数据集中的索引向量进行比较,找到最相近的结果
3. 后处理:某些场景下向量数据库从数据集中检索最相近的结果后,对其进行后处理以返回最终结果。比如通过使用不同
的相似性算法重新排列所有结果。
SELECT * FROM items WHERE id != 1 ORDER BY embedding
<-> (SELECT embedding FROM items WHERE id = 1) LIMIT 5;
https://supabase.com/docs/guides/database/extensions/pgvector
官方推荐使用ada-002,便宜又好用。
普通搜索和向量搜索的异同 https://cloud.tencent.com/developer/beta/article/1941250?areaSource=106005.13
35. GPT X 文档-让 AI 更智能
核心流程
把提问向量化
读取后分块
把每一块向量化
计算相似度,返回
把向量化后的存储到db
把问题和相似度高的内容构建prompt,发给gpt
利用微搭和openai embedding搭建一个文档知识库https://cloud.tencent.com/developer/article/2247105
36. GPT X 文档-让 AI 更智能
使用 langchain
加载文本
切片、分块
存储到向量数据库
查询相关的文本
文本+query调用openai
https://towardsdatascience.com/4-ways-of-question-
answering-in-langchain-188c6707cc5a
37. GPT X 低代码的总结
•
AIGC技术,一定是建立在一个好的 DSL 上才会实现开发者层面与机器交互。
从 sql 到 gql/swagger 到 ui schema 到 logic schema 一直到 chart,DSL是人机交互的桥梁。
DSL 的编写才是提效的关键技术。
在使用 GPT 实现低代码能力时,仍要遵循基本 prompt 原则:指令、上下文、输入输出,其中输出
的格式记得明确。
• GPT 具有强大的学习能力,可以将低代码方方面面的知识都灌输给他,给他提供完善的
knowledge,甚至可以“教”他一些他不懂的专业知识
• 对于搭建场景,设计一个完善的 DSL 是重中之重,prompt 技巧只是补充,DSL 设计的好,使用简
单的 few shot 就可以实现大多数场景
• 可以通过向量数据库+ embedding 的方式,突破 token 的限制,从而实现大规模文本搜索的功能
• langchain 是实战利器,推荐所有想跟自己系统集成 gpt 能力的开发者使用
关于提示工程更多的介绍可以学习 https://learnprompting.org/zh-Hans/
https://promptingguide.azurewebsites.net/techniques/knowledge
38. GPT高级使用技巧及思考
39. Gpt workflow
对 GPT 进行低代码流程编排-三分钟实现一个chatPdf
https://github.com/FlowiseAI/Flowise
https://n8n.io/
40. ai based agent 应用架构及其低代码编排能力
随着 ChatGPT 的发展,不仅仅传统的人机界面交互
会被颠覆,维持了很多年的存储-领域模型-服务端-
客户端的应用架构也极有可能会被颠覆。
6月23日,openai专家提出了 《LLM Powered
Autonomous Agents》概念
(https://lilianweng.github.io/posts/2023-06-
23-agent/),其正是市面上曾经风靡的langchain
agent/reAct/autogpt等方案的思想,其架构设计如
右图:
值得注意的是,市面上已经基于这样的架构出现了多种
架构解决方案以及低代码编排工具,如:
ai-based system
可能会颠覆传统的
系统设计
https://flowiseai.com/
https://github.com/logspace-ai/langflow
41. GPT 的优势
GPT 绝不是无所不能,通过DSL和prompt的构建才能发挥价值
通过工程能力可以大幅度提升GPT的效果,因此绝对不是“无事可做”
强大的学习理解能力
ai一定是建立在一个好的DSL上才会更加方便大家与机器交互,从sql到gql/swagger到form
schema到 logic schema一直到chat,我们发现 DSL 是我们跟人机交互的桥梁,DSL 的编写才
是提效的关键技术。
工欲善其事 善假于物也
openai/大模型的核心价值:低门槛的ai能力调用
42.