如何利用 GPT 开发智能应用?微软提出这九大原则

毫无疑问,GPT 的出现以日新月异的速度改写了软件开发的工作方式

兴奋,也许也有点焦虑。作为开发人员,如何在 GPT 时代与人工智能协作?在「万物皆有副驾驶」的年代,如何划定分工边界,让 GPT 成为开发人员的生产力魔盒?

作为微软 CVP、Deputy CTO 的 Sam Schillace 基于其在一系列大语言模型(LLM)人工智能系统中的开发经验提出了九项原则,即 Schillace Laws of Semantic AI(语义 AI 的 Schillace 法则)。这九大原则可视为 Sam Schillace 在利用 GPT 技术革新软件开发的前沿实操总结,也许对正在思考如何重构软件工程领域的你也会有所启迪——

#1 如果模型可以做到  就不要写代码

模型会进化会变得更好,但编译之后代码不会。系统设计的总目标,应该是利用 LLM 的规划和理解意图的能力来构建具备杠杆效应的应用程序。开发者很容易陷入更加命令式的思维模式,并为程序的某些方面编写代码。要抵制这种诱惑——在您能够让模型可靠地执行某些操作的程度上,随着模型的发展,它将变得更好、更稳健。

#2 用精度换取代码杠杆  用交互来优化

沿着上一原则的思索,编写 LLM 时的正确心态不是“让我们看看我们能让跳舞的熊做什么”,而是尽可能地放大 AI 系统的能力。例如,可以先构建非常通用的模式,如“从数据库生成报告”或“编写一年的备课目录”,再使用纯文本提示词进行参数化,轻松地产生极具价值和差异化的结果。

#3 代码用于语法和过程  模型用于语义和意图

大模型有很多不同的表述方式,但从根本上说,当模型被要求推理意义和目标时,它们更强大。而当它们被要求执行特定的计算和过程时,则变现较弱。举例而言,高级模型很容易写出一般性的数独求解代码,但很难让它们自己解决数独。每种类型的代码都有不同的优势,因此使用正确类型的代码解决正确类型的问题非常重要。语法和语义之间的边界是这些程序的难点。

#4 系统的脆弱程度  取决于其最脆弱的部分

这适用于任何一种代码。我们正在努力实现灵活性和高度杠杆效应,因此谨记别硬编码任何东西。尽可能地在提示词中加入推理和灵活性,并最小化使用命令式代码,以使 LLM 发挥作用。

#5 聪明的问题,才能获取聪明的答案

新兴的 LLM AI 模型都非常强大,并显得“受过良好教育”。但它们缺乏上下文和主动性。如果您向它们提出简单或开放式问题,您将得到简单或通用的答案。如果您想要更多细节和精细度,问题必须更加智能化——这是“垃圾进,垃圾出”在人工智能时代的回声。

#6 不确定性是异常处理

因为我们在用精确度换取代码杠杆,所以当模型对意图不确定时,我们需要依靠与用户的交互来校正。当我们在程序中有一组嵌套的提示词时,并且其中一个提示词在其结果上不确定时(“一个可能的方式是...”),正确的做法是等效于“异常处理”(Exception Throw)——将这种不确定性向上传播,直到能够澄清或与用户交互的级别。

#7 文本是通用的传输协议

由于 LLM 善于解析自然语言、意图以及语义,因此文本是在提示词、模块和基于 LLM 的服务之间传递指令的自然格式。自然语言对于某些用途来说不够精确,可以适当地使用结构化语言,如 XML,但总体来说,在提示词之间传递自然语言非常有效,并且对于大多数用途而言,自然语言比结构化语言更加反脆弱。随着这些基于模型的程序的不断增多,这是一种自然的“未来证明”,可以使不同的提示词能够像人类一样相互理解。

#8 对人类来说很难的话  对模型一样难

在给模型一个具有挑战性的任务时,常见的模式是它需要“仔细思考”。这看起来很有趣,非常有趣,但是当将提示符作为程序的一部分使用时就会出现问题,因为在程序中所需要的只是推理的结果。但是,使用一个“元”提示,将问题和详细答案给出,并要求提取答案,这样做效果相当好

