当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.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.129.0. UTC+08:00, 2024-06-29 20:31
浙ICP备14020137号-1 $Map of visitor$