当 Kubernetes 遇到 GPT:利用编程模型的秘诀,让你省时省力!

本文转自 LEE 的博客,原文:https://juejin.cn/post/7215151665929912380,版权归原作者所有。欢迎投稿,投稿请添加微信好友:cloud-native-yang

事件背景

Hi Everybody!! 这次老李不讲技术了,而是讲“玄学”。最近看了很多 GPT 的资料,尤其如何调教 GPT 的教程以后,感受良多。也看到不少小伙伴写的优秀文章,内心很是触动。原本不想提笔写这篇文章,但是在边上吴老师的怂恿下,最后还是决定写一篇关于编程模型和思路的“玄学”文章,希望能够帮助小伙伴们,在开发起点上就选对方向,减少不必要的心智负担。

前置知识

一说到编程模型或者开发模式,大家应该第一反应是23 种开发模型:单例、工厂、发布订阅... 吧啦吧啦。实际我也是,但是这次想说的不是他们,而是声明式编程(declarative programming)范式和陈述式编程(imperative programming)范式这两个兄弟。

这两种开发范式有些历史,上世纪就已经出现了。小伙伴日常开发都在使用,甚至在不知不觉中混合使用。而我想借着学习了一些 GPT Prompt 以后,把我自己的心得整理下,分享给大家 (欢迎大家来拍砖,但是麻烦轻轻的哈,年纪大了一不小心就会被拍死!!)。

我们先说说声明式编程(declarative programming)范式和陈述式编程(imperative programming)范式是个啥?

  • 声明式编程: 其中程序员描述所需的结果,而不是指定如何实现该结果的特定步骤。声明式编程通常使用函数式编程或逻辑编程语言,并依赖于表达式、公式和规则来解决问题。

  • 陈述式编程: 其中程序员通过指定执行任务所需的详细步骤来实现所需的结果。陈述式编程通常使用命令式编程语言,例如 C++或 Java,并且它们使用循环、条件语句和变量来控制程序的行为。

总之,声明式编程更关注于做什么,而陈述式编程更关注于怎么做