这是一项对人来说更容易的认知任务(可以想象只需要给某人一个通用任务:“阅读这个并找到答案”,并且在用户没有专业知识的情况下,这项任务可以在许多领域中完成,因为自然语言非常强大)。因此,在编写程序时,请记住,对人来说困难的事情很可能对模型也很困难,将模式分解成更容易的步骤通常会得到更稳定的结果。

#9 谨防“意识幻觉”  模型可以用来对抗它自己

我们很容易会想象 LLM 里面有一个所谓“头脑”。但人类思考与模型之间的差异是意义重大的。其中一个可以被利用的重要区别是,目前的模型无法记住几分钟前的交互。

因此,虽然我们永远不会要求一个人在他们刚刚编写的东西中查找漏洞或恶意代码,但我们可以让模型这样做。它可能会在两个地方犯同样的错误,但它无法“欺骗”我们,因为它不知道代码最初来自何处。这意味着我们可以在某些地方“利用模型对抗自己”——它可以用作代码的安全监控器、测试策略的组成部分、生成内容的内容过滤器等。▼

看完这 9 大通用性原则,是否对你的应用开发工作有所启发?

现在,你还可以更进一步,与同侪专家切磋 GPT 大模型智能应用开发模式,并快速上手实现开发联系您的微软客户经理,申请  GPT App Innovation Workshop,由专家为您提供进一步指导。

点我前往官方文档~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用命令行添加配置码云仓库SSH秘钥-git仓库也一样

使用命令行添加配置码云仓库SSH秘钥 为什么要如何使用命令行添加配置码云仓库SSH秘钥?生成密钥你可以按如下命令来生成 sshkey:可以参考下图执行指令 添加密钥登录你的码云,鼠标移入头像,设置。点击 SSH公钥,打开配置页面&#x…

【LeetCode: 1143. 最长公共子序列 | 暴力递归=>记忆化搜索=>动态规划】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

如何在比特币系统内创造人工生命

信息来源:coingeek.com 自2015年以来,关于比特币能否进行复杂计算以及比特币是否“图灵完备”的争论一直在持续。不幸的是,现在存在着一种流传甚广的谬论,有人说比特币并非图灵完备的,它不能像以太坊区块链那样进行复杂…

第四章 使用Maven:IDEA环境

1、创建 Project2、开启自动导入 TIP 各个 IDEA 不同版本在具体操作方面存在一定差异,这里我们以 2019.3.3 版本为例进行演示。其它版本大家灵活变通即可。 第一节 创建父工程 创建 Project 开启自动导入 创建 Project 后,IDEA 会自动弹出下面提示…

ROS学习5:ROS常用组件

【Autolabor初级教程】ROS机器人入门 1. TF 坐标变换 背景 现有一移动式机器人底盘,在底盘上安装了一雷达,雷达相对于底盘的偏移量已知,现雷达检测到一障碍物信息,获取到坐标分别为(x,y,z),该坐标是以雷达为参考系的…

快速下载VScode并配置Python运行环境【详细教程】

