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