两种编程范式代表语言

  • 声明式编程: SQL、DSL、MapReduce 等等(底层轻代码逻辑,只需要关注输入输出处理,执行细节不关注

  • 陈述式编程: C/C++、JAVA、Go 等等 (底层重代码逻辑,不但关注输入输出处理,而且还需要关注到执行的每一步或者每一行细节)

两种编程范式流程图

通过下面两张图我们可以看出,声明式编程(declarative programming)范式和陈述式编程(imperative programming)范式 区别在每一次数据或者事件处理完毕后,状态返回目标对象不同,而且对返回的状态处理人也不相同。

声明式编程

41872d92bc2022dae1199fb08912492e.jpeg
声明式编程

陈述式编程

81ec434ae2f2175e004315d5b125f750.jpeg
陈述式编程

两种编程范式的优缺点

声明式编程的优点:

  • 更加抽象和模块化,减少了代码重复和错误。

  • 更容易阅读和维护,减少了对程序员的要求,因为代码更加自解释。

  • 由于不需要考虑执行顺序,从而使并行化更加容易。

声明式编程的缺点:

  • 可能会导致性能问题,特别是在大规模数据处理时,需要深入了解底层实现才能优化代码。

  • 声明式语言可能没有命令式语言灵活,很难进行动态调整。

陈述式编程的优点:

  • 更直观,逻辑更清晰,便于理解和调试。

  • 更好地控制计算机硬件,可以优化程序的性能。

  • 具有更广泛的应用范围,可以在各种类型的编程任务中使用。

陈述式编程的缺点:

  • 更冗长,通常需要编写更多的代码。

  • 更难以维护,因为代码可能难以理解或有副作用。

  • 不容易并行化,因为它们通常需要共享状态和修改状态,这些都需要同步。

声明式编程

声明式的编程项目越来越多,甚至已经悄悄的在改变我们的日常开发工作。我想不管哪位研发小伙伴,应该都对陈述式编程非常熟悉,而且日常工作绝大多数时间都在做,而声明式的编程可能是近几年才出来明确的定义。我问了一圈熟悉的研发小伙伴,大多数都没有办法详细和准确的说清楚声明式编程是个啥。也难怪,平常都在忙,只要功能实现,哪里管那么多概念。

当然从我的角度来看,概念准确能够帮助自己正确使用开发模型和开发方法,有利于提高开发效率和减少 Bug 产生,同时提高代码的质量。

声明式编程范式产生的原因

声明式编程产生的原因是为了简化软件开发的过程和提高代码的可读性和可维护性。在传统的命令式编程模型中,程序员需要详细地描述计算机执行任务的每个步骤和操作,这使得代码难以理解和调试,并且容易出现错误。声明式编程则更关注于“做什么”,而不是“怎么做”,程序员只需描述所需的结果,而不是实现具体的过程,从而降低了代码的复杂性。

声明式编程通常使用函数式编程或逻辑编程语言,例如 Haskell、Prolog 等,这些语言具有更高的抽象级别,可以大大简化程序员的工作。同时声明式编程也更加适合处理大规模数据和并行计算,因为它们不需要考虑程序的执行顺序,从而更容易进行优化和并行化。

声明式编程会替代陈述式编程吗

声明式编程和陈述式编程都有其优点和缺点,因此没有一种编程范式可以完全替代另一种。实际上,在许多情况下,声明式编程和陈述式编程被结合使用,以充分利用它们各自的优势。

例如,在 Web 开发中,声明式编程的方式通常用于用户界面设计和交互,而命令式编程则用于控制后端数据处理和服务调用。另外,一些领域特定语言(DSL)也可能在其中一种或两种范式的基础上进行构建,以满足特定领域的需求。

综上所述,声明式编程不会完全替代命令式编程,而是作为一种补充和选择来使用,根据具体情况进行选择。

声明式编程主要的应用场景

声明式编程最常见的应用场景包括:

  • 用户界面设计:声明式编程非常适合描述用户界面,例如 HTML、CSS 和 React 等库和框架。

  • 数据查询和转换:声明式编程在处理数据时也非常有用,特别是在大规模数据处理和分析中,例如 SQL 和 MapReduce 等技术。

  • 人工智能和机器学习:声明式编程是实现推理和自动化决策的一种有效方式,例如 Prolog 和 Lisp 等语言。

  • 并行计算:声明式编程不需要考虑程序执行顺序,因此可以更容易进行并行化,例如 Hadoop 和 Spark 等技术。

  • 领域特定语言(DSL):声明式编程通常用于构建领域特定语言(DSL),以便解决特定领域的问题,例如 LaTeX 和 SQL 等。

总之,声明式编程在各种应用场景中都具有广泛的用途,可以显著提高软件开发的效率和代码质量

Kubernetes 对象管理

Kubernetes 的 API Server 遵循声明式编程(declarative  programming)范式而设计,侧重于构建程序程序逻辑而无须用户描述其实现流程,用户只需要设定期望的状态,系统即能自行确定需要执行的操作以确保达到用户期望的状态。例如,期望某 Deployment 控制器管理三个 Pod 资源对象时,而系统观察到的当前数量却是两个,于是系统就会直到需要创建一个新的 Pod  资源来满足此期望。Kubernetes 的自愈、自洽的功能都依赖于其声明式机制。

官方文档:kubernetes.io/zh-cn/docs/…[1]

Kubernetes 系统的大部分 API 对象都有着 spec 和 status 两个字段,其中,spec  用于让用户定义所期望的状态,系统从中读出相关的定义;而 status  则是系统观察并负责写入的当前状态,用户可以从中获取相关的信息。Kubernetes  系统通过控制器监视着系统对象,由其负责让系统当前的状态无线接近用户所期望的状态。

Kubernetes 对象管理模型

236f00281eb7dd3f72c69e7419159135.jpeg
Kubernetes 对象管理

声明式对象配置并不直接指明要进行的对象管理操作,而是提供配置清单文件给 Kubernetes  系统,并委托系统跟踪活动对象的状态变动。资源对象的创建、删除及修改操作全部通过唯一的命令 apply  来完成,并且每次操作时,提供给命令的配置信息都将保存与对象的注解信息  (kubectl.kubernetes.io/last-applied-configuration)  中,并通过对比检查活动对象的当前状态、注解中的配置信息及资源清单中的配置信息三方进行变更合并,从而实现仅修改变动字段的高级补丁机制。

GPT Prompt

所谓 ChatGPT 的基本功核心是学会设置 Prompt , Prompt 你可以理解成「提示语」,他的目的是让 ChatGPT 进入某种对话模式。

而 Prompt 也是遵守声明式编程(declarative programming)范式的方式,来完成 Chain Of Through,一步一步的调教你的机器人,告诉你期望的状态与输入的数据之间的关系。

在 ChatGPT 中,Prompt 通常指的是一个输入的文本段落或短语,作为生成模型输出的起点或引导。Prompt 可以是一个问题、一段文字描述、一段对话或任何形式的文本输入,模型会基于 Prompt 所提供的上下文和语义信息,生成相应的输出文本。

Prompt 是什么

Prompt 也可以看作是一种声明式编程。Prompt  是一种用于生成自然语言文本的语言模型,它的输入是一个提供的文本提示(prompt),输出是一段符合自然语言语法的文本。在 Prompt  中,用户只需要提供提示,而不需要指定具体的实现步骤,Prompt 会自动根据预训练的语言模型生成相应的文本。

与其他声明式编程范式类似,Prompt 将注意力从具体的实现过程中解脱出来,使用户更加关注所需的结果和目标。因此,Prompt  非常适合自然语言生成、问答系统、聊天机器人等任务,特别是在需要处理大量文本数据时,Prompt  能够快速生成符合语法和上下文的文本,并且可以很容易地进行调整和优化。

为了更好地理解 Prompt  方法,我们可以以文本分类任务为例。在传统的文本分类任务中,我们通常将文本输入模型中,并期望模型自动从文本中提取相关特征以实现分类。但是,在  Prompt  方法中,我们可以向模型中输入一个问题或提示,以帮助模型更好地理解文本并进行分类。例如,对于一个二分类任务,我们可以向模型中输入一个类似于“这个文本是正面的吗?”的提示,帮助模型更好地理解文本,并更准确地进行分类。

大白话:我期望状态是***,AI 通过结算输出给我一个状态,然后我再根据这个状态调整 Prompt,然后重新给 AI 输出一个状态,一直循环到某一个输出的状态是我满意的。

Prompt 的应用场景

以下是 Prompt 中声明式编程的一些示例

  • 生成邮件正文:用户提供一些关键词和指令,例如“给客户 A 发送一封感谢邮件”,Prompt 会根据这些信息自动生成一封符合邮件格式和语法的- 电子邮件正文。

  • 问答系统:用户提出问题,例如“哪个国家是世界上最大的油生产国?”,Prompt 通过预设的规则和语言模型分析问题,从数据库或互联网上检- 索相关信息,并生成符合语法和上下文的答案。

  • 聊天机器人:用户输入一些对话内容,Prompt 可以根据所提供的提示和上下文生成适当的回复,使聊天机器人能够更好地理解和回应用户的需求。

Prompt 的截图

01814c31b12d7934cb590e7e19512075.jpeg
GPT Prompt

从上面的图中可以看出:我提出期望状态 --> AI 返回状态 --> 我继续提出期望状态 --> AI 返回状态 --> 我满意 AI 返回的状态 --> 循环退出

写在最后

随着计算机越来越强大,编程越来越简便。我个人觉得长期声明式编程和陈述式编程会长期并存,但是声明式编程在项目中的比重会越来越高,甚至以后基本不需要我们再手写代码,而是只要提交“想法”,然后 AI 完成最后的工作。如果大家觉不太可能,可以看看 ChatGPT + Midjourney  如何帮助视觉设计师大幅度的提升工作效率。甚至都不需要你有画画的基础,只要有想法,善于使用  Prompt,然后在成批的图片中选择最符合你的要求的图片。

说到这里,如何告诉 AI 去完成工作,也许就是短期内能够看到的未来。这个也就是声明式编程的意思,也是我这次成文的主要原因。

引用链接

[1]

kubernetes.io/zh-cn/docs/…: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/object-management/

4382ab0636751f540ee7d9ef36e2cb24.gif

30581a92648e4cac73442b24156ef22d.png

你可能还喜欢

点击下方图片即可阅读

念一句咒语 AI 就帮我写一个应用,我人麻了…

2023-03-31

9543b67d4135805cc343fe6bd00243d5.jpeg

Laf v1.0 发布:函数计算只有两种,30s 放弃的和 30s 上线的

2023-03-28

2a1dd6a33a308216b1bb94a7f78bc7b6.jpeg

快速开发一个 ChatGPT 应用的保姆级教程

2023-03-27

f0bac2b58fac0206c77c92b53fad686e.jpeg

0117eb3308f6fc6fbee98c09755ba2dd.gif

云原生是一种信仰 🤘

关注公众号

后台回复◉sealos◉获取以 kubernetes 为内核的云操作系统发行版,在云桌面中管理 Kubernetes 集群生命周期,运行分布式应用程序!

e7bc54e344d656cd288cf81c3b0bab8d.gif

b09ccf27e29ef82a9e74c1fa694e60f0.gif

点击 "阅读原文" 获取更好的阅读体验!

发现朋友圈变“安静”了吗?

ba7288b4297a1a0a56fbea8ebb889c94.gif

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01.LLaMA

文章目录 前言导读摘要 预备知识语言模型ChatGPT性能暴涨的原因(涌现)GPT-1Transformer 背景介绍模型精讲数据集及处理Common CrawlC4GithubWikipediaGutenberg and Books3ArXivStack Exchange小结 关键TrickPre-normalizationSwiGLURotary Embeddings 实…

必收藏!105页SD提示词手册;百度 Prompt 官方课程;7场 AIGC 免费线下活动;不懂代码的我,利用GPT做了一个微信小程序 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『Stable Diffusion Prompt Book』105页超详细,必收藏的AI绘画实用手册 ShowMeAI知识星球资料编号 R040 这是OpenArt 出品…

大型语言模(LLM)之提示词工程(四)

今天我学习了DeepLearning.AI的 Prompt Engineering 的在线课程,我想和大家一起分享一下该门课程的一些主要内容。以下是我写的关于该课程的前两篇博客: 大型语言模(LLM)之提示词工程(一)大型语言模(LLM)之提示词工程(二)大型语言模(LLM)之提示词工程(三…

VScode v1.75新特性

今天打开VScode看到了新版本 v1.75 的通知,我立即(一如既往地)安装了它。 简介 这个新版本中最引起我注意的是创建不同PROFILES的可能性。 现在我们可以为不同的开发场景创建配置文件,并拥有“基于工作流的不同 VScode 配置”&…

VScode配置C++(win11)以及Vscode的一些使用问题

目录 一、下载VScode(省略) 二、下载编译器 mingw 三、配置 .vscode 四、补充:配置好后,输出中文会乱码 五、文件参数讲解 六、多文件编译:修改task.json 七、中文问题 一、下载VScode(省略&#xf…

微软VSCode的常用操作和常用设置

微软的Visual Studio Code(VSCode)编辑器是因为其简洁高效,轻量级,是很多程序员的选择,如何快速上手并使用,本文将对vscode在C/C下的应用进行简单介绍。 软件下载 建议大家去官方网站按需进行下载&#x…

VScode配置task和launch支持C++11

title: VScode配置task和launch date: 2022-12-12 20:57:26 cover: categories: VisualCode tags: debug VScode配置task和launch支持C11 刚开始使用VScode一般都是使用默认的task和lunch配置去执行代码或者debug,一旦修改了相关目录或者改动一些参数,…

2023最新最全vscode插件精选

文章简介 本文介绍最新、最实用、最强大的 vscode 精选扩展。好用的扩展,犹如神兵利器,帮助程序员在代码的世界中,所向披靡,战无不胜! 作者介绍 随易出品,必属精品,只写有深度,有质…

将vscode打造为你的开发工具的首选

文章目录 前言vscode主要配置vscode的两个主要快捷键创建你的代码模版Java配置JDK和Gradle环境主要插件常见的配置launch.json配置运行测试用例常见问题常用快捷键 Python主要插件settings.json配置launch.json配置示例 Javascript/typescript常用插件settings.json样例 Golang…

20230512-VSCode-配置C++17-win11-22h2

20230512-VSCode-配置C17-win11-22h2 一、软件环境 标签:C VSCode w64devkit gcc12分栏:C操作系统:Windows11 x64 22h2编译器:vscode-1.78.2 w64devkit-1.18.0 二、操作步骤 1. 下载安装VScode 官网 打开官网【https://code…

VsCode超实用插件推荐,让你的开发效率火力全开

辅助开发类: 1. Vetur VUE开发必备插件 1.语法高亮,包括 vue/html css/sass/scss/less/stylus js/ts 2.语义高亮,除了支持template模板以外,还支持大多数主流的前端开发脚本和插件 3.语法错误检查,包括 CSS/SCSS/LE…

VScode插件推荐以及settings配置

1.[Deprecated] Bracket Pair Colorizer 2:一个可定制的扩展,用于为匹配的括号着色。 2.Ant Design Vue helper:antDesign的扩展工具(别的ui框架也有这样的插件,可以根据自己的需求下载)。 3.Auto Close …

搭建自己的聊天室平台、公司内部聊天平台,Rocket.Chat搭建及使用

一,简介 rocket.chat是一个开源的社交软件,即可以直接在web页面使用,也可以下载APP(Android,IOS,Windows,Mac OS) 主要功能:群组聊天,直接通信,私聊群,桌面…

网络内部搭建NTP服务器

医院内部很多服务器及科室客户端电脑经常出现时间不一致的状况,导致收费、挂号及检查等项目出现问题。因为现在医院都部署了银医,通过微信、支付宝等互联网应用实现挂号、收费、报告查询等。所以可以在医院内外网互联的前置机上部署一个NTP服务&#xff…

解决登录提示Access denied,You do not have access to chat.openai.com

在登录使用相关AI对话服务时,登录提示: Access denied You do not have access to chat.openai.com. The site owner may have set restrictions that prevent you from accessing the site. 原因是IP被阻挡了,参考解决: 解决访问…

报错https://chat.openai.com/ api/auth/ session 429怎么办

报错https://chat.openai.com/ api/auth/ session 429怎么办 记录一下今天遇到的bug 场景是这样的:我正常进入chatgpt的提问页面,然后一直转圈,重新登陆,清楚浏览器缓存,都不行。 文章目录 报错https://chat.openai.c…

用了cloudflare后,网站提示Sorry, you have been blocked怎么解决?

其实cloudflare还是非常智能的,但有时候为了安全起见,我们在网站后台修改参数的时候会被CF拦截,我就遇到了好几次提示Sorry, you have been blocked的情况。 遇到这种情况后,我首先找了官方的说明文档,但操作了半天好…

最新版腾讯防水墙(二代)识别

2022最新版腾讯防水墙(二代)识别 戳这里→康康你手机号在过多少网站注册过!!! 友情推荐:新一代安全短信 * 验证码地址:https://007.qq.com/online.html * 使用OpenCv模板匹配 * 成功率90%左右…

使用大型语言模(LLM)构建系统(七):评估1

今天我学习了DeepLearning.AI的 Building Systems with LLM 的在线课程,我想和大家一起分享一下该门课程的一些主要内容。之前我们已经学习了下面这些知识: 使用大型语言模(LLM)构建系统(一):分类使用大型语言模(LLM)构建系统(二):内容审核、…

chatgpt赋能Python-python_def函数报错

如何关闭Python Console 在Python编程中,Python Console是一个常用的工具,它可以用来测试和调试代码、查看变量和函数等等。但是,在一些情况下,你可能需要关闭Python Console以便进行其他操作。那么,如何关闭Python C…