快速下载VScode并配置Python运行环境【详细教程】 博主:命运之光 目录 快速下载VScode并配置Python运行环境【详细教程】前言下载vscode第一步vscode官网下载第二步点击下载![请添加图片描述](https://img-blog.csdnimg.cn/1d76c427314b4ddcbd350e0a7e5449d5.png)第…

数据湖Iceberg-存储结构(2)

文章目录 存储结构数据文件 data files表快照 Snapshot清单列表 Manifest list清单文件 Manifest file 数据湖Iceberg-简介(1) 数据湖Iceberg-存储结构(2) 数据湖Iceberg-Hive集成Iceberg(3) 数据湖Iceberg-SparkSQL集成(4) 数据湖Iceberg-FlinkSQL集成(5) 数据湖Iceberg-Flink…

【移动端网页布局】流式布局案例 ① ( 视口标签设置 | CSS 样式文件设置 | 布局宽度设置 | 设置最大宽度 | 设置最小宽度 )

文章目录 一、视口标签设置二、CSS 样式文件设置三、布局宽度设置1、设置布局宽度2、设置布局最大宽度3、设置布局最小宽度4、查看网页最大最小宽度5、布局宽度设置 四、代码示例1、主界面标签2、CSS 布局设置 一、视口标签设置 参考 【移动端网页布局】移动端网页布局基础概念…

第三章 使用 Maven:命令行环境

第一节 实验一:根据坐标创建 Maven 工程 Maven 核心概念:坐标 ①数学中的坐标 使用 x、y、z 三个**『向量』作为空间的坐标系,可以在『空间』中唯一的定位到一个『点』**。 ②Maven中的坐标 [1]向量说明 使用三个**『向量』在『Maven的仓…

02_Lock锁

首先看一下JUC的重磅武器——锁(Lock) 相比同步锁,JUC包中的Lock锁的功能更加强大,它提供了各种各样的锁(公平锁,非公平锁,共享锁,独占锁……),所以使用起来…

day6 socket套接字及TCP的实现框架

socket套接字 Berkeley UNIX 操作系统定义了一种API它又称为套接字接口(socket interface); socket作用: socket常见API介绍 /*创建套接字*/ int socket(int domain, int type, int protocol); /*绑定通信结构体*/ int bind(int sockfd, const, struc…

界面控件DevExtreme使用指南 - 折叠组件快速入门(二)

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能齐…

Spring Boot的日志文件

目录 日志的作用 日志的打印 常见的日志框架 自定义的日志打印 为什么不用sout来打印日志 Spring Boot日志打印 1.得到日志对象 2.使用日志对象提供的方法打印日志 日志级别 日志级别的顺序 日志级别的设置 日志持久化 配置日志文件的保存路径 配置日志文件的文件…

用扩展方法来实现EventTrigger中事件的异步等待

一、什么是扩展方法? 扩展方法是一种C#语言提供的功能,允许我们向现有类型添加新的方法,而无需修改类型的源代码。扩展方法的优缺点如下: 二、它有什么优点? 1、不需要修改源类型的代码:使用扩展方法可以…

Vue 手搓轮播效果

tiptop: 为啥需要写这个功能,因为我遇到了每个轮播层内要放3个左右的商品块,如果使用element自带的轮播就需要将一维数组切成二维数组,导致处理一些情况下就会变得很麻烦,当然那种我也写了如果你们有需要,在下方留言我…

使用chatGPT开发获取格点天气数据

1. 格点天气 1.1. 格点天气 以经纬度为基准的全球高精度、公里级、格点化天气预报产品,包括任意经纬度的实时天气和天气预报。其中,任意坐标的高精度天气,精确到3-5公里范围,包括:温度、湿度、大气压、天气状况、风力…

信息化发展

信息系统是:管理模型、信息处理模型和系统实现条件结合的 信息系统生命周期: 可行性分析与项目开发计划 需求分析 概要设计 详细设计 编码 测试 可以简化为: 系统规划:现行情况的分析,可行性研究报告 -> 设计任务…

Docker安装运行Nginx容器(纯步骤)

Docker安装Nginx容器并运行 本文章只有步骤,没有原理解释,只做平时学习提示。提前说明:由于nginx里的配置文件比较多,所以本文章不对此配置文件解释而且会有一些小问题,这个你酌情操作,但不影响你nginx容器…

数据库课设--基于Python+MySQL的餐厅点餐系统

文章目录 一、系统需求分析二、系统设计1. 功能结构设计2、概念设计2.2.1 bill_food表E-R图2.2.2 bills表E-R图2.2.3 categories E-R图2.2.4 discounts表 E-R图2.2.5 emp表E-R图2.2.6 food 表E-R图2.2.7 member表E-R图2.2.8 member_point_bill表E-R图2.2.9 servers表E-R图2.2.1…

最常用的从A到Z的Linux命令,真的很好记,三分钟刷完!

Linux的命令行是一个非常强大的工具。如果你知道如何利用Linux命令,你可以轻松地在Linux系统中执行各种任务。在这篇文章中,我们将介绍从A到Z的Linux命令。 alias alias命令允许你为常用的命令设置一个短的别名,以节省时间和减少敲击。例如&…