如何借 GPT 快速构建应用? 掌握9大通用规则让开发快人一步 前言 自2022年12月以来,越来越多的企业加入开拓大型语言模型的「大军」中来。我们相信,有一些AI应用将引领全球性的产业变革。 众所周知,OpenAI及微软产品(如Microsoft365和MicrosoftPowerPlatform)中的生成式AI能力由Azure国际版提供企业级支持。开发者可以利用最先进的生成式AI构建自己的企业级对话应用程序,以全新的方式解决紧迫的业务问题。例如,用户ODP正在构建一个由AI驱动的聊天机器人,以支持内部流程和人员沟通;Icertis正在构建一个智能助手,助力世界上最大的合同数据库之一,解锁合同全生命周期的洞察。公共部门领域,新加坡的智能国家数字政府办公室,也在通过AI和大型语言模型来为选民和雇员提供更好的服务。 生成式AI代表了人工智能领域的重大进步,将彻底改变我们生活的方方面面。上述客户案例表明,人工智能可以走得更远,通过自然语言生成,让信息获取更容易,且更有针对性,以节省人们有限的时间和精力。具有前瞻性的企业正在利用AzureOpenAI的优势,了解和使用生成式AI技术,探寻当前乃至未来的解决方案。 我们经常听到的一个问题是:“我如何以自己的数据为基础,构建一个GPT的应用?”Azure认知搜索加上AzureOpenAI服务的搭配将是这一问题的完美解决方案。企业现在可以整合Azure的企业级服务、认知搜索在大型知识库中索引、理解和检索数据片段的能力,以及GPT令人印象深刻的以自然语言互动回答问题或多轮对话的能力。 最近Azure在数据与人工智能方面的更新,再一次明确了Azure是构建生成式人工智能应用程序的最佳平台。这些新功能突出了数据、人工智能和云计算基础设施之间关键的互连作用,以提高开发人员的生产力,优化云计算成本。 前言-2 加速数据迁移和现代化-3 构建生成式人工智能应用程序的最佳平台-Azure 1. 加速数据迁移和现代化 在AzureCosmosDBConf2023峰会上,我们宣布了AzureCosmosDBforMongoDBvCore的公开预览,在全托管的Azure服务中,为MongoDB开发人员提供熟悉的架构。现在,MongoDB的开发者可以利用AzureCosmosDB的可扩展性和灵活性,为工作负载提供两种数据库架构选择:用于MongoDB现代化的vCore服务,和用于云原生应用开发的基于RequestUnit(请求单元)按用量来调用的服务。 3 创业公司和成长型企业选择使用AzureCosmosDB,以低成本实现大规模、高性能、安全性和快速部署。例如,以云为先的创业公司ThePostage就使用AzureCosmosDB建立了资产规划平台。尽管受管制行业的准入门槛很高,但这家初创企业通过微软的企业级安全、稳定和数据处理能力,拿到了与金融服务公司的交易订单。这些初创公司的创始人强调,无服务器和自动扩展、免费层级和灵活的模式,助力他们事半功倍。 2. 利用全新数据库提升开发生产力 4 利用全新数据库提升开发生产力-4 2023年3月,我们发布了DataAPIbuilder,使现代开发者能够在极短的时间内创建全栈或后端解决方案。以前,开发人员不得不手动开发所需的后端API,以启动数据库对象(如集合、表、视图或存储过程)的应用。现在,这些对象可以很容易地通过REST或GraphQLAPI自动曝光,提高了开发者的速度。DataAPIbuilder支持所有Azure数据库服务。 我们还宣布了AzureDataStudio的AzurePostgreSQL迁移扩展。由AzureDatabaseMigrationService(数据库迁移服务)提供支持。它帮助客户评估迁移到AzureDatabaseforPostgreSQL-FlexibleServer的准备情况,确定合适的Azure规模,计算总拥有成本(TCO),并为从PostgreSQL的 迁移创建用例。在Azure开源日,我们还分享了新的MicrosoftPowerPlatform集成,在AzureDatabaseforMySQL中更高效地自动化业务流程,获取AzureDatabaseforPostgreSQL中新的可观测性和企业安全功能。 PeapodDigitalLabs(PDL)正在进行现代化改造,以打造一个以云为先的运营环境,将开发、运营和一系列的内部数据库都迁移到了AzureDatabaseforPostgreSQL。通过从单一的数据设置转向使用微软智能数据平台的模块化数据和分析架构,PDL的开发人员正在为美国零售企业更快地建立和扩展解决方案,减少店内员工的服务失误,提高生产力。 3. 宣布计算机 视觉AI的复兴 我们宣布了微软Florencefoundationmodel国际版的公开预览,您可以在AzureCognitiveServiceforVision中获取预览。通过Florence,最先进的计算机视觉功能将视觉数据转化为下游应用。自动生成字幕、智能裁剪、分类和搜索图片等功能可以帮助企业提升内容的可发现性、可访问性和审核性。Reddit已经为每张图片添加了自动字幕。LinkedIn国际版使用VisionServices来提供自动字幕和alt-text描述,助力更多人访问内容并加入对话。由于微软研究院利用数十亿的文本-图像对训练Florence,现在开发者只需用少量的图像就可以高精度地定制模型。 微软最近被评为IDCMarketspaceforVision领导者。我们全面的视觉认知服务(CognitiveServicesforVision)为图像和视频分析、文本识别、面部识别、图像字幕、模型定制等提供了一系列预建和定制的API,开发者可以轻松地将其整合到他们的应用程序中。这些功能在各个行业都很有用。例如,美国冲浪协会通过分析冲浪视频来量化和比较速度、力量和流量等变量,使用计算机视觉来提高冲浪者的表现和安全。H&RBlock使用计算机视觉实现更高效的数据输入和检索,为客户和员工节省了宝贵的时间。Uber使用计算机视觉,根据档案中的照片快速验证司机的身份,以防止欺诈,为司机和乘客提供安心保障。现在,Florence使这些视觉功能更容易在应用程序中部署,且不需要机器学习经验。 宣布计算机视觉AI的复兴-5 6 构建并运行开源的大型AI模型-6 4. 构建并运行开源的大型AI模型 在Azure开源日上,我们宣布即将公开预览Azure机器学习的基础模型。Azure机器学习将提供原生功能,以便客户能够大规模地构建和运营开源基础模型。有了这些新功能,企业将获得策划环境和AzureAI基础设施,而不必手动管理和优化相互关系。Azure机器学习专业人员可以轻松开始他们的数据科学任务,利用Azure机器学习组件和管道,从多个开源存储库(包括HuggingFace)中微调和部署基础模型。 5. 微软面向AI优化的虚拟机预览发布 Azure的专用AI基础设施可以支持OpenAI大模型的成功部署和可扩展性。这些系统需要基础设施能够快速扩展,具有足够的并行处理能力、低延迟和互连的图形处理单元(GPU),以训练和推理复杂的人工智能模型——这是微软多年来一直在努力的事情。微软和我们的合作伙伴继续推进AI基础设施建设,以跟上日益增长的指数级更复杂和更大模型的需求。 我们宣布预览NDH100v5系列虚拟机(VM),为大型AI工作负载和高性能计算GPU提供动力。NDH100v5是我们迄今为止性能最强、目的最明确的AI虚拟机,利用GPU、MellanoxInfiniBand实现闪电般的吞吐量。这意味着依赖大型AI模型的行业,如医疗、制造、娱乐和金融服务,将可以轻松获得足够的计算能力来运行大型AI模型和工作负载,而不需要大规模物理硬件或软件投入。 此外,我们很高兴宣布针对GPU工作负载的AzureConfidential虚拟机。该虚拟机提供了基于硬件的安全增强功能,以更好地保护使用中的GPU数据。我们很高兴为最新的NVIDIAGPU-Hopper带来这一功能。在医疗保健领域,保密计算被用于多方计算场景,以加快新疗法的发现,同时保护个人健康信息。在金融服务和多银行环境中,保密计算被用来分析多个金融机构的金融交易,以检测和防止欺诈。Azure保密计算有助于加速创新,同时提供安全、治理和合规保障,以保护正在使用的和历史敏感数据及代码。 微软在与客户和合作伙伴的合作中感受到,AI时代有着前所未有的巨大机遇。我们将持续利用数据和人工智能的力量,助力各行各业安全和负责任地提高全球生产力,造福更多人。 微软面向AI优化的虚拟机预览发布-7 如何利用GPT开发智能应用? 作为微软CVP、DeputyCTO的SamSchillace基于其在一系列大语言模型(LLM)人工智能系统中的开发经验提出了九项原则,即SchillaceLawsofSemanticAI(语义AI的Schillace法则)。这九大原则可视为SamSchillace在利用GPT技术革新软件开发的前沿实操总结,也许对正在思考如何重构软件工程领域的你也会有所启迪—— #1如果模型可以做到就不要写代码 模型会进化会变得更好,但编译之后代码不会。系统设计的总目标,应该是利用LLM的规划和理解意图的能力来构建具备杠杆效应的应用程序。开发者很容易陷入更加命令式的思维模式,并为程序的某些方面编写代码。要抵制这种诱惑——在您能够让模型可靠地执行某些操作的程度上,随着模型的发展,它将变得更好、更稳健。 如何利用GPT开发智能应用?-8 如何利用GPT开发智能应用?-9 #2用精度换取代码杠杆用交互来优化 沿着上一原则的思索,编写LLM时的正确心态不是“让我们看看我们能让跳舞的熊做什么”,而是尽可能地放大AI系统的能力。例如,可以先构建非常通用的模式,如“从数据库生成报告”或“编写一年的备课目录”,再使用纯文本提示词进行参数化,轻松地产生极具价值和差异化的结果。 #3代码用于语法和过程模型用于语义和意图 9 大模型有很多不同的表述方式,但从根本上说,当模型被要求推理意义和目标时,它们更强大。而当它们被要求执行特定的计算和过程时,则变现较弱。举例而言,高级模型很容易写出一般性的数独求解代码,但很难让它们自己解决数独。每种类型的代码都有不同的优势,因此使用正确类型的代码解决正确类型的问题非常重要。语法和语义之间的边界是这些程序的难点。 #4系统的脆弱程度 取决于其最脆弱的部分 这适用于任何一种代码。我们正在努力实现灵活性和高度杠杆效应,因此谨记别硬编码任何东西。尽可能地在提示词中加入推理和灵活性,并最小化使用命令式代码,以使LLM发挥作用。 #5聪明的问题 才能获取聪明的答案 新兴的LLMAI模型都非常强大,并显得“受过良好教育”。但它们缺乏上下文和主动性。如果您向它们提出简单或开放式问题,您将得到简单或通用的答案。如果您想要更多细节和精细度,问题必须更加智能化——这是“垃圾进,垃圾出”在人工智能时代的回声。 如何利用GPT开发智能应用?-10 11 如何利用GPT开发智能应用?-11 #6不确定性是异常处理 因为我们在用精确度换取代码杠杆,所以当模型对意图不确定时,我们需要依靠与用户的交互来校正。当我们在程序中有一组嵌套的提示词时,并且其中一个提示词在其结果上不确定时(“一个可能的方式是...”),正确的做法是等效于“异常处理”(ExceptionThrow)——将这种不确定性向上传播,直到能够澄清或与用户交互的级别。 #7文本是通用的传输协议 由于LLM善于解析自然语言、意图以及语义,因此文本是在提示词、模块和基于LLM的服务之间传递指令的自然格式。自然语言对于某些用途来说不够精确,可以适当地使用结构化语言,如XML,但总体来说,在提示词之间传递自然语言非常有效,并且对于大多数用途而言,自