ChatGPT-生成式人工智能实践指南第二版-全-

ChatGPT 生成式人工智能实践指南第二版(全)

原文:zh.annas-archive.org/md5/cbab40341a2e11a6176db7dcf2884b55

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

我们正处在一个快速技术变革的时代,其中人工智能AI)不再仅仅是一个工具,而是我们日常生活中的一位积极合作者。在众多 AI 进步中,生成式 AI 已成为一股颠覆性力量,重塑了我们与技术互动、创造内容和推动创新的方式。从生成类似人类的文本和制作令人惊叹的视觉效果,到创作音乐甚至编写代码,生成式 AI 解锁了曾经只属于科幻小说的可能性。

本书是生成式 AI 的全面指南,特别关注 ChatGPT,这是这个不断发展的格局中最有影响力的参与者之一。它旨在为希望了解底层原理、实际应用和企业规模实施的大型语言模型LLMs)的初学者和专业人员提供帮助。

本书分为三个部分:

  • 第一部分,生成式 AI 和 OpenAI 的基础,介绍了生成式 AI 的核心概念、AI 模型的演变以及大型基础模型背后的机制。它还深入探讨了 OpenAI,其模型家族(如 GPT-4、DALL·E 和 Whisper),以及 ChatGPT 的快速采用。

  • 第二部分,ChatGPT 实战,探讨了如何有效地与 ChatGPT 互动,涵盖了提示工程技巧以及跨多个领域的实际应用,包括生产力、软件开发、市场营销、研究和创造力。本节还介绍了 GPTs,这是 AI 定制的下一步,使用户能够构建自己的个性化 AI 助手。

  • 第三部分,OpenAI 企业应用,将重点转向企业规模的应用,讨论了企业如何通过 API 利用 OpenAI 的模型来开发强大的 AI 驱动解决方案。本书以一个前瞻性的序言结束,分析了更广泛的 AI 格局以及未来可以期待的内容。

这本书面向谁

这本书面向那些希望利用生成式 AI 力量的 AI 爱好者、商业专业人士和研究人员。无论你是探索 AI 驱动开发的软件工程师,利用 AI 进行内容创作的市场营销人员,还是制定 AI 采用策略的企业领导者,这本书都提供了你所需要的知识和实用见解。

这本书涵盖的内容

第一章,生成式 AI 简介,让你了解 AI 从传统方法到生成式 AI 的演变,探索 LLMs 的基础,并理解生成式 AI 如何推动文本、图像、音乐和视频的生成。

第二章,OpenAI 和 ChatGPT:超越市场炒作,深入探讨了 OpenAI 的生态系统,探讨了不同的模型家族(GPT-4、DALL·E 和 Whisper),并理解 ChatGPT 的快速崛起及其在日常和职业使用中的能力。

第三章理解提示工程,探讨了制作有效提示的艺术,包括 ReAct 和 思维链CoT)等技术,并展示了结构化提示如何增强 AI 生成的响应。

第四章用 ChatGPT 提升日常生产力,利用 ChatGPT 作为个人生产力助手,展示了如何自动化任务、改进写作、翻译内容、检索快速信息和提高研究效率。

第五章用 ChatGPT 开发未来,探讨了 ChatGPT 如何帮助开发者生成、优化和调试代码,以及翻译编程语言。

第六章用 ChatGPT 掌握营销,揭示了 ChatGPT 如何革命性地改变营销——增强内容创作、优化 SEO、进行 A/B 测试,并通过情感分析提高客户参与度。

第七章用 ChatGPT 重新发明研究,展示了 ChatGPT 如何帮助研究人员构思想法、构建研究、格式化参考文献,并以清晰简洁的方式展示研究结果。

第八章用 ChatGPT 唤醒视觉创造力,探讨了 ChatGPT 的多模态能力,包括 GPT-4 视觉和 DALL-E,实现 AI 驱动的图像生成、视觉问答和增强创意工作流程。

第九章探索 GPTs,介绍了 GPTs 的概念,探讨了基于助手的 AI 工作流程,并展示了如何构建自己的 AI 助手以执行研究、分析和营销等任务。

第十章利用 OpenAI 模型进行企业级应用,深入探讨了 OpenAI 的模型 API,理解了 LLM 的企业应用,并探讨了企业如何负责任地将生成式 AI 集成到其工作流程中。

第十一章结语和最后思考,反思了生成式 AI 的发展趋势,讨论了伦理影响,并展望了 AI 的未来。

附录 包含了一系列利用 OpenAI 和 Python 代码的实战案例,展示了现实世界的应用场景。

为了充分利用这本书

如果你记住以下事项,跟随起来会更容易:

  • 通过实战案例学习:许多章节包含了实际练习和现实世界的应用。尽可能使用 OpenAI 的 API、ChatGPT 和其他工具进行尝试。

  • 尝试不同的提示词:由于提示工程是与生成式 AI 一起工作的关键技能,尝试不同的提示词并观察细微的修改如何影响结果。

  • 探索 API 和开发者工具:如果你是开发者,花些时间探索 OpenAI 的 API 文档,并尝试将 AI 功能集成到自己的应用程序中。

  • 超越基础:这本书提供了一个基础,但 AI 是一个不断发展的领域。通过关注最新的研究和行业趋势来深化你的理解。

这里是一份你需要准备的事项清单:

本书涵盖的软件/硬件 系统要求
Python 3.7.1 或更高版本 Windows、macOS 或 Linux
Streamlit Windows、macOS 或 Linux
LangChain Windows、macOS 或 Linux
OpenAI 模型 API OpenAI 账户
Azure OpenAI 服务(可选) 启用 Azure OpenAI 的 Azure 订阅(可选)

下载示例代码文件

本书代码包托管在 GitHub 上,网址为github.com/PacktPublishing/Practical-GenAI-with-ChatGPT-Second-Edition。我们还有其他来自我们丰富图书和视频目录的代码包,可在github.com/PacktPublishing找到。查看它们!

使用的约定

本书使用了多种文本约定。

代码块设置如下:

{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"} 

粗体:表示新术语、重要单词或屏幕上看到的单词。例如,菜单或对话框中的单词在文本中显示如下。例如:“一如既往,需要一个领域专家(SME)参与审查结果。”

警告或重要注意事项如下所示。

小贴士和技巧如下所示。

联系我们

订阅 AI_Distilled,这是 AI 专业人士、研究人员和创新者的首选通讯简报,请访问packt.link/aWQQB

带有几个方块的二维码 AI 生成的内容可能不正确。

我们始终欢迎读者的反馈。

一般反馈:请发送电子邮件至feedback@packtpub.com,并在邮件主题中提及书籍标题。如果您对本书的任何方面有疑问,请发送电子邮件至questions@packtpub.com

勘误:尽管我们已经尽最大努力确保内容的准确性,但错误仍然可能发生。如果您在这本书中发现了错误,我们将非常感激您向我们报告。请访问www.packtpub.com/submit-errata,点击提交勘误,并填写表格。

盗版:如果您在互联网上发现我们作品的任何非法副本,我们将非常感激您提供位置地址或网站名称。请通过链接至材料的方式与我们联系copyright@packtpub.com

如果您有兴趣成为作者:如果您在某个领域有专业知识,并且您有兴趣撰写或为书籍做出贡献,请访问authors.packtpub.com/

分享您的想法

一旦您阅读了《Practical Generative AI with ChatGPT, Second Edition》这本书,我们很乐意听听您的想法!请点击此处直接访问此书的 Amazon 评论页面并分享您的反馈。

您的评论对我们和科技社区非常重要,并将帮助我们确保我们提供高质量的内容。

下载此书的免费 PDF 副本

感谢您购买此书!

您喜欢在旅途中阅读,但无法随身携带您的印刷书籍吗?

您的电子书购买是否与您选择的设备不兼容?

别担心,现在,每购买一本 Packt 书籍,您都可以免费获得该书的 DRM 免费 PDF 版本。

在任何地方、任何地点、任何设备上阅读。直接从您最喜欢的技术书籍中搜索、复制和粘贴代码到您的应用程序中。

优惠远不止于此,您将获得独家折扣、新闻通讯以及每天收件箱中的优质免费内容。

按照以下简单步骤获取这些好处:

  1. 扫描下面的二维码或访问以下链接:

packt.link/free-ebook/9781836647850

  1. 提交您的购买证明。

  2. 就这样!我们将直接将您的免费 PDF 和其他优惠发送到您的电子邮件。

第一部分

生成式 AI 和 OpenAI 的基础知识

在本书的第一部分中,介绍了生成式 AI 和 GPT 模型的基础知识,包括 OpenAI 的发展简史及其旗舰模型系列——GPT 家族。

本部分首先概述了生成式 AI 的领域,为你提供关于这一 AI 领域的知识基础,包括其历史和最前沿的发展。你还将熟悉生成式 AI 的应用,从文本生成到音乐创作。

然后介绍了将生成式 AI 的力量带给公众的公司:OpenAI。你将熟悉 OpenAI 最受欢迎的发布——ChatGPT——背后的技术,并理解从人工神经网络ANNs)开始的研究之旅,最终导致了大型语言模型LLMs)的诞生。

本部分包含以下章节:

  • 第一章生成式 AI 简介

  • 第二章OpenAI 和 ChatGPT:超越市场炒作

第一章:生成式 AI 简介

你好!欢迎来到 《ChatGPT 的实用生成式 AI》!在这本书中,我们将探索生成式人工智能AI)的迷人世界及其突破性的应用,特别关注 ChatGPT。

生成式 AI 已经改变了我们与机器互动的方式,使计算机能够在没有明确的人类指令的情况下进行创作、预测和学习。自 2022 年 11 月 OpenAI 的 ChatGPT 发布以来,我们在自然语言处理、图像和视频合成等多个领域见证了前所未有的进步。无论你是好奇的新手还是经验丰富的从业者,这本指南都将为你提供所需的知识和技能,以有效地探索生成式 AI 的激动人心领域。那么,让我们深入其中,从我们所处环境的定义开始这本书。

在本章中,我们关注生成式 AI 在各个领域的应用,如图像合成、文本生成和音乐创作,通过具体的例子和最新发展,突出生成式 AI 有潜力通过革命性的方式改变各个行业。了解生成式 AI 当前研究进展,将帮助你理解最近发展的基础和最先进模型。

所有这些,我们将在以下主题中涵盖:

  • 介绍生成式 AI

  • 探索生成式 AI 的领域

  • ChatGPT 发布两年后的主要趋势和创新

  • 生成式 AI 的法律和伦理环境

到本章结束时,你将熟悉生成式 AI 的激动人心世界,其应用,其背后的研究历史,以及可能——并且目前正在产生——对商业产生颠覆性影响的当前发展。

介绍生成式 AI

生成式 AI 是人工智能的一个令人兴奋的分支,专注于创建新的内容,如文本、图像、音乐,甚至视频,这些内容通常与人类制作的内容难以区分。

为了了解其适用范围,让我们将其分解:

  • AI:AI 是一个广泛的领域,它使机器能够模仿类似人类的行为,如决策或解决问题。

  • 机器学习ML):在人工智能领域,机器学习指的是机器从数据中学习模式以进行预测或决策的技术,而不需要明确编程。学习过程是通过称为算法的复杂数学模型实现的。

  • 深度学习DL):机器学习的一个子集,深度学习使用受人类大脑启发的复杂算法来处理大量数据并识别复杂的模式。由于它们的架构——受我们的大脑和神经连接的启发——这些算法被称为人工神经网络。

    定义

    人工神经网络是一种计算机程序,它通过模仿人脑处理信息的方式来学习模式。它不是遵循严格的、一步一步的规则,而是使用相互连接的“节点”(类似于虚拟脑细胞),这些节点共同工作并在时间中调整它们的连接。通过反复审查示例,它逐渐提高在识别图像、理解语音或预测结果等任务上的能力——所有这些都不需要为每一步提供明确的指令。

生成式 AI 源于深度学习(DL),并使用专门的算法根据从现有数据中学到的内容生成全新的东西。例如,一个在数千幅画作上训练的生成式 AI 模型可以创造出融合不同风格或主题的新艺术作品。

下图展示了这些研究领域之间是如何相互关联的:

图片

图 1.1:AI、ML、DL 和生成式 AI 之间的关系

生成式 AI 模型在大量数据上进行训练,然后可以根据用户请求生成新的示例。这里的变革性元素在于,这些请求是以最简单的方式提出的——使用我们的自然语言。这些模型被称为大型语言模型LLMs)。

定义

大型语言模型(LLMs)是一种具有特定架构框架“Transformer”的人工神经网络。它们以数十亿个参数(数量级)为特征,并在数十亿个单词上进行训练。给定训练集,LLMs 能够从用户查询中推断语言模式和意图,并生成自然语言响应。

与大型语言模型(LLMs)进行自然语言交互的可能性具有颠覆性,围绕这一活动诞生了一门全新的科学。这门科学被称为“提示工程”,这个名字来源于“提示”这个词,我们将在第三章中进行介绍。

定义

提示是你提供给生成式 AI 模型的具体文本、问题或描述,以引导它产生你想要的结果——无论是有用的解释、一个创意故事,还是详细的解决方案。你如何措辞提示可以极大地影响 AI 的响应。这种精心设计和完善提示的做法,通常被称为“提示工程”,涉及对不同词汇选择、指令和格式的实验,以提高 AI 输出的质量和准确性。通过学习如何制作有效的提示,你帮助确保 AI 更一致地给出有用、吸引人且符合你目标的结果。

尽管文本理解和生成可能是生成式 AI 最突出的功能之一,但这个领域涵盖了众多领域,我们将在下一部分进行介绍。

生成式 AI 的领域

近年来,生成式人工智能取得了显著进步,并将其应用扩展到艺术、音乐、时尚和建筑等多个领域。在这些领域中,它确实正在改变我们创造、设计和理解周围世界的方式。在其他领域,它正在改进现有流程和操作,使其更加高效。

例如,在制药行业的背景下,生成式人工智能通过快速设计新型治疗分子,正在彻底改变药物发现,从而显著缩短开发周期和成本。通过分析大量的化学和生物信息数据集,生成式人工智能模型可以识别有希望的药物候选物并预测它们在人体内的相互作用。例如,Insilico Medicine 利用生成式人工智能开发了 ISM001-055,这是一种用于治疗特发性肺纤维化的药物候选物,于 2023 年进入 II 期临床试验(Insilico Medicine 的博客:首个 II 期临床试验)。

另一个例子是生成式人工智能如何通过允许创建对玩家动作做出反应的动态和自适应环境,从而革命性地改变游戏开发。通过利用生成式人工智能,开发者可以程序性地生成庞大且不断变化的游戏世界,确保每次游玩都提供独特的体验。这项技术促进了具有适应玩家互动行为的真实非玩家角色(NPCs)的创建,使游戏叙事更加引人入胜。此外,生成式人工智能通过自动化资产创建简化了开发过程,从而减少了生产时间和成本。

因此,开发者可以更多地专注于创造创新的游戏玩法机制和丰富的叙事,最终提供更加个性化和吸引人的游戏体验(生成式人工智能在游戏开发中的应用:创建动态和自适应环境)。

最后,生成式人工智能对广告和视觉资产生成也有重大影响。例如,2023 年 3 月,可口可乐推出了“创造真实魔法”平台(可口可乐邀请全球数字艺术家使用新的 AI 平台创造真实魔法),邀请全球数字艺术家使用其档案中的标志性品牌资产创作原创艺术品。该平台与 OpenAI 和 Bain & Company 合作开发,结合了 GPT-4 和 DALL-E 的能力,使用户能够生成融合可口可乐遗产与现代 AI 技术的独特作品。参与者有机会提交他们的作品,以获得在纽约时代广场和伦敦皮卡迪利广场的可口可乐数字广告牌上展示的机会,这体现了品牌通过尖端技术培养创造力的承诺。这些只是生成式人工智能如何重塑业务流程的几个例子。

现在,生成式 AI 在许多领域的应用也意味着其模型可以处理不同类型的数据,从自然语言到音频或图像。在下一节中,我们将探讨生成式 AI 模型如何处理不同类型的数据和领域。

文本生成

在 AI 中,文本生成的演变是一段从早期的理论概念到今天复杂语言模型的旅程。20 世纪 50 年代标志着人工智能作为一个领域的正式诞生,先驱如艾伦·图灵探索了机器智能。20 世纪 60 年代和 70 年代的早期自然语言处理(NLP)努力导致了 ELIZA 等程序的出现,这些程序通过模式匹配模拟对话。20 世纪 80 年代和 90 年代,统计模型的发展通过概率预测词序列来改进语言建模。在这一时期,机器学习算法的出现进一步提升了文本生成能力。

2017 年,随着 Transformer 架构的引入,发生了重大突破,正如之前所述,这是今天 LLMs 所采用的框架。

这一系列新模型中,以生成式 AI 的景观为特色的独特之处在于——一旦它们被训练——它们可以通过最简单的方式被消费、查询和指令。LLMs 的引入标志着 AI 领域的一个范式转变,因为不需要高级技能就能从中受益。

今天,生成式 AI 最伟大的应用之一——也是我们将在整本书中最多讨论的应用——是其能够在自然语言中生成新内容的能力。确实,生成式 AI 模型可以用于生成不同语言中新的连贯且语法正确的文本,如文章、诗歌和产品描述。它们还可以从文本中提取相关特征,如关键词、主题或完整摘要。

这里是一个使用 GPT-4o 的例子,这是 OpenAI 最新发布的模型之一,并通过 ChatGPT 提供:

计算机屏幕截图,描述自动生成

图 1.2:ChatGPT 以自然语言回应用户查询的示例

正如你所见,该模型不仅能够用解释质子是什么的方式来回答我的问题;它还能根据特定的目标受众调整其风格和术语——在我这个例子中,是一个 5 岁的孩子。这一点非常了不起,因为它为许多以前不可能的超个性化场景铺平了道路。在接下来的章节中,我们将探讨许多这样的例子。

ChatGPT 是本书的重点,在接下来的章节中,你将看到展示这一强大应用功能的示例。

现在,我们将转向图像生成。

图像生成

生成式 AI 在图像合成中最早的也是最著名的例子之一是 I. Goodfellow 等人在 2014 年发表的论文中引入的 生成对抗网络(GAN)架构,Generative Adversarial Networks。GANs 的目的是生成与真实图像难以区分的逼真图像。这种能力有几种有趣的应用,例如生成用于训练计算机视觉模型的合成数据集,生成逼真的产品图像,以及生成用于虚拟现实和增强现实应用的逼真图像。

然后,在 2021 年,OpenAI 在这个领域引入了一个新的生成式 AI 模型 DALL-E。与 GANs 不同,DALL-E 模型旨在从自然语言描述中生成图像,并且可以生成各种图像。这里的主要区别在于,虽然 GANs 通常用于创建或改进逼真的图像,但像 DALL-E 这样的模型非常适合视觉创造力,将任何自然语言描述转化为插图。

DALL-E 在广告、产品设计、时尚等创意产业中具有巨大的潜力,可以创建独特且富有创意的图像。

从其首次发布到撰写本书的时间(2024 年 12 月),DALL-E 的改进非常显著,以下是一些示例。以下是在 DALL-E 生命之初的艺术创作:

图 1.3:DALL-E 使用自然语言提示作为输入生成的图像

现在让我们看看在撰写本书时最新的模型版本 DALL-E3 可以产生什么(在这里,我们将使用由 DALL-E3 驱动的 Microsoft Image Creator,您可以在 https://copilot.microsoft.com/images/create 尝试):

计算机屏幕截图,描述自动生成

图 1.4:DALL-E3 使用自然语言提示作为输入生成的图像

在不到 2 年的时间里看到这个模型的改进水平令人印象深刻。我们只是触及了正在快速发生的巨大改进的表面。

音乐生成

生成式 AI 用于音乐生成的最初方法可以追溯到 1950 年代,该领域的研究是算法作曲,这是一种使用算法生成音乐作品的技术。在 1957 年,Lejaren Hiller 和 Leonard Isaacson 为 String Quartet 创建了 Illiac Suitehttps://www.youtube.com/watch?v=n0njBFLQSk8),这是第一首完全由 AI 作曲的音乐作品。从那时起,生成式 AI 在音乐领域的应用一直是持续研究的主题。

在近年来的发展中,新的架构和框架在公众中变得普遍,例如 Google 在 2016 年引入的 WaveNet 架构,它能够生成高质量的音频样本,以及由 Google 开发的 Magenta 项目,该项目使用 循环神经网络RNNs)和其他机器学习技术来生成音乐和其他艺术形式。

定义

RNNs是一种神经网络,通过循环结构保留先前输入的信息来处理序列数据。这使得它们能够识别随时间变化的模式和依赖关系,因此非常适合语言建模、时间序列预测和语音识别等任务。

2020 年,OpenAI 还宣布了 Jukebox,这是一个神经网络,当提供流派、艺术家和歌词作为输入时,可以生成音乐。

这些以及其他框架成为了许多音乐生成人工智能助手的基石。例如,索尼 CSL 研究开发的 Flow Machines。这个生成式人工智能系统在大量音乐作品数据库上进行了训练,以创作出多种风格的新音乐。法国作曲家本诺·卡雷(Benoît Carré)使用它创作了一张名为《Hello World*》(https://www.helloworldalbum.net/)的专辑,其中包含与多位人类音乐家的合作。

在这里,你可以看到一个完全由 Music Transformer 生成的曲目示例,它是 Magenta 项目中的一个模型:

图 1.5:音乐 Transformer 允许用户聆听由 AI 生成的音乐表演(https://magenta.tensorflow.org/music-transformer)

生成式人工智能在音乐领域的另一个令人惊叹的应用是语音合成。这指的是能够根据文本输入创建音频的人工智能工具,并以知名歌手的声音输出。

例如,如果你一直想知道如果你的歌曲由 Lady Gaga 演唱会是什么样子,那么现在,你可以通过像 FakeYou Text to Speechhttps://fakeyou.com/tts)或 UberDuck.ai(https://uberduck.ai/)这样的工具来实现你的梦想!

图 1.6:fakeyou.com 的文本到语音合成

结果非常令人印象深刻!如果你想找乐子,你还可以尝试你最喜欢的卡通中的声音,比如维丨尼熊。你需要做的只是输入你希望你最喜欢的声音大声唱出的歌曲文本。

让我们更进一步。如果我们能够从头开始生成一首歌,只需让生成式人工智能以自然语言为我们完成这项任务,那会怎么样呢?嗯,我们今天可以无缝地做到这一点,而且不需要任何音乐知识。在当今音乐市场上崛起的生成式人工智能产品中,Suno 就是其中之一,其使命是“[...]构建一个任何人都可以创作出伟大音乐的未来。无论你是淋浴歌手还是排行榜上的艺术家,我们都打破了你们与梦想中的歌曲之间的障碍。无需乐器,只需想象力。从你的心中到音乐。”(来源:https://suno.com/about)。

计算机屏幕截图  自动生成的描述

图 1.7:Suno.com 从自然语言描述中生成的整首歌曲的示例

如您所见,在图片的左侧,我提供了一个非常简短的用自然语言描述的歌曲——这就是我的提示。基于此,模型不仅能够生成歌曲的标题和歌词(在右侧),还能生成音乐!

你能相信它成为了我 2024 年夏天的热门歌曲吗?如果你想创作自己的夏日热门歌曲,你可以在 https://suno.com/create 免费尝试。

视频生成

视频生成领域的生成式 AI 与图像生成领域的发展时间线相似。视频生成领域的一个关键发展是 GANs(生成对抗网络)的发展。得益于它们在生成逼真图像方面的准确性,研究人员开始将这项技术应用于视频生成。基于 GANs 的视频生成的一个最显著的例子是 DeepMind 的 Veo,它可以从单个图像和一系列动作生成高质量的视频。另一个很好的例子是 NVIDIA 的视频到视频合成Vid2Vid)基于 DL(深度学习)的框架,它使用 GANs 从输入视频中合成高质量的视频。

Vid2Vid 系统可以生成时间上一致的视频,这意味着它们在时间上保持平滑和逼真的运动。这项技术可以用于执行各种视频合成任务,例如以下任务:

  • 将视频从一个领域转换为另一个领域(例如,将白天视频转换为夜间视频或草图转换为逼真图像)

  • 修改现有的视频(例如,改变视频中对象的风格或外观)

  • 从静态图像创建新的视频(例如,将一系列静态图像动画化)

2022 年 9 月,Meta 的研究人员宣布Make-A-Videohttps://makeavideo.studio/)的通用版正式发布,这是一个新的 AI 系统,允许用户将他们的自然语言提示转换为视频片段。在这项技术背后,你可以认出许多我们在其他领域提到过的模型——用于提示的语言理解、使用图像生成进行图像和运动生成,以及由 AI 作曲家创作的背景音乐。

现在,我们上面提到的所有内容与最新的文本到视频模型相比都显得黯然失色。以其中一个为例,OpenAI 在 2024 年 2 月宣布了一种名为SORA的文本到视频模型,并发布了一些早期实验:

一位身穿黑色夹克和红色连衣裙的人站在湿漉漉的街道上  自动生成的描述一群长毛象在雪中  自动生成的描述一位身穿宇航服的人  自动生成的描述 一只卡通动物看着蜡烛  自动生成的描述

图 1.8:SORA 从自然语言提示中生成的视频。来源:https://openai.com/index/sora/

我确实鼓励您访问 SORA 网页,看看它创造的精彩视频。在撰写本文时,SORA 尚未公开发布,因为它正在通过 OpenAI 红队进行多项测试。

总体而言,生成式人工智能已经影响了多个领域多年,一些 AI 工具已经持续支持艺术家、组织和普通用户。尽管我们只用了两年时间在生成式人工智能上进行实验和构建应用,但已经有一些巩固的趋势和未来创新需要我们关注。让我们在下一节中探讨它们。

主要趋势和创新

从 2022 年 11 月至今,我们见证了生成式人工智能领域的大量创新。其中许多创新与公开推出的一系列全新模型有关,例如 OpenAI 的 GPT-4o 和 DALL-E3,还有 Google Gemini、Meta Llama 3、Microsoft Phi3 以及其他许多模型。

然而,最引人注目的成就可能在于我们与这些模型互动以及围绕这些模型构建应用的方式。在本节中,我们将探讨三个主要进展,这些进展标志着生成式人工智能应用中最受欢迎的参考架构。

检索增强生成

ChatGPT 以及一般而言的 LLM 的第一个局限性是知识库截止点。LLM 的知识仅限于它们训练的数据集,尽管这可能很全面,但并不更新(事实上,一旦模型训练完成,任何在此之后出现的新数据或信息都不会成为其知识的一部分,因为它们没有包含在原始训练集中)。此外,数据可能缺少对我们或我们的组织可能相关的专有知识库。例如,如果你问 ChatGPT,“我公司的员工医疗保险政策是什么?”模型将无法回答,因为它无法访问这些信息。

为了绕过这一限制,设计了一个新的框架,允许大型语言模型(LLM)在我们提供的定制文档中导航。这个框架被称为检索增强生成RAG)。

RAG 背后的想法是通过添加外部信息源来增强 LLM 的知识,而无需对模型结构进行任何修改。

定义

嵌入是将复杂信息(如单词、句子或图像)转换为数字列表(向量)的一种方式。这使得计算机更容易理解这些单词或句子的含义。如果两段文本具有相似的含义,它们的向量在数值空间中将彼此靠近。换句话说,嵌入让计算机根据内容而不是精确措辞来衡量不同输入的相似程度。

例如,如果两个概念相似,那么它们的向量表示也应该相似。

图片

图 1.9:四个不同单词的向量表示示例

在这个例子中,我们可以看到“Queen”和“King”对应的两个向量之间的数学距离与“Woman”和“Man”之间的差异大致相同。从语义上讲,这是有道理的,因为我们正在谈论类似的关系。一个类似的例子可以应用于国家和首都之间的关系:一旦嵌入到向量空间中,“Italy”和“Rome”之间的距离应该与“France”和“Paris”之间的距离相似,因为它们映射的是相同的关系。

RAG 由三个阶段组成:

  1. 检索:给定用户的查询及其对应的数值表示,检索出与用户查询向量最相似的文档片段(对应于与用户查询向量最近的向量),并将其用作 LLM 的基础上下文。

文本框的特写  自动生成的描述

图 1.10:从不同文档中检索三个不同片段的示例,因为它们由最接近用户查询的向量表示

  1. 增强:通过额外的指令、规则、安全护栏以及类似提示工程技术的典型做法,检索到的上下文得到丰富(我们将在第三章中介绍提示工程的主题)。

图 1.11:向检索到的文档片段添加更多上下文的示例

  1. 生成:基于增强的上下文,LLM 生成对用户查询的响应。

计算机屏幕截图  自动生成的描述

图 1.12:使用增强上下文作为系统消息的示例,以供模型生成最终答案

RAG 结合了生成模型和信息检索系统的优势,以增强生成内容的质和相关性。传统的生成模型完全依赖于其训练数据来生成响应,这有时会导致过时或不相关的信息。RAG 通过在生成过程中整合外部知识库来解决这一局限性。

多模态

在本章的早期,我们探讨了生成式 AI 的各个领域,从文本到图像,从视频到音乐。通常,大型基础模型倾向于特定于领域,正如我们在语言理解和生成案例中看到的 LLMs,或者在图像生成案例中的 DALL-E3。

然而,近年来生成式 AI 的进步使得大型多模态模型(LMMs)的开发成为可能,这些模型可以处理和生成不同类型的数据,如文本、图像、音频和视频。

LMMs 与标准LLMs 共享泛化和适应典型大型基础模型的能力。然而,LMMs 能够处理多样化的数据,其理念是模仿人类与周围生态系统互动的方式——也就是说,通过我们所有的感官。

多模态模型的一个很好的例子是 OpenAI 的 GPT-4o,它能够通过文本、图像和音频与用户进行交互。以下是一个例子:

计算机屏幕截图,描述由系统自动生成

图 1.13:向 ChatGPT-4o 提供图片并要求它命名建筑物的示例

如你所见,该模型能够分析图像并对它进行推理。

现在我们来要求模型生成一幅插图:

一幅黑白的高层建筑素描,描述由系统自动生成

图 1.14:ChatGPT-4o 根据之前提供的图片生成插图的示例

LLM 与其他模型的不同之处在于它们保留高级推理能力,这使得它们特别适合在多样化的数据环境中处理复杂的推理任务,而传统的 AI 模型则不然。以传统的计算机视觉模型为例,它们是针对特定任务的,它们不会对图像进行推理,而是执行诸如检测对象或从图像中提取文本等任务。另一方面,LMMs 可以使用与 LLM 相同的推理能力,但它们可以将这些能力应用于除文本以外的数据。

让我们考虑这个最后的例子(只显示响应的前几行):

带有文本的填字游戏,描述由系统自动生成

图 1.15:ChatGPT 4o 解决填字游戏的示例

如你所见,该模型能够:

  • 阅读并理解图像所呈现的场景

  • 对其进行推理并解决它所提供的复杂任务,即解决谜题

如你所想,这为各个行业的应用开辟了一片天地,我们将在接下来的章节中看到一些具体的例子。

AI 代理

在前面的章节中,我们揭示了 LLM 在生成内容方面的强大能力。然而,它们缺少一种能力,那就是采取行动并与周围生态系统进行交互,这种交互超越了单个用户。例如,如果我们想让我们的 LLM 不仅能够生成一篇精彩的 LinkedIn 帖子,还能在我们页面上发布它呢?

AI 代理作为克服这一限制的关键角色出现。但它们究竟是什么呢?代理可以被看作是受 LLM 驱动的 AI 系统,在给定用户查询的情况下,能够与周围生态系统进行交互,直到我们允许它们做到的程度。生态系统的边界由我们提供给代理的工具(或插件)界定(在我们之前的例子中,我们可能给代理提供一个 LinkedIn 插件,以便它能够发布生成的内容)。

代理由以下成分构成:

  • 一个 LLM,作为 AI 系统的推理引擎。

  • 一个系统消息,指示代理以某种方式行为和思考。例如,你可以设计一个代理作为学生的教学助手,以下是一个系统消息:“你是一名教学助手。面对学生的查询,永远不要提供最终答案,而是提供一些提示来引导他们。”

  • 一组代理可以利用的工具来与周围生态系统互动。

AI 代理是“LLM 作为应用程序推理引擎”这一含义的完美体现。实际上,代理的美丽之处在于它们可以选择最佳工具来完成用户的请求。例如,假设我们有一个 AI 代理来生成 LinkedIn 内容,我们向它提供两个工具:一个 LinkedIn 插件和一个网络搜索插件(每个都对其功能有正确的描述)。让我们探索代理在三个不同场景下的行为:

  • 生成一个关于一只小狗在山间漫步的故事:代理将生成故事而不使用插件。

  • 生成一篇关于米兰当前天气的故事:代理将调用网络搜索插件以获取米兰的当前天气。

  • 生成一篇关于米兰当前天气的 LinkedIn 帖子并发布在我的个人资料上:代理将调用网络搜索插件以获取米兰的当前天气,并使用 LinkedIn 插件在我的个人资料上发布。

指令和一组插件的组合使 AI 代理极其灵活,你可以创建高度专业化的实体来应对特定场景。

这还不是全部。

如果你可以创建自己的代理团队,相互交谈并合作,为什么只有一个代理呢?想象一下多个代理,每个代理都有特定的专业知识和目标,通过沟通和互动来完成一项任务。这就是多代理应用程序的样子,在过去的几个月里,这种模式开始显示出非常有趣的结果。

让我们考虑以下例子。我们想要生成一个关于气候变化的电梯演讲。为此,我们需要最新的信息(最新趋势和研究、未来展望等),以及基于学术论文的扎实研究。此外,我们需要简洁而尖锐、有效,在非常短的演讲中传达所有关键信息。

现在,我们可以要求一个代理完成所有这些工作,向它提供所有必需的工具和长指令来完成这项任务。然而,如果任务变得非常复杂,单个代理可能不是最佳方法,因为它可能导致不准确的结果。相反,让我们采用多代理方法,创建一个由以下 AI 专业人士组成的团队:

  • 一个能够搜索有关气候变化最新新闻的市场分析师:这将是一个具有网络搜索插件和特定搜索新闻指令的代理。

  • 一个能够轻松浏览关于气候变化学术研究论文的专家研究者:这将是一个带有 Arxiv(一个精选的研究共享平台)插件和如何检索相关信息的具体指令的代理。

  • 一个能够轻松将所有信息整合到一个电梯演讲中的公共演讲专家:这将是一个带有如何进行完美演讲的指令的代理。

  • 一个将审查提案并对公共演讲专家提出一些修改意见的评论家(如果需要的话):这将是一个带有如何通过识别陷阱和改进区域来审查和改进提案的指令的代理。

因此,当用户要求代理生成关于当前气候变化问题的电梯演讲时,所有代理都可以开始工作。

有许多框架可以帮助开发者处理多代理应用(包括 AutoGen、LangGraph 和 CrewAI),尤其是在我们希望代理遵循的流程方面。例如,我们可能希望强制执行特定的迭代次数;或者所有代理至少被调用一次;甚至可能涉及我们,作为用户,在每次迭代中提供进一步反馈以纳入即将到来的迭代。

在撰写本文时,多代理框架显示出有希望的发展,这是 LLMs 背后卓越推理能力的缩影,以及它们如何解锁新的问题解决方式。

小型语言模型

LLMs(大型语言模型)不出所料地很大。这意味着包含 LLMs 的ANN(人工神经网络)架构由数亿个参数组成。通常,大量的参数与性能更好的模型相关联,因为它能够处理更多的信息和示例,因此当用户提问时能够识别和推断出更多的模式。然而,大量的参数通常伴随着高昂的训练和托管成本,因为需要强大的 AI 基础设施。此外,这些模型的能耗引发了关于 LLM 训练的环境影响及其长期可持续性的严重问题。

这些较小的模型被称为小型语言模型SLMs),除了在基础设施方面更轻、需求更低之外,它们还表现出令人惊讶的高性能。

现在,我们可能会认为 GPT-3.5-turbo 已经过时;然而,我们必须记住,它一年前曾是市场上最强大的模型,看到 7B 模型能够取得更好的结果是非常令人瞩目的。

SLMs(小型语言模型)绝对是一个值得关注的科研领域,尤其是在我们可能希望本地部署模型或通过微调对其进行定制(我们将在下一章介绍微调)的场景中。

生成式 AI 的法律和伦理格局

在开发和部署生成式 AI 系统时,必须仔细处理广泛的法律法规和伦理考量,以确保其负责任和可持续的使用。这些考量不仅限于合规性,还进入了一个道德责任、公众信任和技术问责相交的领域。

版权和知识产权问题

LLMs 通常在从互联网上抓取的大量语料库上进行训练,包括可能受版权保护的内容。因此,存在将受版权保护的文本、音乐、图像或视频片段直接嵌入 AI 输出的实际风险,当这些输出被共享或商业化时,可能会无意中产生侵权行为。

这种具体风险在 2024 年 11 月也加剧了,当时包括《环球邮报》和 CBC/Radio-Canada 在内的主要加拿大新闻机构(https://www.reuters.com/sustainability/boards-policy-regulation/major-canadian-news-media-companies-launch-legal-action-against-openai-2024-11-29/)对 OpenAI 提起了诉讼。他们声称 OpenAI 未经授权使用他们的版权内容来训练其 AI 模型,寻求赔偿和禁止进一步未经授权使用的禁令。

错误信息、幻觉和虚假新闻的风险

当前生成式 AI 模型的一个已知局限性是它们倾向于产生幻觉——产生听起来完全合理但实际上错误的信息。这可能导致无意中传播错误信息,尤其是在消费者、记者或公众官员将 AI 生成内容视为事实时。

例如,在 2024 年 12 月,虚假信息研究员杰夫·汉考克(https://www.theverge.com/2024/12/4/24313132/jeff-hancock-minnesota-deepfake-law-ai-hallucinations-citation)承认,他在准备法庭文件时,ChatGPT 捏造了细节,导致提交了不存在的引用。这一事件强调了 AI 生成内容在关键文件中引入不准确性的风险。

持续接触不可靠的 AI 输出可能导致对所有数字内容的广泛怀疑,损害合法来源的信誉,并减少对专家评论和信誉良好的新闻的信任。因此,组织必须投资于事实核查流程、人工介入验证和透明的模型评估方法。

深度伪造和欺骗性操纵

深度伪造技术,作为生成式 AI 的一个高级子集,能够合成高度逼真的图像、视频和语音录音,可以被用来模仿公众人物、编造丑闻事件或制作操纵性的政治宣传。

定义

深度伪造是一种使用深度学习算法创建的人工媒体,其中一个人的肖像、声音或动作被数字化操纵以创建逼真但虚假的内容。通常,深度伪造涉及修改视频或图像,使其看起来像某人说了或做了他们实际上从未做过的事情。

最近的一个例子发生在 2023 年,当时一家跨国公司香港分行的财务职员在骗子使用深度伪造音频模仿高级管理人员后,被骗转款超过 2500 万美元,指示未经授权的资金转账(https://www.secureworld.io/industry-news/hong-kong-deepfake-cybercrime)。

受深度伪造攻击的公司、政府和个人可能会遭受严重的声誉损害,导致公众尴尬、经济损失或信任度降低。建立检测工具、实施数字水印技术以及建立惩罚恶意深度伪造创作者的法律框架是减轻这些风险的关键步骤。

偏见、歧视和社会伤害

生成式 AI 模型可能会无意中复制和放大其训练数据中存在的现有社会偏见。例如,模型可能会持续描绘某些职业为男性主导,或以刻板印象描绘特定的文化群体。

这些有偏见的输出可能会影响招聘决策、产品推荐和政策制定过程,最终对代表性不足的群体造成不利。

在这方面,2023 年的一项研究,文本到图像生成中的人口统计学刻板印象https://hai.stanford.edu/sites/default/files/2023-11/Demographic-Stereotypes.pdf),强调了文本到图像生成 AI 模型往往编码了大量的偏见和刻板印象。例如,请求专业人士图像的提示通常会导致与传统性别角色一致的描绘,如男性医生和女性护士,从而强化了过时和歧视性的观点。

另一项研究,生成式人工智能的社会危险:综述和指南https://dl.acm.org/doi/fullHtml/10.1145/3657054.3664243),调查了这些技术可能加剧现有不平等的程度。例如,AI 生成的内容可能会通过代表性不足或负面描绘某些社区来边缘化它们,导致社会伤害和强化系统性歧视。

组织必须承诺进行全面偏见审计,定期更新训练数据集,实施公平约束,并让多元化的利益相关者参与模型开发和评估。

这些只是与生成式 AI 相关的潜在风险和问题的几个例子。此外,重要的是要认识到,类似的法律和伦理影响并不仅限于生成式 AI,而是适用于更广泛的 AI 领域,其应用始终引发一些担忧(例如,在人脸识别方面的隐私考虑)。

然而,生成式 AI 工具的极端快速发展和——更重要的是——采用,凸显了组织、政策制定者和开发者合作制定稳健治理框架的紧迫需求,以应对生成式 AI 带来的独特挑战。这包括采用透明数据来源的标准,获取版权内容的明确许可,实施严格的验证程序以对抗虚假信息,并与监管机构紧密合作建立法律界限。这也要求 AI 从业者持续保持警惕,更新模型,改进算法,并与跨学科专家合作,以确保生成式 AI 作为创新和积极社会影响的动力,而不是伤害或道德妥协的来源。

摘要

在本章中,我们探索了生成式 AI 的激动人心的世界及其各种应用领域,包括图像生成、文本生成、音乐生成和视频生成。我们学习了由 OpenAI 训练的生成式 AI 模型,如 ChatGPT 和 DALL-E,如何使用深度学习技术在大数据集中学习模式,并生成既新颖又连贯的新内容。我们还讨论了生成式 AI 的历史、起源以及当前的研究状况。

本章的目标是提供生成式 AI 基础知识的坚实基础,并激发您进一步探索这个迷人的领域。

在下一章中,我们将重点关注市场上最具有前景的技术之一,ChatGPT。我们将探讨其背后的研究和由 OpenAI 的开发,其模型的架构,以及截至今天它可以解决的主要用例。

参考文献

加入我们的 Discord 和 Reddit 社区

对本书有任何疑问或想参与关于生成式 AI 和 LLMs 的讨论?加入我们的 Discord 服务器packt.link/I1tSU和 Reddit 频道packt.link/jwAmA,以连接、分享和与志同道合的爱好者合作。

第二章:OpenAI 和 ChatGPT:超越市场炒作

本章概述了 OpenAI 及其最显著的发展——ChatGPT,突出了其历史、技术和能力。

我们还将探讨 OpenAI 在生成 AI 领域的成就,超越 ChatGPT——从语音到文本模型到图像生成,这将为你提供对一些最先进的生成 AI 技术现状的更广泛认识。

更具体地说,我们将涵盖以下主题:

  • 什么是 OpenAI?

  • OpenAI 模型家族概述

  • 开始使用 ChatGPT

到本章结束时,你将拥有关于 ChatGPT 及其使用方法以及其技术能力的基础知识,以及 OpenAI 模型家族的深入理解。

技术要求

要测试本章中的示例,你需要一个 OpenAI 账户。

如果你需要任何帮助,可以参考“创建 OpenAI 账户”部分。

什么是 OpenAI?

OpenAI 是一个成立于 2015 年的研究组织,由埃隆·马斯克、山姆·奥特曼、格雷格·布罗克曼、伊利亚·苏茨克维、沃伊切赫·扎伦巴和约翰·舒尔曼共同创立。正如 OpenAI 网页上所述,其使命是“确保通用人工智能(AGI)[...]造福全人类” (openai.com/index/planning-for-agi-and-beyond/)。近年来,OpenAI 已形成战略伙伴关系,以进一步推进其研究和部署工作。值得注意的是,微软对 OpenAI 进行了大量投资,为支持高级 AI 技术的发展提供了资源。OpenAI 继续在 AI 研究中处于领先地位,努力在创新与道德考量之间取得平衡,以确保 AI 技术的发展与社会的更广泛利益相一致。

通用人工智能AGI)是一种概念性的 AI 类型,能够以与人类智能相当的专业水平理解和利用跨不同任务的知识。与针对特定目的定制的窄 AI 系统不同,AGI 将展现出类似人类的认知适应性,使其能够完成人类能够完成的任何智力任务。

OpenAI 的起源

自成立以来,OpenAI 一直专注于深度强化学习DRL),这是机器学习ML)的一个子集,它将强化学习RL)与深度神经网络DNNs)相结合。

强化学习(RL)是一种机器学习(ML)范式,其中智能体通过与环境的交互来学习做出决策。智能体根据其行为获得反馈,形式为奖励或惩罚,并旨在最大化累积奖励。

深度强化学习(Deep RL)是强化学习(RL)和深度神经网络(DNNs)或深度神经网络(the latter is a type of artificial neural network with multiple layers between the input and output) 的结合。

在深度强化学习(DRL)中,深度神经网络(DNNs)被用来近似价值函数、策略或环境模型,使智能体能够处理复杂、高维的状态和动作空间。通过结合强化学习和 DNNs 的优势,DRL 已成功应用于诸如玩电子游戏、机器人控制和自动驾驶等任务,在这些任务中,传统方法在可扩展性和特征提取方面存在困难。

OpenAI 在该领域的首次贡献可以追溯到 2016 年,当时公司发布了 OpenAI Gym,这是一个用于研究人员开发和测试强化学习算法的工具包。

Gym(现称为 Gymnasium)的主要目标是标准化在人工智能研究环境中定义的方法,使得发表的研究更容易重现,并为用户提供一个简单的界面来与这些环境交互。OpenAI 在该领域持续研究和贡献,但其最显著的成就与生成模型——生成预训练 TransformerGPTs)相关。

GPT是一种高级人工智能模型,旨在处理和生成类似人类的文本。它通过在训练阶段从大量书面语言数据中学习模式、结构和上下文来运行。这种训练使 GPT 能够预测和生成连贯且上下文相关的文本,允许它以高度自然的方式理解和回应提示。

“预训练”这一方面指的是它在广泛的语言数据上的初始训练,使其具备对语法、句法、语义和不同沟通风格的普遍理解。而“生成”能力意味着它可以创建与给定输入相符合的新文本,而不仅仅是分析或分类数据。

“Transformer”这一方面指的是一种特定的架构设计,它包含一个高级机制——称为“注意力”——以高效地理解单词和短语之间的关系,使其能够以高精度处理复杂的语言任务。

ChatGPT 的出现

OpenAI 在其论文《通过生成预训练改进语言理解》中介绍了他们的第一个 GPT 模型,并将其命名为GPT-1,旨在证明语言模型可以在大型文本语料库上预训练,然后针对特定任务进行微调,从而在各种自然语言处理NLP)应用中实现显著的改进。

微调是将预训练模型适应新任务的过程。在微调过程中,预训练模型的参数被调整,要么通过调整现有参数,要么通过添加新参数,以便它们适合新任务的数据。这是通过在针对新任务的小型标记数据集上训练模型来完成的。微调背后的关键思想是利用从预训练模型中学到的知识,并将其微调到新任务,而不是从头开始训练模型。

之后不久,OpenAI 研究人员在 2019 年发布了其继任者 GPT-2。这个版本的 GPT 在一个称为 WebText 的语料库上进行了训练,当时包含略超过 800 万份文档,总共有 40 GB 的文本,这些文本来自 Reddit 提交中至少获得 3 个赞同的 URL。它有 12 亿个参数——是其前者的十倍。

在人工神经网络(包括 GPTs)的背景下,参数指的是模型在训练过程中学习和调整的内部变量。这些参数至关重要,因为它们定义了输入数据如何通过网络层进行处理以产生所需的输出。

然后,在 2020 年,OpenAI 首先宣布然后发布了 GPT-3,该模型拥有 1750 亿个参数(大约是地球人口的 21 倍),显著提高了 GPT-2 的基准测试结果。正是在 GPT-3 模型——更确切地说,是其经过微调的版本 GPT-3.5——的帮助下,我们在 2022 年 11 月进入了 ChatGPT 时代(在首次发布时,ChatGPT 由 GPT-3.5 驱动)。

从那时起直到今天,OpenAI 已经发布了其 GPT 系列的许多新版本:GPT-4、GPT-4 Turbo、GPT-4 Vision(第一个多模态模型)和 GPT-4o,其中“o”代表“Omni”,指的是其多模态能力。在撰写本书时(2025 年 1 月),最新的 OpenAI 聊天模型是 o1 家族的一部分,它们具有先进的推理能力,使其适合复杂任务或数学问题。

从下一节开始,在接下来的章节中,我们将主要关注 ChatGPT 中可用的 OpenAI 聊天模型,以及一些图像生成的示例。

OpenAI 模型系列的概述

在过去几年中,OpenAI 在模型开发领域取得了巨大进步,以极高的速度发布了新的模型版本。在本节中,我们将按领域查看主要模型:

  • 语言模型:OpenAI 的 GPTs 是高级语言模型,旨在根据给定的提示生成文本。它们功能多样,可用于各种 NLP 任务,如文本补全、翻译、摘要和编码。这是 OpenAI 展示卓越性能的领域,得益于其旗舰模型系列:GPTs。自 2022 年 11 月 ChatGPT 发布以来,OpenAI 已发布了以下模型:

    • GPT-3.5-turbo,ChatGPT 第一版背后的模型

    • GPT-4(第一个能够处理图像的模型)和 GPT-4 Turbo(针对聊天和助手进行了优化)

    • GPT-4o 和 GPT-4o mini(在训练的参数数量上有所不同),其中字母“o”代表“Omni”,意味着模型可以接收各种数据作为输入(文本、图像、声音)

    • o1 和 o1 mini(在参数数量上有所不同),这是一个代表重大进步的模型系列,特别是在增强推理能力方面

    • 基于 o1 系列的前一代能力(o3 系列),该系列在基准测试中表现出色(beebom.com/openai-unveils-o3-model-cracks-arc-agi-benchmark/),并且对未来应用前景非常乐观。

  • 图像模型:OpenAI 的图像模型,如 DALL-E,旨在根据文字描述生成和操作图像。DALL-E 模型可以创建高度详细和富有想象力的视觉图像,使用户能够创作独特的艺术作品、设计概念等。例如,DALL-E 3(撰写本文时的最新版本)能够根据详细的提示创建复杂和富有创意的图像,推动人工智能在视觉艺术领域的边界。这些模型在创意产业、数字营销以及任何从高质量、定制视觉中受益的领域特别有用(我们将在 第八章 中详细介绍 DALL-E)。

  • 文本到语音和语音到文本模型:OpenAI 的 Whisper 是一个 语音到文本STT)系统。它于 2022 年 9 月 21 日推出。该系统在 68 万小时的多种语言和多任务数据上进行了训练,擅长跨语言转录语音,并能将非英语语音翻译成英语。除此之外,OpenAI 还开发了 文本到语音TTS)模型,将书面文字转换为口语,提供清晰、富有表现力和自然的声音输出,使其适用于广泛的用途,从客户服务机器人到教育工具。

    • STT 技术将口语转换为书面文字。它常用于转录服务、语音助手和辅助工具等应用中。例如,将口述的词语转换为电脑上的文字或转录会议录音。

    • TTS 技术将书面文字转换为口语。它广泛应用于辅助工具(例如,为视障用户设计的屏幕阅读器)、交互式语音应答系统和内容朗读。例如,数字助手大声阅读消息或书籍。

这些模型有助于创建语音助手、提高视障用户的可访问性以及生成自动公告。

  • 文本到视频模型:随着 Sora 的发布,OpenAI 展示了其尖端文本到视频模型,能够根据文字描述生成逼真和富有想象力的视频场景。通过采用 DALL-E 的技术和集成变压器,Sora 可以创建高达一分钟的逼真视频。它在保持 3D 一致性、物体持久性和模拟视频中的交互方面表现出色。尽管仍面临准确模拟复杂物理学的挑战,但 Sora 在创意产业中具有重大潜力,为视频制作和叙事提供了新的可能性。

  • 嵌入模型:OpenAI 的嵌入模型将文本转换为称为向量(或嵌入)的数值表示,这些向量捕捉语义意义并在多维向量空间中进行投影。

第一章中,我们探讨了嵌入在检索增强生成RAG)场景中的作用,以及更广泛地,这种模式是如何重塑知识挖掘的。

OpenAI 的嵌入模型text-embedding-ada-002text-embedding-3-large通过创建文本的密集向量表示,在文本相似度、文本搜索和代码搜索等任务中提供最先进的性能。这些嵌入允许对大型文本数据集进行高效和有效的比较,提高搜索的准确性和相关性。

  • 审查模型:OpenAI 的审查模型旨在检测和过滤掉文本中的不适当、有害或不安全的内容。这些模型通过识别可能冒犯性或有害的语言,对于维护安全和尊重的在线环境至关重要。最新发布的审查模型,于 2024 年 9 月发布,名为omni-moderation-latest,建立在 GPT-4o 之上,并且能够过滤文本和图像。它帮助开发者和公司执行社区指南,防止有害内容的传播,从而促进更安全的数字互动。

其中一些模型——特别是语言、图像生成和 TTS/STT——可以在 ChatGPT 中使用,这可能是 OpenAI 作为消费应用发布的最受欢迎的产品。我们将在下一节中对其进行介绍。

开始使用 ChatGPT

2022 年 11 月,OpenAI 向公众发布了其对话式人工智能系统 ChatGPT 的网页预览。这在主题专家、组织和普通用户中引发了巨大的炒作——以至于在仅仅 5 天后,该服务就达到了 100 万用户!

在撰写关于 ChatGPT 的文章之前,我将先让它自我介绍,使用的是发布后几天拍摄的快照:

图 2.1:ChatGPT 于 2022 年 11 月自我介绍

需要注意的是,ChatGPT 本身不是一个大型语言模型LLM),而是一个用户可以通过它来与底层模型交互的应用程序。实际上,ChatGPT 的核心是一个由人工智能驱动的聊天机器人,旨在模拟类似人类的对话。它支持各种任务,包括写作、编码以及提供关于各种主题的信息。由 OpenAI 开发的尖端语言模型提供支持,ChatGPT 通过 GPT-3、GPT-4、GPT-4o 和 o1 等迭代不断改进其理解和生成自然语言的能力。

除了集成最新的顶级模型外,ChatGPT 还通过整合外部工具(如网络搜索)并成为实际的开发者平台来构建自己的“GPTs”,但所有这些主题我们将在接下来的章节中详细讨论。

如前所述,ChatGPT 的第一个版本是在一个高级语言模型之上构建的——一个针对处理对话进行了优化的 GPT-3 的精调版本。这个精调版本被称为 GPT-3.5 Turbo。优化过程涉及强化学习与人类反馈RLHF)(arxiv.org/pdf/2009.01325),这是一种利用人类输入来训练模型以展示期望的对话行为的技巧。

我们可以将 RLHF 定义为一种机器学习方法,其中算法通过接收来自人类的反馈来学习执行任务。该算法被训练做出决策,以最大化人类提供的奖励信号,并且人类提供额外的反馈以改进算法的性能。当任务过于复杂而无法使用传统编程或当期望的结果难以提前指定时,这种方法很有用。

这里的相关区别在于,ChatGPT 是在人类参与下进行训练的,以便与用户保持一致。通过结合 RLHF,ChatGPT 被设计成能够以自然和吸引人的方式更好地理解和回应人类语言。

现在我们来看看如何开始使用 ChatGPT。

创建 OpenAI 账户

ChatGPT 是一个任何人都可以使用的免费应用程序;然而,自 2023 年 2 月起,OpenAI 宣布了一系列付费计划,为订阅者提供了包括访问最新模型、最快响应时间、一套优秀的插件以及可能在 GPTs 游乐场中创建自己的助手等优势。您可以在openai.com/chatgpt/pricing/找到价格概览。在接下来的章节中,我将使用 Plus 版本,但大多数动手示例也可以使用免费版本复制。

无论您选择哪个版本,为了跟上接下来的部分,您需要一个 OpenAI 账户。要在 OpenAI 上创建账户,请按照以下步骤操作:

  1. 打开网页浏览器并访问 OpenAI 网站platform.openai.com/signup/

  2. 提供您的电子邮件地址并创建一个密码。

  3. 一旦您的账户创建完成,您就可以开始使用 ChatGPT 的免费版本。

ChatGPT Plus 导览

让我们快速浏览一下撰写本文时的 ChatGPT 用户界面:

图 2.2:chatgpt.com 的 ChatGPT 着陆页

让我们探索图 2.2中的每个编号部分:

  1. 您可以选择 ChatGPT 背后使用的模型。在我的情况下,我设置了 GPT-4o,这个模型只有付费订阅才能获得。这是我们将在整本书中使用的模型。

  2. 提供了一系列预构建的提示,以帮助您熟悉该应用程序。

  3. 文本框是您可以输入提示的地方。请注意,在右上角有一个小声音图标:它表示您可以使用语音而不是键入与模型进行交互的可能性。

  4. 在左侧侧边栏中,您可以查看与 ChatGPT 之前的聊天记录(我的已被覆盖)。这是一个极其有用的工具,因为在每次聊天中,通过您与模型的各种互动回合,您创建了一个 ChatGPT 所了解的上下文。这意味着,如果您想继续之前开始的对话,您可以打开相关的聊天并开始与模型交谈,而无需再次描述整个场景。

  5. ChatGPT Plus 最近增加的一个不错的新功能是拥有项目,这提供了一种简化的方式来组织个人使用的文件和聊天,使其更容易管理跨越多个对话的任务。通过将聊天、文件和自定义指令都放在一个地方,项目有助于保持秩序和专注。

  6. ChatGPT Plus 提供了创建 GPT 的可能性,这些是您可以针对特定功能定制的个性化助手。您可以选择保持您的 GPT 私密或将其发布在 GPTs 商店中,任何人都可以使用并对其进行评分。我们将在 第九章 中介绍 GPTs。

  7. 最后,ChatGPT 的 Plus 版本现在提供了一套工具,您可以在与模型交互时使用。

在撰写本书时(2025 年 1 月),提供的工具包括:

  • 附加文件 以分析用户上传的自定义文件

  • 网络搜索 将 ChatGPT 的模型知识与来自网络的最新信息相结合

  • DALL-E 根据自然语言查询创建图像

  • 画布功能提供并排的工作空间,使用户能够与 ChatGPT 一起协作起草、编辑和接收写作和编码项目的反馈。

在整本书中,我们将利用 ChatGPT Plus 来展示最新模型和功能的能力;尽管如此,我们将涵盖的大多数示例也可以使用 ChatGPT 的免费版本实现(目前由 GPT-3.5 Turbo 驱动)。

ChatGPT 的架构和训练方法的持续发展和改进有望进一步推动语言处理领域的边界。

ChatGPT 的可能性艺术

第四章 开始,我们将涵盖许多 ChatGPT 如何用于个人生产力和特定领域任务(如研究、营销和编码)的实际示例。然而,在到达那里之前,让我们先看看 ChatGPT 的可能性艺术,从一个 o1 模型的例子开始。o1 模型的独特特征是它们能够揭示它们的“思考”过程。当您提交查询时,会出现一个“思考”指示器,通过点击它,您可以查看模型到达其响应所采取的步骤。这对于深入了解模型如何处理复杂查询非常有帮助。

图像理解和生成

ChatGPT 中可用的最新模型是多模态的,这意味着它们能够接收多样化的数据(文本和图像)。

在生成式 AI 的背景下,多模态指的是 AI 系统处理、理解和生成各种形式数据或模态的能力,包括文本、图像、音频和视频。这种功能使得 AI 能够整合和解释多样化的输入,从而产生更全面和上下文相关的输出。

让我们考虑以下例子:

图 2.3:图像理解和文本生成

在这种情况下,我要求 ChatGPT 描述提供的图片,该模型能够生成一个详细且科学的解释,说明了两种液体不混合在一起的原因。这表明了模型对图片的深入理解,以及物理学的一般知识。

基于这次初步分析,我们也可以让它评估额外的场景:

图 2.4:深入评估

这些只是 ChatGPT 当前能力的一小部分例子。再次强调,ChatGPT 可以与不同的模型一起使用,其中一些模型并不展示所有可用功能(例如,GPT-3.5 不接收图像作为输入)。选择使用哪种模型高度取决于您希望 ChatGPT 解决的问题类型。

数学思维

最初,LLMs 在解决数学任务时遇到了困难。然而,OpenAI 在 2024 年 9 月推出的 o1 模型系列,与它的前辈 GPT-4o 相比,在数学推理方面取得了显著的进步。例如,o1 模型(尽管仍在预览中)在国际数学奥林匹克竞赛(IMO)的资格考试中取得了 83%的成功率(openai.com/index/introducing-openai-o1-preview/),这比 GPT-4o 的 13%有大幅提升。

让我们考虑以下例子:

图 2.5:ChatGPT 的数学能力

如您所见,该模型不仅能够阅读和理解提供的图像,而且还能通过较小的推理步骤正确地解决问题。

分析能力

在之前的例子中,我们向模型提供了一个图像,但我们还可以进一步附加一个更复杂、结构化的文件进行定量分析。例如,我们可以向 ChatGPT(由 GPT-4o 驱动)附加一个.xls文件,并要求它进行一些财务分析(在我的案例中,我使用了这里可用的样本文件:learn.microsoft.com/en-us/power-bi/create-reports/sample-financial-download)。

图 2.6:ChatGPT 展现的分析能力

除了上述的文本格式答案外,ChatGPT 还可以生成图表:

图片

图 2.7:使用 ChatGPT 生成图表

注意,为了执行这个特定的任务,ChatGPT 利用了一个名为 Code Interpreter 的功能,它允许它生成 Python 代码来分析数据并直接在上传的文件上运行。需要注意的是,你可以通过点击[>_]图标来可视化生成的代码:

图片

图 2.8:Code Interpreter

当涉及到结构化数据时,Code Interpreter 功能非常强大且多功能,它还可以被用来导入和训练高级机器学习模型,然后对数据进行预测。

摘要

在本章中,我们回顾了 OpenAI 的历史、研究领域以及最新的发展,直到 ChatGPT。我们还通过 ChatGPT 一瞥了可能的技艺,从对复杂图像进行推理到执行分析任务。

在下一章中,我们将开始本书的第二部分,我们将看到 ChatGPT 在各个领域的应用以及如何释放其潜力。你将学习如何通过合理设计你的提示来获取 ChatGPT 的最高价值,如何提高你的日常生产力,以及它如何成为任何消费者的优秀项目助手。

参考文献

加入我们的 Discord 和 Reddit 社区

对本书有疑问或想参与关于生成式 AI 和 LLMs 的讨论?加入我们的 Discord 服务器packt.link/I1tSU和 Reddit 频道packt.link/jwAmA,以连接、分享和与志同道合的爱好者合作。

图片 图片

第二部分

ChatGPT 实战

在这部分,我们将开始探索 ChatGPT 为市场带来的新可能性景观之旅。从日常生产力到特定领域的应用案例,你将熟悉 ChatGPT 的能力以及它如何作为各种任务的推理引擎使用。

一旦我们探讨了技术先决条件,这部分将跳入 ChatGPT 用户界面的概述,包括聊天管理和问题修改。

然后转向获取 ChatGPT(以及一般而言,LLMs)最佳效果所需的最重要元素之一:提示设计概念。在这里,你将熟悉使 ChatGPT 发挥最佳性能的强大技术,包括关于这些强大技术的最新发展和研究论文。

这一部分也专注于如何在实际活动中使用 ChatGPT 的具体例子,从日常生产力开始,逐步过渡到更特定领域的学科,如市场营销、开发、研究和视觉创造力。在这里,你不仅能够了解 ChatGPT 在这些领域可以覆盖的应用案例,还能看到具体的例子,以便你在自己身上复现它们。

最后,你将了解如何进一步定制 ChatGPT 以适应你的特定用例,利用 GPT 和 GPT 商店。

这一部分包含以下章节:

  • 第三章,理解提示工程

  • 第四章,利用 ChatGPT 提升日常生产力

  • 第五章,用 ChatGPT 开发未来

  • 第六章,用 ChatGPT 精通市场营销

  • 第七章,ChatGPT 重新定义研究

  • 第八章,用 ChatGPT 视觉化释放创造力

  • 第九章,探索 GPTs

第三章:理解提示工程

在前几章中,我们多次提到“提示”一词,在提及 ChatGPT 中的用户输入和一般意义上的大型语言模型(LLMs)时。

由于提示对 LLM 的性能有巨大影响,提示工程是充分利用你的 GenAI 工具的关键活动。实际上,有几种技术不仅可以完善你的 LLM 的响应,还可以减少与幻觉和偏见相关的风险。

在本章中,我们将介绍提示工程领域的最新技术,从基本方法到高级框架。更具体地说,我们将探讨以下主题:

  • 什么是提示工程?

  • 探索零样本、单样本和少样本学习

  • 提示工程的原则

  • 查看一些高级技术

  • 避免偏见的伦理考量

到本章结束时,你将拥有构建功能强大且稳固的提示与 ChatGPT 以及更广泛的 GenAI 应用程序互动的基础。

技术要求

您需要一个 OpenAI 账户。您可以使用免费的 ChatGPT 版本来运行本章的示例。

什么是提示工程?

在解释提示工程之前,让我们首先定义一下提示。

提示是引导 LLM 行为以生成输出的文本输入。例如,每次我们与 ChatGPT 互动,提问或给出指令时,输入的文本就是一个提示。在 LLM 和 LLM 驱动的应用背景下,我们可以区分两种类型的提示:

  • 第一种类型是用户编写的并发送给 LLM 的提示。例如,一个提示可能是“给我 Lasagna Bolognese 的食谱”,或者“生成一个马拉松跑步的训练计划”。

聊天屏幕截图  自动生成的描述

图 3.1:用户提示的示例

你会听到它被简单地称为提示查询用户输入

  • 第二种类型是指导模型以某种方式行为的提示,无论用户的查询如何。这指的是模型在与最终用户互动时所提供的自然语言指令集,以便以某种方式行为。你可以将其视为 LLM 的“后端”,这是将由应用开发者而不是最终用户处理的部分。

计算机屏幕截图  自动生成的描述

图 3.2:系统消息的示例

我们将此类提示称为系统消息

提示工程是设计有效提示的过程,以从大型语言模型(LLMs)中获取高质量和相关的输出。提示工程需要创造力、对 LLM 的理解以及对你想要实现的目标的清晰理解。

图 3.3:提示工程示例,以专门化 LLMs

在过去的几年里,提示工程已经成为一门全新的学科,这也是一个事实的证明,即与这些模型交互需要一套新的技能和能力,这些技能和能力在以前是不存在的。

提示的艺术在构建企业场景中的 GenAI 应用时已成为一项顶级技能;然而,它对于使用 ChatGPT 或类似 AI 助手进行日常任务的个人用户来说也极其有用,因为它显著提高了结果的质量和准确性。

在接下来的章节中,我们将看到一些如何利用 ChatGPT 构建高效、健壮提示的示例。

理解零样本、一样本和少样本学习

在前面的章节中,我们提到了 LLMs 通常以预训练的格式出现。它们已经在大量数据上进行了训练,并且已经相应地配置了它们的(数十亿)参数。

然而,这并不意味着那些 LLMs 不能再学习了。在第二章中,我们学习了微调的概念。在附录中,我们还将看到,通过微调来定制 OpenAI 模型并使其更能够处理特定任务的一种方法。

微调是一种适当的训练过程,需要训练数据集、计算能力和一些训练时间(取决于数据量和计算实例的数量)。

正因如此,测试另一种方法让我们的 LLMs 在特定任务上变得更加熟练是值得的:少样本学习

定义

在 LLMs 的背景下,少样本学习指的是模型在推理期间提供不同数量的任务特定示例时执行任务的能力。这些少样本学习范式使 LLMs 能够以最小或没有额外训练的情况下适应新任务,增强其在自然语言处理应用中的灵活性和效率。

理念是让模型从简单的示例中学习,而不是整个数据集。这些示例是我们希望模型响应的样本,这样模型不仅学习内容,还学习在响应中使用的内容、格式、风格和分类法。

此外,少样本学习是通过提示直接发生的(正如我们将在以下场景中看到的那样),因此整个体验更加节省时间且易于执行。

提供的示例数量决定了我们所指的少样本学习的水平。换句话说,如果没有提供示例,我们称之为零样本;如果提供了一个示例,我们称之为一样本;如果提供了两个以上的示例,我们称之为少样本。

让我们关注这些场景中的每一个。

零样本学习

在这种学习类型中,模型被要求执行一个它没有看到任何训练示例的任务。模型必须依赖先前的知识或关于任务的通用信息来完成它。例如,零样本学习的方法可能是要求模型生成一个描述,如我在提示中定义的那样:

图片

图 3.4:零样本学习示例

单样本学习

在这种学习类型中,模型被要求为每个新任务提供一个示例。模型必须使用其先验知识从这个单一示例中泛化以执行任务。如果我们考虑前面的例子,我可以在要求模型生成新示例之前,向我的模型提供一个提示完成示例:

图片

图 3.5:单样本学习示例

如前一个截图所示,模型能够生成一个与提供的示例风格和模板相匹配的答案。当提供多个示例时,情况类似,如下一节所述。

少样本学习

在这种学习类型中,模型被要求为每个新任务提供少量(通常在 2 到 5 个之间)的示例。模型必须使用其先验知识从这些示例中泛化以执行任务。让我们继续我们的例子,并向模型提供更多的示例:

图片

图 3.6:三个示例的少样本学习示例

如前所述,记住这些学习形式与传统监督学习和微调是不同的。在少样本学习中,目标是让模型从非常少的示例中学习,并从这些示例中泛化到新的任务。此外,我们并没有修改模型的架构和知识,这意味着当用户开始新的对话,并且之前的提示超出了上下文窗口时,模型将“忘记”它。

定义

监督学习是一种机器学习方法,模型在标记数据集上进行训练,这意味着输入数据与相应的正确输出(标签)配对。目标是让模型学习输入和输出之间的关系,以便它可以准确预测新、未见过的数据的输出。

现在我们已经学会了如何让 OpenAI 模型从示例中学习,让我们专注于如何正确地定义我们的提示,以使模型的响应尽可能准确。

提示工程原则

传统上,在计算和数据处理的背景下,使用了“垃圾输入,垃圾输出”的表达,意味着输出质量取决于输入质量。如果将不正确或低质量的输入(垃圾)输入到系统中,输出也将是错误的或无意义的(垃圾)。

当涉及到提示时,故事是相似的:如果我们希望从我们的 LLMs 中获得准确和相关的结果,我们需要提供高质量的输入。然而,构建好的提示不仅仅是关于响应质量的问题。实际上,我们可以构建好的提示来:

  • 最大化 LLM 响应的相关性。

  • 指定响应的类型格式和风格。

  • 提供对话上下文。

  • 减少内部 LLMs 的偏见,提高公平性和包容性。

  • 减少幻觉。

    定义

    在 LLM 的背景下,幻觉指的是生成事实错误、无意义或未基于训练数据的文本或响应。这发生在 LLM 产生听起来自信但错误或虚构的信息时。例如,一个用户可以问一个 LLM:“《隐形城市》这本书的作者是谁?”如果模型回答:“《隐形城市》是加布里埃尔·加西亚·马尔克斯写的。”,这便是一种幻觉,因为正确的作者是伊塔洛·卡尔维诺。模型生成了一个听起来可信但实际上错误的答案。

在接下来的几节中,我们将看看一些基本的提示工程技巧,以实现这些结果。

明确指令

明确指令的原则是向模型提供足够的信息和指导,以便正确且高效地完成任务。明确的指令应包括以下要素:

  • 任务的目标或目标,例如“写一首诗”或“总结一篇文章。”

  • 预期输出的格式或结构,例如“使用四行押韵的词”或“使用每项不超过 10 个单词的项目符号。”

  • 任务的约束或限制,例如“不要使用任何粗俗语言”或“不要复制任何源文本。”

  • 任务的上下文或背景,例如“这首诗是关于秋天的”或“这篇文章来自科学期刊。”

例如,假设我们希望我们的模型从文本中提取任何类型的指令,并以项目符号列表的形式返回教程。如果提供的文本中没有指令,模型应通知我们。让我们在 ChatGPT 中看看一个例子:

图 3.7:ChatGPT 中明确指令的示例

注意,如果我们向模型传递不包含任何指令的其他文本,它将能够按照我们的指示进行回应:

图 3.8:遵循指令的聊天模型示例

注意

在之前的图中,我们看到 ChatGPT 在对话开始时我们给出的指令的指导下进行。这是因为 ChatGPT 有一个所谓的上下文窗口,等于一个单独的聊天:我们在聊天会话中输入的一切都将成为 ChatGPT 的上下文,从而成为其知识的一部分;当我们从头开始一个新的会话时,ChatGPT 将不会记住任何之前的指令。

通过给出明确的指令,你可以帮助模型理解你想要它做什么以及你希望它如何去做。这可以提高模型输出的质量和相关性,并减少进一步修订或纠正的需求。

然而,有时清晰度并不足够。我们可能需要推断我们的 LLM 的思维方式,使其在任务上更加稳健。在下一小节中,我们将探讨一种实现这一目标的技术——这在解决复杂任务的情况下非常有用。

将复杂任务分解为子任务。

当我们与 LLM 互动,让他们解决某些任务时,有时这些任务过于复杂或含糊不清,以至于无法通过单个提示处理,因此最好将它们分解为更简单的子任务,这些子任务可以通过不同的提示来解决。

这里有一些将复杂任务分解为子任务的示例:

  • 文本摘要:一项复杂的任务,涉及生成长文本的简洁、准确摘要。这项任务可以分解为以下子任务:

    • 从文本中提取主要观点或关键词。

    • 以连贯的方式重写主要观点或关键词。

    • 将摘要修剪到所需的长度或格式。

  • 诗歌生成:一项创造性的任务,涉及创作遵循特定风格、主题或情绪的诗歌。这项任务可以分解为以下子任务:

    • 为诗歌选择一个诗歌形式(如十四行诗、俳句、雷姆里克等)和一个韵律(如 ABAB、AABB、ABCB 等)。

    • 根据用户的输入或偏好为诗歌生成标题和主题。

    • 生成符合所选形式、韵律和主题的诗歌行或诗句。

    • 精炼和润色诗歌,以确保其连贯性、流畅性和原创性。

  • 代码生成:一项技术任务,涉及为视频游戏生成有效代码。这项任务可以分解为以下子任务:

    • 创建基本动作并将它们的逻辑整合到游戏引擎的循环中。

    • 添加高级动作功能,如带有重力的打印或跳跃逻辑。

    • 确保启用物理和碰撞处理。

    • 通过生成测试程序来启用调试和优化。

    • 生成文档供将来参考。

让我们考虑以下示例。我们将向模型提供一个简短的文章,并要求它根据这些指示进行总结:

  • 你是一个总结文章的人工智能助手。

  • 要完成这项任务,请执行以下子任务:

    • 全面阅读提供的文章内容,并确定主要主题和关键点。

    • 生成一个段落摘要,概括当前文章内容,传达主要思想。

    • 打印每个步骤。

这是我们将提供的简短文章:

Large Language Models (LLMs), a subset of artificial intelligence, have revolutionized the field of natural language processing by demonstrating an unprecedented ability to understand and generate human-like text. These models are trained on vast datasets comprising diverse linguistic inputs, enabling them to produce coherent and contextually relevant responses across a wide range of topics. By leveraging architectures such as transformers, LLMs like GPT-3 and its successors can complete text, answer questions, perform translations, and even engage in complex dialogue. Their applications span from automated customer support and content creation to advanced research and education tools. Despite their incredible capabilities, LLMs also pose challenges, including the potential for biases inherent in training data and the risk of generating misleading or false information. As the development of LLMs continues to advance, ongoing efforts in ethical AI research and deployment strategies are crucial to harness their benefits responsibly and effectively. 

让我们看看模型是如何工作的:

图 3.9:OpenAI GPT-4o 将任务分解为子任务以生成摘要的示例

将复杂任务分解为更简单的子任务是一种强大的技术。然而,它并没有解决 LLM 生成内容的主要风险之一,即输出可能不正确。在接下来的两个小节中,我们将看到一些主要旨在解决这一风险的技术。

请求进行论证。

在提示工程中,要求模型为其响应提供解释可以增强透明度和可靠性。这种做法使用户能够评估模型答案背后的推理,确保它们是逻辑的,并且基于相关信息(arxiv.org/abs/2303.08769)。通过理解模型的思想过程,用户可以识别潜在的偏见或不准确性,从而做出更明智的决定,并有效地利用 AI 系统。

例如,当 AI 模型提出医学诊断时,要求其提供推理可以揭示建议是否基于相关的症状和病史,或者是否受到无关数据的影响。同样,在法律环境中,如果 AI 系统提供案例推荐,理解其解释有助于确保建议基于适当的法律先例。这种程度的洞察力对于建立对 AI 应用的信任以及改进提示以获得更准确和上下文相关的响应至关重要。

让我们考虑以下例子。我们希望我们的 LLM 能够解决谜题,我们用以下指令提示它:

图 3.10:OpenAI 的 GPT-4o 在解决谜题后提供解释的示例

使用类似的方法,我们也可以在不同的提示级别上进行干预,以改善我们 LLM 的性能。例如,我们可能会发现模型在系统地解决数学问题时采取了错误的方法,因此我们可能希望在元提示级别上直接建议正确的方法。

另一个例子可能是要求模型生成多个输出及其解释,以评估不同的推理技术,并在元提示中提示最佳的一个。我们将在下一小节中关注这一点。

生成许多输出,然后使用模型选择最佳的一个

在提示工程中,指导模型对单个提示生成多个响应的技术被称为自洽性。这种方法涉及指导模型为给定输入生成多个输出,然后对这些输出进行评估,以确定最一致或最准确的响应。通过比较这些多个输出,用户可以辨别出共同的主题或解决方案,从而提高 LLM 性能的可靠性。

让我们来看一个例子,继续探讨上一节中讨论的谜题:

  • 你是一个专门解决谜题的人工智能助手。

  • 给定一个谜题,你必须为这个谜题生成三个答案。

  • 对于每个答案,具体说明你的推理。

  • 然后,在三个答案中,选择最有可能的答案。

在这个例子中,我提示模型为谜题生成三个答案,然后告诉我最有可能的答案,并解释原因。让我们看看结果:

图 3.11:GPT-4o 生成三个可能的答案并选择最有可能的一个的示例,提供理由

如前所述,强迫模型以不同的方法解决一个问题是一种收集多个推理样本的方法,这些样本可能作为元提示中的进一步指令。例如,如果我们想让模型始终提出不是解决问题的最直接解决方案的东西——换句话说,如果我们想让它“思考不同”的话——我们可能强迫它以 N 种方式解决问题,然后使用最富有创造性的推理作为元提示的框架。

我们将要检查的最后一个是我们要赋予我们的元提示的整体结构。

使用分隔符

最后要讨论的原则与我们想要赋予我们的元提示的格式有关。这有助于我们的 LLM 更好地理解其意图,以及在不同段落之间建立联系。

为了实现这一点,我们可以在我们的提示中使用分隔符。分隔符可以是任何字符或符号的序列,它清楚地映射一个模式而不是一个概念。例如,我们可以考虑以下序列分隔符:

  • >>>>

  • ====

  • ------

  • ####

  • ` ` ` ` `

让我们以一个旨在指导模型将用户的任务翻译成 Python 代码的元提示为例,并提供一个这样的例子:

You are a Python expert that produces Python code as per the user's request.
===>START EXAMPLE
---User Query---
Give me a function to print a string of text.
---User Output---
Below you can find the described function:
```def my_print(text):

    #返回打印的文本

    return print(text)

```py
<===END EXAMPLE 

让我们看看它是如何工作的:

图 3.12:使用分隔符的系统消息的模型样本输出

如您所见,它还打印了系统消息中显示的反引号内的代码。

到目前为止所检查的所有原则都是一般规则,可以使您与 ChatGPT 的互动,以及更广泛地说,与 GenAI 工具的互动对您的目标更有意义。在下一节中,我们将看到一些针对提示工程的高级技术,这些技术针对模型推理和思考答案的方式,在提供给最终用户之前。

元提示

在提示工程中,指导模型改进其自己的提示——也称为元提示(arxiv.org/abs/2401.12954)——是一种提高提示质量的有效技术,从而提高生成输出的相关性。通过让模型参与提示改进的迭代过程,用户可以利用模型的语言理解能力来识别初始提示中的歧义或改进领域。这个自我改进的循环导致更精确和上下文相关的提示,进而从模型中获得更准确和有用的响应。

例如,假设我们想要为我们的新可持续品牌跑步鞋生成一个电梯简报。你将如何请求 LLM 来完成这个任务?嗯,你可能会利用上述的一些技巧,比如清晰的指令或将任务分解成子任务;或者(或附加地),你可以请求 LLM 本身细化你的提示,使其更符合你的目标。

为了做到这一点,我们可以最初指示模型按照以下方式细化提示:

图 3.13:用户请求 ChatGPT 细化提示的示例

现在,让我们发送我们的提示:

图 3.14:ChatGPT 细化用户提示的示例

如你所见,ChatGPT 能够细化我们的提示,使其更符合我们的目标。注意,在上面的例子中,我们只要求了一次细化;然而,这可以是一个迭代过程,不仅能够增强提示的清晰度和精确度,还能确保模型的输出更符合用户的特定要求,使交互更加高效和富有成效。

探索一些高级技巧

在前面的章节中,我们介绍了一些基本的提示工程技巧,这些技巧可以提高你尝试完成任何类型任务时 LLM 的响应。

另一方面,还有一些可能针对特定场景实施的高级技巧,我们将在本节中介绍。

注意

一些高级提示工程技巧,如思维链CoT)提示,已集成到现代模型中,例如 OpenAI 的 o1 系列。这些模型被设计为通过生成逐步逻辑序列并在得出最终答案之前内部处理复杂的推理任务,从而增强其解决问题的能力。这种内部推理过程允许 o1 模型更有效地处理复杂查询,而无需用户显式提供 CoT 提示。然而,使用 CoT 提示仍然可以在指导模型针对特定任务的推理过程时带来好处,并且更广泛地说,在与之前版本不显示高级推理能力的模型交互时,这是一种良好的实践。

思维链

在 Wei 等人撰写的论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》中引入的 CoT 是一种通过中间推理步骤实现复杂推理能力的技巧。它还鼓励模型解释其推理过程,“迫使”它不要过于迅速,以免给出错误响应(如我们在前面的章节中看到的)。

假设我们想要提示我们的语言模型(LLM)解决一元方程。为此,我们将提供一个通用的推理列表作为元提示:

To solve a generic first-degree equation, follow these steps:
1\. **Identify the Equation:** Start by identifying the equation you want to solve. It should be in the form of "ax + b = c," where 'a' is the coefficient of the variable, 'x' is the variable, 'b' is a constant, and 'c' is another constant.
2\. **Isolate the Variable:** Your goal is to isolate the variable 'x' on one side of the equation. To do this, perform the following steps:

   a. **Add or Subtract Constants:** Add or subtract 'b' from both sides of the equation to move constants to one side.

   b. **Divide by the Coefficient:** Divide both sides by 'a' to isolate 'x'. If 'a' is zero, the equation may not have a unique solution.
3\. **Simplify:** Simplify both sides of the equation as much as possible.
4\. **Solve for 'x':** Once 'x' is isolated on one side, you have the solution. It will be in the form of 'x = value.'
5\. **Check Your Solution:** Plug the found value of 'x' back into the original equation to ensure it satisfies the equation. If it does, you've found the correct solution.
6\. **Express the Solution:** Write down the solution in a clear and concise form.
7\. **Consider Special Cases:** Be aware of special cases where there may be no solution or infinitely many solutions, especially if 'a' equals zero.
Equation: 

让我们看看它是如何工作的:

图 3.15:使用 CoT 方法求解方程的模型输出

这种方法性的方法通过将任务分解为可管理的步骤来模拟人类问题解决,增强了清晰度并减少了错误。

使用 CoT,我们正在提示模型生成中间推理步骤。这也是我们将要考察的另一种推理技术的组成部分。

ReAct

由姚等人发表的论文《ReAct:在语言模型中协同推理和行动》中引入的Reason and ActReAct)是一个将推理和行动与 LLMs 结合的通用范式。ReAct 提示语言模型为任务生成口头推理轨迹和行动,并从外部来源接收观察,如网络搜索或数据库。这使得语言模型能够执行动态推理,并根据外部信息快速调整其行动计划。例如,你可以提示语言模型通过首先对问题进行推理,然后执行一个动作向网络发送查询,然后从搜索结果中接收观察,接着继续这个思考、行动、观察的循环,直到得出结论。

CoT 和 ReAct 方法之间的区别在于,CoT 提示语言模型为任务生成中间推理步骤,而 ReAct 提示语言模型为任务生成中间推理步骤、行动和观察。

注意,“行动”阶段通常与我们的 LLM 与外部工具(如网络搜索)交互的可能性有关。然而,在以下示例中,我们不会使用工具,而是将“行动”一词用于我们要求模型为我们执行的任何任务。

这就是 ReAct 元提示可能的样子:

Answer the following questions as best you can.
Use the following format:
 ---------------
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
-----------------
This is my question: Who won the climbing Olympics in 2024? 

让我们看看它如何通过一个简单的用户查询来工作:

图 3.16:ReAct 提示示例

如你所见,在这个场景中,模型利用了动作输入处的网络工具。

这是一个很好的例子,说明了如何通过提示模型逐步思考和明确详细每个推理步骤,使其在回答之前变得更加“聪明”和谨慎。这同样是一种防止幻觉的出色技术。

总体而言,提示工程是一门强大的学科,尽管它仍处于起步阶段,但已经在 LLM 驱动的应用中得到广泛应用。在接下来的章节中,我们将看到这些技术的具体应用。

避免偏差的伦理考量

每当我们处理像 LLMs 这样的 AI 系统时,我们必须意识到它们相关的隐藏偏差风险,这种偏差直接来源于模型训练所使用的知识库。

定义

隐藏偏见,也称为隐含或无意识偏见,指的是那些微妙且非故意的态度、刻板印象或关联,它们在不经意间影响一个人的感知和行为,而他们自己并没有意识到。这些偏见可能会以反映社会刻板印象的方式塑造行为和决策,往往导致无意的歧视。例如,有人可能无意中将领导角色与男性而非女性联系起来,这可能会影响招聘或晋升选择。在 LLM 的背景下,隐藏偏见在模型输出中表现为它复制或放大了训练数据中存在的偏见,可能导致偏颇或不公平的回应。解决隐藏偏见对于促进公平和减少系统性不平等至关重要。

例如,关于 GPT-3 的主要训练数据块,即Common Crawl,一项 2012 年的研究(commoncrawl.org/blog/a-look-inside-common-crawls-210tb-2012-web-corpus)揭示了超过 55%的语料库来自.com域名,其中十二个顶级域名各自代表了超过 1%的数据。

由于.com域名在西方实体中被广泛使用,这种集中性表明数据集中存在显著的西方影响。此外,Common Crawl 中英语内容的普遍存在进一步表明存在以西方为中心的偏见,因为英语在西方国家的使用占主导地位。

如果情况如此,我们已经在面对模型的隐藏偏见(更具体地说,是种族和语言偏见),这不可避免地会模仿一个有限且不具有代表性的类别的人类。

在他们的论文《语言模型是少样本学习者》(arxiv.org/abs/2005.14165)中,OpenAI 的研究员汤姆·布朗等人创建了一个实验设置,以调查 GPT-3 中的种族偏见。模型被提示使用包含种族类别的短语,并为每个类别生成了 800 个样本。生成的文本的情感是通过基于词共现的 Senti WordNet 在-100 到 100 的范围内测量的(正分数表示积极词汇,反之亦然)。

结果显示,与每个种族类别相关的情感在不同模型中有所不同,亚洲始终具有高情感(意味着很多积极词汇)和黑人始终具有低情感(意味着很多负面词汇)。作者警告说,这些结果反映了实验设置,社会历史因素可能会影响与不同人口统计数据相关的情感。

这种隐藏偏见可能会产生不符合负责任 AI 原则的有害回应。

然而,值得注意的是 ChatGPT 以及所有 OpenAI 模型都受到持续改进的影响。这也与 OpenAI 的 AI 对齐(openai.com/index/our-approach-to-alignment-research/)一致,其研究重点在于训练 AI 系统变得有帮助、真实和安全。

例如,如果我们要求 GPT-4o 根据人们的性别和年龄来制定猜测,它不会满足我们的确切要求,而是提供一个假设函数以及一个巨大的免责声明:

图 3.17:GPT-4o 随时间改进的示例,因为它提供了无偏见的响应

总体而言,尽管在道德原则领域持续改进,但在使用 ChatGPT 时,我们应始终确保输出与这些原则一致。ChatGPT 和 OpenAI 模型中的偏见和伦理概念在整个负责任 AI 主题中具有更广泛的含义,我们将在本书最后一章中关注这一点。

摘要

在本章中,我们深入探讨了 prompt engineering 的概念,因为它控制 ChatGPT 和 LLMs 输出的关键组成部分。我们学习了如何利用不同级别的 shot learning 来使 LLMs 更符合我们的目标。

我们从介绍 prompt engineering 的概念及其重要性开始,然后转向基本原理——包括清晰的指令、要求证明等。

然后,我们转向更高级的技术,这些技术旨在塑造我们的 LLMs 的推理方法:少样本学习、CoT 和 ReAct。

Prompt engineering 是一门新兴学科,它为融入 LLMs 的新类别应用铺平了道路。

从下一章开始,我们将探讨 ChatGPT 可以提高生产力和对我们今天工作方式产生颠覆性影响的各个领域。

参考文献

以下为本章的参考文献:

第四章:使用 ChatGPT 提升日常生产力

在本章中,我们将介绍 ChatGPT 可以为一般用户每天执行的主要活动,以提升他们的生产力。本章将侧重于写作辅助、决策和信息检索的具体示例,并提供建议和提示,以便你可以自己实施。

到本章结束时,你将学会如何将 ChatGPT 用作以下活动的助推器:

  • 每日活动,如安排日程、餐前准备和购物

  • 生成全新的文本内容

  • 提高你的写作技能并适应不同的受众

  • 获取研究和竞争情报的文档和信息

技术要求

对于这一章节,你需要一个 ChatGPT 账户。参考第二章了解如何开设 ChatGPT 账户。

ChatGPT 作为日常助手

ChatGPT 可以作为有价值的日常助手,帮助你管理任务并简化工作流程。通过提供个性化帮助,它可以优化你的日常日程,从而节省你的时间并提高你的效率。

在撰写此书时,ChatGPT 的响应附带了一系列功能:

图 4.1:ChatGPT 用户界面上的图标

让我们逐一检查它们:

  • 图标将使 ChatGPT 大声朗读其响应。

  • 图标允许你复制 ChatGPT 的输出。

  • 图标允许你为 ChatGPT 的响应提供反馈,以供未来改进。

  • 图标允许你使用 ChatGPT 的新功能在画布上编辑。它允许你在白色画布上编辑 ChatGPT 的响应,以便进一步调整以满足你的需求。

  • 图标允许你即时更改模型并使用新选定的模型重新生成响应。

这些功能使得与 ChatGPT 的整体用户体验更加互动和可调整。让我们从一项关于如何使我的日子更加高效的一般建议开始:

手机的截图 自动生成的描述

图 4.2:ChatGPT 生成的一个生产力例程示例

在组织我的周计划中,ChatGPT 的另一个有趣用途是,我可以将其用作餐前准备助手。请注意,在这里我也要求了特定的表格格式:

图 4.3:ChatGPT 生成的我工作周餐前准备

除了餐前准备,ChatGPT 还可以根据我的要求生成锻炼计划:

图 4.4:ChatGPT 生成的锻炼计划

ChatGPT 还可以成为忠诚而有纪律的学习伙伴。例如,它可以帮你总结长篇论文,让你对讨论的主题有一个概述,或者帮助你准备考试。

假设你正在使用由 Lorenzo Peccati 等人撰写的大学教材《经济学与商业数学》准备数学考试。在深入阅读之前,你可能想了解内容概述和讨论的主要主题,以及是否有先决条件——最重要的是,如果我正在准备考试——学习它需要多长时间。你可以向 ChatGPT 提出这个问题:

文本消息屏幕截图,自动生成描述

图 4.5:ChatGPT 提供大学书籍概述

注意

总要记住,像 ChatGPT 这样的生成式 AI 模型,如果没有提供特定的上下文,可能会生成基于平均值的成果。例如,这类书籍的学习时间可能因学生而异。这时,提示工程——如角色提示或迭代提示——可以提供极大的帮助,以便你可以根据你自己的独特个人资料缩小模型的专长。

重要的是要记住,当涉及到关于特定资产或个人信息的问题时,我们正在增加 ChatGPT 幻觉的风险。

实际上,在上一个例子中,模型能够回答是因为书籍的简介显然是训练集的一部分,但模型并不知道书籍的具体内容,因为它没有在网络上免费提供。如果是这种情况,启用网络搜索工具可能是一个好习惯,这样 ChatGPT 就可以在网络上导航。

让我们看看一个例子:

计算机屏幕截图,自动生成描述

图 4.6:ChatGPT 调用网络插件的示例

如你所见,ChatGPT 现在已经调用了网络插件并搜索了五个网站,同时也提供了它所导航的链接。

你也可以要求 ChatGPT 提出一些关于你刚刚学习的内容的问题:

聊天屏幕截图,自动生成描述

图 4.7:ChatGPT 作为教授的示例

注意

“扮演…的技术”是高效提示技术的绝佳例子,它可以在第三章描述的例子中列出。

现在,让我们看看更多使用 ChatGPT 完成更具体任务的例子,包括文本生成、写作辅助和信息检索。

生成文本

作为一种语言模型,ChatGPT 特别适合根据用户的指令生成文本。例如,你可以要求 ChatGPT 生成针对特定受众的电子邮件、草稿或模板:

图 4.8:ChatGPT 生成的电子邮件示例

另一个例子可能是要求 ChatGPT 为你即将准备的演示文稿创建一个提案结构(这里只提供第一张幻灯片作为示例):

空白页面屏幕截图,自动生成描述

图 4.9:ChatGPT 生成的幻灯片议程和结构

您也可以用这种方式生成关于热门话题的博客文章或文章。以下是一个示例:

图 4.10:ChatGPT 生成的带有相关标签和 SEO 关键词的博客文章示例

我们甚至可以让 ChatGPT 缩小帖子的尺寸,使其适合推文。以下是我们可以这样做的步骤:

图 4.11:ChatGPT 将文章缩减为 Twitter/X 帖子

最后,ChatGPT 还可以生成视频或戏剧剧本,包括布景设计和建议的编辑。在这种情况下,我们可能希望结合前一章中介绍的一些提示工程技巧,如上下文、期望的结果和结构。例如,考虑以下提示:

Write a short, humorous theatre dialogue for a 3-minute comedy sketch.
Context:
Setting: A coffee shop.
Characters:
Alex – Sarcastic, quick-witted, unimpressed.
Jamie – Overly dramatic, easily flustered, indecisive.
Scenario: Jamie attempts to order a simple black coffee but overcomplicates it with unnecessary details and existential crises. Alex, unimpressed, tries to keep things simple but unintentionally escalates the absurdity.
Desired Outcome:
A fast-paced and snappy comedic dialogue.
Filled with witty comebacks, misunderstandings, and exaggerated reactions.
Ends with an unexpected and absurd twist that makes the audience laugh.
Structure of Output:
Title: A catchy title that reflects the comedic theme.
Cast: List the characters.
Scene Description: Briefly describe the setting and mood.
Dialogue Format: Clearly labeled lines with stage directions in brackets (e.g., [Alex sighs]).
Ending: A punchy, unexpected comedic twist. 

让我们看看结果:

图 4.12:ChatGPT 生成的带有布景设计的戏剧对话

我只提供了 ChatGPT 生成的四个场景中的一个,以保持您对结局的好奇心…

总体而言,每当需要从头开始生成新内容时,ChatGPT 都能很好地提供一个初稿,这可以作为进一步改进的起点。

然而,ChatGPT 也可以通过提供写作辅助和翻译来支持现有内容,我们将在下一节中看到。

提高写作和翻译技巧

有时,与其生成新内容,您可能更愿意回顾现有的文本。这可能是为了改进风格、改变受众、语言翻译、语气等目的。

让我们看看一些例子。想象一下,我为我的一位客户草拟了一封邀请他参加网络研讨会(webinar)的电子邮件。我写了两个简短的句子。在这里,我希望 ChatGPT 改进这封电子邮件的形式和风格,因为目标受众将是高管级别:

电子邮件邀请截图 自动生成的描述

图 4.13:ChatGPT 重新审视的电子邮件示例,以针对高管受众

现在,让我们用不同的目标受众来提出相同的问题:

电子邮件邀请截图 自动生成的描述

图 4.14:ChatGPT 生成针对不同受众的同一封电子邮件的示例

ChatGPT 还可以就您的写作风格和结构提供一些反馈。

例如,假设您为名为《自然语言处理的历史》的论文撰写了摘要:

自然语言处理NLP)已经从 20 世纪 50 年代的基于规则的模型发展到今天的深度学习驱动的 AI 系统。早期的方法依赖于符号方法,后来被隐马尔可夫模型和 n-gram 等统计模型所取代。21 世纪见证了神经网络、词嵌入(Word2Vec、GloVe)和转换器架构(BERT、GPT)的革命,极大地提高了语言理解能力。NLP 现在为聊天机器人、翻译和 AI 驱动的通信提供动力。本文追溯了 NLP 的演变,突出了塑造其在现代技术和 AI 中角色的关键突破。

现在,你想要一些关于写作风格及其与标题一致性的反馈(输出已截断):

图 4.15:ChatGPT 对一个论文引言的反馈示例

如你所见,ChatGPT 不仅提供了关于整体论文的反馈和建议,而且还根据提示进行了模块化分析(与标题的相关性、清晰度和参与度)。

现在,让我们揭示本章的最后一个 ChatGPT 技能。ChatGPT 也是一个出色的翻译工具。它至少知道 95 种语言(如果你对所需的语言是否受支持有疑问,你总是可以直接询问 ChatGPT)。然而,这里有一个可能出现的考虑:当我们已经拥有像 Google Translate 这样的尖端工具时,ChatGPT 在翻译方面的附加值是什么?

要回答这个问题,我们必须考虑一些关键的区别因素以及我们如何利用 ChatGPT 内置的翻译功能:

  • ChatGPT 可以捕捉到意图。这意味着你也可以绕过翻译阶段,因为这是 ChatGPT 可以在后台完成的。例如,如果你写一个提示来生成一篇法语社交媒体帖子,你可以用任何你想要的语言来写这个提示——ChatGPT 会自动检测它(无需事先指定)并理解你的意图:

计算机屏幕截图  自动生成的描述

图 4.16:ChatGPT 生成与输入语言不同的输出的示例

  • ChatGPT 可以捕捉到俚语或成语的更精细的含义。这使得翻译不再是字面意义上的,从而可以保留其深层含义。例如,让我们考虑英国的表达方式It’s not my cup of tea,这表示某物不符合个人的喜好或偏好。让我们请 ChatGPT 和 Google Translate 将其翻译成意大利语:

聊天屏幕截图  自动生成的描述

图 4.17:ChatGPT 和 Google Translate 在将英语翻译成意大利语时的比较

如你所见,ChatGPT 可以提供与原始表达等价的几个意大利成语,包括它们的俚语格式。另一方面,Google Translate 进行了直译,遗留下了成语的真正含义。

  • 就像任何其他任务一样,您始终可以向 ChatGPT 提供上下文。因此,如果您希望您的翻译具有特定的俚语或风格,您可以在提示中指定它,例如使用分隔符来突出上下文占位符(正如我们在第三章中探讨的那样)。或者,甚至更有趣,您可以要求 ChatGPT 用讽刺的语气翻译您的提示。在以下示例中,我用以下文本的意大利语版本提示了 ChatGPT:

OpenAI 是一个专注于人工智能的非营利研究组织,其目标是以造福人类的方式促进和开发友好的人工智能。

成立于 2015 年底,该组织位于旧金山,旨在通过使专利和研究公开,与其他机构和研究人员‘自由合作’。

创始人(包括埃隆·马斯克和山姆·奥特曼)部分受到通用人工智能带来的存在风险所激励。

并要求 ChatGPT 用讽刺的语气将其翻译成英文:

计算机截图  自动生成的描述

图 4.18:ChatGPT 带有讽刺意味地翻译提示的示例。提示的原始内容来自 OpenAI 的维基百科页面:https://it.wikipedia.org/wiki/OpenAI

所有这些场景都突出了 ChatGPT 和 OpenAI 模型的一般关键特性。正如我们所见,这些特性并非旨在针对单一任务(即受约束)进行专业化。相反,它们旨在动态服务于多个场景,以便您可以使用单个模型解决广泛的用例。

总结来说,ChatGPT 不仅能生成新的文本,还能操纵现有材料以适应您的需求。它还证明在翻译语言之间非常精确,保持了术语和特定语言的表达方式。

在下一节中,我们将看到 ChatGPT 如何帮助我们检索信息和竞争情报。

快速信息检索和竞争情报

信息检索和竞争情报是 ChatGPT 带来变革的更多领域。

当我们谈论信息检索时,尽管如此,我们需要区分三种主要场景:

  • 在 ChatGPT 的知识层面上发生的检索,意味着用户请求的特定信息是模型训练集的一部分

  • 使用 ChatGPT 中可用的 WebSearch 插件时发生的检索,该插件使模型能够导航网络并检索最新信息

  • 使用我们上传到 ChatGPT 的外部知识源时发生的检索

在本节中,我们将重点关注前两种场景。

一个例子是要求 ChatGPT 提供我们可能感兴趣的书籍的快速总结或评论(在这种情况下,“哈利·波特”系列是模型训练集的一部分,因此它在第一个检索场景中被使用):

书籍截图,自动生成描述

图 4.19:ChatGPT 提供书籍总结和评论的示例

或者,我们可以根据我们的偏好要求一些关于我们希望阅读的新书的建议:

书籍截图,自动生成描述

图 4.20:ChatGPT 根据我的偏好推荐书籍列表的示例

现在,让我们更进一步,考虑一个你可能需要最新信息的场景。

你可能想快速检索一些关于你想要了解更多信息的主题的参考资料——例如,前馈神经网络。如果是这种情况,你可以启用网络搜索工具,并查看 ChatGPT 的实时超链接作为信息来源:

图 4.21:ChatGPT 列出相关参考的示例

如你所见,ChatGPT 能够为我提供相关参考资料以开始研究这个主题。此外,如果你点击“来源”按钮,你可以进一步展开查看更多附加链接的推荐:

图 4.22:通过“来源”按钮揭示的附加链接

让我们在竞争情报方面更进一步。

让我们考虑撰写一本名为《卷积神经网络入门——Python 实现》的书。我想对市场上的潜在竞争对手进行一些研究。我想调查的第一件事是是否已经有一些具有相同内容的竞争性标题,因此我可以要求 ChatGPT 生成具有相同内容的现有书籍列表:

图 4.23:ChatGPT 提供竞争对手书籍列表的示例

你还可以要求关于你想要发布的市场的饱和度的反馈:

图 4.24:ChatGPT 关于如何在市场上保持竞争力的建议

总体而言,ChatGPT 可以成为信息检索和竞争情报的有价值助手。然而,重要的是要记住知识库截止日期是 2021 年。这意味着,无论何时我们需要检索实时信息,或者在进行今天的竞争市场分析时,我们可能无法依赖 ChatGPT。

尽管如此,这个工具仍然提供了无论知识库截止日期如何都可以应用的优秀建议和最佳实践。

摘要

本章中我们看到的所有示例只是 ChatGPT 帮助你提高生产力的一个谦逊展示。这些小技巧可以极大地帮助你处理那些可能重复性(例如创建回复模板或制定日常流程)或繁重(例如搜索文档或竞争情报)的活动。

注意,在本章中,我们仅通过文本与 ChatGPT 进行交互:在整本书中,我们还将看到如何融入视觉交互。

在下一章中,我们将更深入地探讨 ChatGPT 正在改变游戏规则的主要三个领域——开发、营销和研究。

加入我们的 Discord 和 Reddit 社区

对本书有任何疑问或想对生成式 AI 和 LLMs 的讨论做出贡献?加入我们的 Discord 服务器packt.link/I1tSU和 Reddit 频道packt.link/jwAmA,与志同道合的爱好者建立联系、分享和协作。

第五章:与 ChatGPT 共同开发未来

在本章中,我们将讨论开发者如何利用 ChatGPT。本章重点关注 ChatGPT 在开发者领域解决的主要用例,包括代码审查和优化、文档生成和代码生成。本章将提供示例,并使您能够亲自尝试这些提示。

在简要介绍开发者为何应该将 ChatGPT 作为日常助手的原因之后,我们将重点关注 ChatGPT 及其如何执行以下任务:

  • 为什么开发者应该使用 ChatGPT?

  • 生成、优化和调试代码

  • 生成与代码相关的文档并调试您的代码

  • 解释机器学习ML)模型,以帮助数据科学家和商业用户实现模型可解释性

  • 翻译不同的编程语言

  • 在画布上与代码协作

到本章结束时,您将能够利用 ChatGPT 进行编码活动,并将其用作助手以提高您的编码效率。

技术要求

您可以在本书配套的 GitHub 仓库中找到本章的完整代码:github.com/PacktPublishing/Practical-GenAI-with-ChatGPT-Second-Edition

免责声明

虽然本章探讨了 ChatGPT 如何生成和与代码协作,但我想要强调的是,欣赏其潜力并不需要深厚的专业技术背景。与其仅仅关注编码的机制,我鼓励您考虑生成式 AI 如何弥合软件开发者与不具备编码专业知识的人之间的差距。

为什么开发者应该使用 ChatGPT?

个人而言,我认为 ChatGPT 最令人惊叹的能力之一是处理代码——任何类型的代码。在前面的章节中,我们已经看到了一些 ChatGPT 生成 Python 代码的例子。然而,ChatGPT 为开发者提供的功能远不止这些示例。它可以成为代码生成、解释和调试的日常助手。

无论您是后端/前端开发者、数据科学家还是数据工程师,只要您使用编程语言,ChatGPT 都可以成为游戏规则的改变者;在接下来的几个示例中,我们将看到这一点。

从下一节开始,我们将更深入地探讨 ChatGPT 在处理代码时可以实现的具体示例。我们将看到涵盖不同领域的端到端用例,以便我们熟悉使用 ChatGPT 作为代码助手。

生成、优化和调试代码

您应该利用的主要功能是 ChatGPT 代码生成。您有多少次寻找一个现成的代码片段来开始?或者寻找可以生成函数、样本数据集、SQL 模式等的代码?ChatGPT 能够根据自然语言输入生成代码:

计算机程序截图,自动生成描述

图 5.1:ChatGPT 生成用于写入 CSV 文件的 Python 函数的示例

如你所见,ChatGPT 不仅能够生成函数,还能够解释函数的功能、如何使用它以及如何在通用占位符,如my_folder中进行替换。

现在让我们提高难度。如果 ChatGPT 能够生成一个 Python 函数,那么它能否生成一个完整的视频游戏呢?让我们试试。我想做的是向 ChatGPT 提供一个我想开发的游戏的示例,并要求它用代码来复制它。以下是我想要的游戏的示例(你能猜到名字吗?):

《吃豆人》如何改变游戏产业 | 麻省理工学院出版社读者

图 5.2:游戏《吃豆人》的插图

现在,让我们要求 ChatGPT 重新生成它:

![图片 B31559_05_03.png]

图 5.3:ChatGPT 生成 HTML、CSS 和 JS 代码的示例

如 ChatGPT 的免责声明所示,完整的游戏需要大量的代码;然而,让我们看看到目前为止生成的代码是如何工作的(为了运行代码,我使用了在线工具codepen.io):

视频游戏截图,自动生成描述

图 5.4:ChatGPT 生成的《吃豆人》游戏

如你所见,草稿产品已经非常接近我想要的目标了!这是生成式 AI 如何帮助你克服从头开始的困难的一个例子;事实上,从一张白纸开始有时可能会阻碍进程,而有一个草稿产品作为起点不仅可以加快整体过程,还可以激发创造力并提高结果的质量。

ChatGPT 也可以成为代码优化的优秀助手。实际上,它可能通过优化我们输入的脚本来为我们节省一些运行时间或计算能力。这种能力在自然语言领域可以与我们在“提高写作技巧和翻译”部分的第四章中看到的写作辅助功能相提并论。

例如,假设你想从一个列表中创建一个以另一个列表为起始点的奇数列表。为了达到这个结果,你将编写以下 Python 脚本(为了这个练习的目的,我还会使用timeitdatetime库来跟踪执行时间):

from timeit import default_timer as timer
from datetime import timedelta
start = timer()
elements = list(range(1_000_000)) data = []
for el in elements: if not el % 2: # if even number
data.append(el)
end = timer() print(timedelta(seconds=end-start)) 

让我们看看它们运行需要多长时间:

计算机程序截图,自动生成描述

图 5.5:Python 函数的执行速度

执行时间为00.115022秒。如果我们要求 ChatGPT 优化这个脚本会发生什么呢?

计算机程序截图,自动生成描述

图 5.6:ChatGPT 生成 Python 脚本的优化替代方案

ChatGPT 给了我两个示例,以更低的执行时间达到相同的结果。

让我们在 Jupyter 笔记本中测试这两个示例:

计算机程序屏幕截图 自动生成的描述

图 5.7:ChatGPT 生成的两个替代函数的执行速度

如您所见,两种方法分别将时间减少了 44.30%和 20.68%。

除了代码生成和优化之外,ChatGPT 还可以用于错误解释和调试。有时,错误很难解释;因此,自然语言解释对于识别问题和引导你走向解决方案是有用的。

例如,当我从命令行运行.py文件时,我得到了以下错误:

File "C:\Users\vaalt\Anaconda3\lib\site-packages\streamlit\elements\text_widgets.py", line 266, in _text_input text_input_proto.value = widget_state.value
TypeError: [] has type list, but expected one of: bytes, Unicode 

让我们看看 ChatGPT 是否能够让我理解错误的本质。为了做到这一点,我只需向 ChatGPT 提供错误的文本,并要求它给我一个解释:

图片

图 5.8:ChatGPT 用自然语言解释 Python 错误

最后,让我们假设我写了一个 Python 函数,它接受一个字符串作为输入,并返回在每个字母后面带有下划线的相同字符串。

在先前的例子中,我预期看到g_p_t_的结果;然而,它只返回了t_,使用以下代码:

计算机程序屏幕截图 自动生成的描述

图 5.9:有错误的 Python 函数

让我们请 ChatGPT 为我们调试这个函数:

计算机屏幕截图 自动生成的描述

图 5.10:ChatGPT 调试 Python 函数的示例

非常令人印象深刻,不是吗?再次,ChatGPT 提供了正确的代码版本,并帮助解释了错误在哪里以及为什么会导致错误的结果。让我们看看它现在是否有效:

计算机程序屏幕截图 自动生成的描述

图 5.11:ChatGPT 调试后的 Python 函数

嗯,显然是有效的!

这些以及其他许多与代码相关的功能真的可以大大提高你的生产力,缩短执行许多任务的时间。

然而,ChatGPT 的功能远不止纯调试。得益于 GPT 模型的不可思议的语言理解能力,这个生成式 AI 工具能够与代码一起生成适当的文档,并准确解释一段代码将做什么,我们将在下一节中看到。

生成文档和代码可解释性

无论你是在处理新的应用程序或项目,将你的代码与文档关联起来总是一个好的实践。这可能以 docstring 的形式存在,你可以将其嵌入到你的函数或类中,以便其他人可以直接在开发环境中调用它们。

例如,让我们考虑上一节中开发的相同函数,并将其制作成一个 Python 类:

class UnderscoreAdder:
def __init__(self, word):
    self.word = word
def add_underscores(self):
    return "_".join(self.word)  # More efficient 

我们可以这样测试:

计算机程序屏幕截图 自动生成的描述

图 5.12:测试 UnderscoreAdder 类

现在,假设我想能够使用UnderscoreAdder?约定检索文档字符串文档。通过使用 Python 包、函数和方法这样做,我们就有了对该特定对象功能的完整文档,如下(以pandas Python 库为例):

图片

图 5.13:pandas 库文档示例

因此,现在让我们让 ChatGPT 为我们生成UnderscoreAdder类的相同结果。

计算机屏幕截图 自动生成的描述

图 5.14:ChatGPT 更新带有文档的代码

因此,如果我们像前面代码中那样使用UnderscoreAdder?更新我们的类,我们将得到以下输出:

计算机程序屏幕截图 自动生成的描述

图 5.15:新的UnderscoreAdder类文档

最后,ChatGPT 还可以用来用自然语言解释脚本、函数、类或其他类似事物的作用。我们已经看到了许多 ChatGPT 通过清晰的解释丰富其与代码相关响应的例子。然而,我们可以通过就代码理解提出具体问题来增强这一能力。

例如,让我们让 ChatGPT 为我们解释以下 Python 脚本的功能:

计算机屏幕截图 自动生成的描述

图 5.16:ChatGPT 解释 Python 脚本的示例

代码可解释性也可以是前面提到的文档的一部分,或者它可以在想要更好地理解其他团队复杂代码的开发者之间使用;(有时这也发生在我身上)记住他们之前写过的内容。

多亏了 ChatGPT 和本节中提到的功能,开发者可以轻松地用自然语言跟踪项目生命周期,这样新团队成员和非技术用户就能更容易地理解到目前为止完成的工作。

在下一节中,我们将看到代码可解释性是如何在数据科学项目中成为机器学习模型可解释性的关键步骤。

理解机器学习模型的可解释性

模型可解释性指的是人类理解机器学习模型预测背后逻辑的难易程度。本质上,这是理解模型如何做出决策以及哪些变量对其预测有贡献的能力。

让我们通过一个使用深度学习卷积神经网络CNN)进行图像分类的模型可解释性示例来了解一下。我使用 Python 和 Keras 构建了我的模型。为此,我将直接从keras.datasets下载 CIFAR-10 数据集;它包含 10 个类别(飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车)中的 60,000 个 32x32 彩色图像(因此是 3 通道图像),每个类别有 6,000 个图像。在这里,我将分享模型的主体部分;你可以在书籍的 GitHub 仓库中找到所有相关的代码,该仓库位于github.com/PacktPublishing/Modern-Generative-AI-with-ChatGPT-and-OpenAI-Models/tree/main/Chapter%206%20-%20ChatGPT%20for%20Developers/code

model=tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(32,kernel_ size=(3,3),activation='relu',input_shape=
(32,32,1)))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2,2))) model.add(tf.keras.layers.Flatten()) model.add(tf.keras.layers.Dense(1024,activation='relu')) model.add(tf.keras.layers.Dense(10,activation='softmax')) 

上述代码由几个执行不同操作的层组成。我可能对获取模型结构以及每层的用途的解释感兴趣。让我们请 ChatGPT 帮忙(以下是你可以看到的响应摘录):

计算机屏幕截图  自动生成描述

图 5.17:ChatGPT 的模型可解释性

如前图所示,ChatGPT 能够为我们清晰地解释我们 CNN 的结构和层。它还添加了一些注释和提示,例如使用最大池化层有助于减少输入的维度。

我还可以在验证阶段得到 ChatGPT 在解释模型结果方面的支持。因此,在将数据分为训练集和测试集并在训练集上训练模型后,我想看看它在测试集上的表现:

图 5.18:评估指标

让我们再请 ChatGPT 详细说明我们的验证指标(截断输出):

计算机屏幕截图  自动生成描述

图 5.19:ChatGPT 解释评估指标示例

再次强调,结果真的很令人印象深刻,它为如何设置训练集和测试集的机器学习实验提供了清晰的指导。它解释了为什么模型足够泛化非常重要,这样它就不会过拟合,并且能够对它以前从未见过的数据进行准确预测。

模型可解释性之所以重要,有很多原因。一个关键因素是它缩小了业务用户与模型背后的代码之间的差距。这对于使业务用户能够理解模型的行为,并将其转化为有用的商业想法至关重要。

此外,模型可解释性使得负责任和道德 AI 的一个关键原则——模型背后 AI 系统的思考和行为的透明度——成为可能。解锁模型可解释性意味着检测模型在生产过程中可能存在的潜在偏差或有害行为,并防止其发生。

总体而言,ChatGPT 可以在模型可解释性的背景下提供有价值的支持,在行级别生成见解,正如我们在前面的例子中所看到的。

接下来我们将探讨 ChatGPT 的下一个也是最后一个功能,这将进一步提高开发者的生产力,尤其是在同一个项目中使用了多种编程语言的情况下。

不同编程语言之间的翻译

第四章中,我们看到了 ChatGPT 在翻译不同语言之间具有强大的能力。真正令人难以置信的是,自然语言并不是它的唯一翻译对象。实际上,ChatGPT 能够在不同的编程语言之间进行翻译,同时保持相同的输出和风格(即,如果存在,它将保留 docstring 文档)。

有许多场景,这可能会成为游戏规则的改变者。

例如,你可能需要学习一种全新的编程语言或你从未见过的统计工具,因为你需要快速交付一个基于该语言的工程项目。借助 ChatGPT,你可以开始用你偏好的语言进行编程,然后让它翻译成你想要的语言,在这个过程中你将学习到新的编程语言。

想象一下,项目需要用 MATLAB(MathWorks 开发的一种专有数值计算和编程软件)交付,而你一直使用 Python 进行编程。该项目包括从修改后的国家标准与技术研究院MNIST)数据集(原始数据集描述和相关论文可在yann.lecun.com/exdb/mnist/找到)中分类图像。该数据集包含大量的手写数字,常被用于教授各种图像处理系统。

首先,我编写了以下 Python 代码来初始化一个用于分类的深度学习模型:

from tensorflow.keras import layers
# Load the MNIST dataset
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_ data()
# Preprocess the data
x_train = x_train.reshape(-1, 28*28) / 255.0 x_test = x_test.reshape(-1, 28*28) / 255.0 y_train = keras.utils.to_categorical(y_train) y_test = keras.utils.to_categorical(y_test)
# Define the model architecture model = keras.Sequential([
layers.Dense(256, activation='relu', input_shape=(28*28,)), layers.Dense(128, activation='relu'),
layers.Dense(10, activation='softmax')
])
# Compile the model
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Train the model
history = model.fit(x_train, y_train, validation_split=0.2, epochs=10, batch_size=128)
# Evaluate the model
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=0) print('Test accuracy:', test_acc) 

现在我们来看看,如果我们将前面的代码作为上下文提供给 ChatGPT 并要求它将其翻译成 MATLAB 会发生什么:

计算机程序截图,描述自动生成

图 5.20:ChatGPT 将 Python 代码翻译成 MATLAB

代码翻译也可以缩小新技术与当前编程能力之间的技能差距。

代码翻译的另一个关键含义是 应用程序现代化。确实,想象一下,你想刷新你的应用程序堆栈,即迁移到云端。你可以决定从简单的提升和转移到 基础设施即服务IaaS)实例(如 Windows 或 Linux 虚拟机VMs))开始。然而,在第二阶段,你可能想要重构、重新设计或甚至重建你的应用程序。

下图展示了应用程序现代化的各种选项:

图 5.21:您可以将应用程序迁移到公共云的四种方式

ChatGPT 和 OpenAI Codex 模型可以帮助您进行迁移。以主机为例。

主机计算机主要被大型组织用于执行诸如人口普查、消费者和行业统计、企业资源规划和大规模交易处理等活动的批量数据处理等基本任务。主机环境的应用程序编程语言是 通用商业面向语言COBOL)。尽管它是在 1959 年发明的,但 COBOL 仍然在使用中,并且是现存最古老的编程语言之一。

随着技术的不断进步,驻留在主机领域中的应用程序一直处于持续迁移和现代化的过程中,旨在增强现有遗留主机基础设施在接口、代码、成本、性能和维护性等方面的能力。

当然,这意味着将 COBOL 翻译成更现代的编程语言,如 C# 或 Java。问题是 COBOL 对大多数新一代程序员来说都是未知的;因此,在这个背景下存在巨大的技能差距。

让我们考虑一个 COBOL 脚本,该脚本读取一个输入数字,将其加 10,然后打印结果:

 IDENTIFICATION DIVISION.
       PROGRAM-ID. AddTen.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  INPUT-NUMBER    PIC 9(5).
       01  RESULT-NUMBER   PIC 9(5).
       PROCEDURE DIVISION.
           DISPLAY 'Enter a number: '.
           ACCEPT INPUT-NUMBER.
           COMPUTE RESULT-NUMBER = INPUT-NUMBER + 10.
           DISPLAY 'Result after adding 10: ' RESULT-NUMBER.
           STOP RUN. 

我随后将之前的 COBOL 脚本传递给 ChatGPT,以便它能够将其作为上下文来制定其响应。现在让我们让 ChatGPT 将该脚本翻译成 C#:

图 5.22:ChatGPT 将 COBOL 翻译成 C# 的示例

像 ChatGPT 这样的工具可以通过引入一个了解编程过去和未来的层来帮助减少在这个和类似场景中的技能差距。

总之,ChatGPT 可以成为应用程序现代化的有效工具,除了提供代码升级外,还能提供有价值的见解和建议,以增强遗留系统。凭借其先进的语言处理能力和广泛的知识库,ChatGPT 可以帮助组织简化现代化努力,使过程更快、更高效、更有效。

在画布上与代码协作

第四章 中,我们提到了新的 ChatGPT 画布功能,它允许用户在协作工作区中动态修改模型的响应。然而,当涉及到代码开发时,这个功能真正闪耀。

实际上,它提供了一个代码开发、执行和调试的环境。

让我们看看一个例子。我们将从一个简单的查询开始,向 ChatGPT 提问:

图 5.23:使用 ChatGPT 生成代码

如预期,ChatGPT 能够生成所需的代码。现在,如果我们点击编辑图标,我们将能够访问画布工作区,在那里我们可以:

  • 修改代码:

图 5.24:使用画布工作区修改代码

  • 运行代码并在控制台中查看结果:

图 5.25:无缝测试和修改代码

这对软件开发来说是一个变革性的进步;这意味着在与 ChatGPT 交互的同时,你有机会无缝测试和执行代码,而无需离开这个应用切换到你的开发环境。

让我们更进一步。另一种与画布交互的方式是通过将其作为工具调用:

图 5.26:直接调用画布

通过这样做,ChatGPT 将自动进入代码工作状态。让我们提出与之前相同的问题,但这次直接利用画布工具。

在这种情况下,ChatGPT 将直接为我们打开一个画布工作区,提供额外的编码工具:

图 5.27:画布工作区

使用这些工具,你有四个主要功能:

  • 添加注释功能向 ChatGPT 提供指令,在你在工作的画布上修改你的代码

  • 添加日志功能将打印语句或日志机制插入到你的代码中,有助于跟踪执行流程和诊断问题

  • 通过选择修复错误快捷键,ChatGPT 会分析你的代码以识别和纠正错误,增强代码可靠性

  • 转换为其他语言功能可以将你的代码无缝转换为另一种编程语言

通过整合这些功能,ChatGPT 的画布提供了一个全面的代码开发、执行和调试环境,提高了生产力并促进了更流畅的编码工作流程。

摘要

ChatGPT 可以成为开发者提升技能和简化工作流程的有价值资源。我们首先看到 ChatGPT 如何生成、优化和调试你的代码,但也涵盖了其他功能,例如在代码旁边生成文档、解释你的机器学习模型,以及在不同编程语言之间进行翻译以实现应用现代化。

不论你是经验丰富的开发者还是初学者,ChatGPT 都提供了一个强大的学习和成长工具,缩小了代码与自然语言之间的差距。

在下一章中,我们将深入探讨另一个应用领域,ChatGPT可能会成为一个变革者:市场营销。

加入我们的 Discord 和 Reddit 社区

对本书有任何疑问或想参与关于生成式 AI 和大型语言模型(LLMs)的讨论?加入我们的 Discord 服务器packt.link/I1tSU,以及我们的 Reddit 频道packt.link/jwAmA,与志同道合的爱好者们连接、分享和协作。

第六章:用 ChatGPT 精通营销

在本章中,我们将关注营销人员如何利用 ChatGPT,探讨 ChatGPT 在该领域的主要应用案例,以及营销人员如何将其作为有价值的助手来利用。

我们将学习 ChatGPT 如何协助以下活动:

  • 利用 ChatGPT 进行营销

  • 新产品开发和市场进入策略

  • 营销比较的 A/B 测试

  • 通过搜索引擎优化提高网站和帖子的效率

  • 文本数据的情感分析

到本章结束时,您将能够利用 ChatGPT 进行与营销相关的活动,并提高您的生产力。

技术要求

您需要 OpenAI 账户才能访问 ChatGPT。请参考第二章了解如何创建 ChatGPT 账户。您可以在本书配套的 GitHub 仓库中找到本章的完整代码:github.com/PacktPublishing/Practical-GenAI-with-ChatGPT-Second-Edition

利用 ChatGPT 进行营销

营销是那些领域之一,ChatGPT 和 OpenAI 模型的创造力可以以最纯粹的形式得到利用。

它们可以是支持新产品、营销活动、搜索引擎优化SEO)等方面的实用工具。总的来说,营销人员自动化并简化了许多工作流程,同时提高了营销工作的质量和效果。

这里有一个例子。ChatGPT 在营销中最突出和最有前途的应用案例之一是个性化营销。例如,营销团队可以使用 ChatGPT 分析客户数据,并开发针对特定客户偏好和行为的定向电子邮件活动。这可以增加转换的可能性,并导致更高的客户满意度。通过提供客户情感和行为洞察,生成个性化的营销信息,提供个性化的客户支持,并生成内容,ChatGPT 可以帮助营销人员提供卓越的客户体验并推动业务增长。

这是 ChatGPT 在营销中应用的许多例子之一。在接下来的章节中,我们将探讨 ChatGPT 支持的端到端营销项目的具体实例。

注意,在某些部分,我将添加一个额外的提示增强部分,供您尝试一些更高级的选项,以用于您自己的项目。

新产品开发和市场进入策略

您可以将 ChatGPT 引入营销活动的第一种方式可能是作为新产品开发和市场进入GTM)策略中的助手。

在本节中,我们将逐步介绍如何开发和推广一款新产品。我们已经有了一个名为 RunFast 的运动服装品牌,到目前为止,我们只生产鞋子,因此我们希望通过新的产品线来扩展我们的业务。我们将从头脑风暴想法开始,以创建一个 GTM(Go To Market)策略。当然,这一切都由 ChatGPT 提供支持:

  • 头脑风暴想法:ChatGPT 可以支持我们的第一件事是头脑风暴和为新产品线起草选项。它还将提供每个建议背后的推理。所以,让我们询问我们应该关注哪种新产品线:

手机截图  自动生成的描述

图 6.1:ChatGPT 生成的新想法示例

在三个建议中,我们将选择第二个,因为它可以带来积极的环境影响,同时提升我们的品牌声誉。更具体地说,我们将从环保型运动袜开始。

  • 产品名称:现在我们已经确定了想法,我们需要为它想一个吸引人的名字。同样,我们将再次询问 ChatGPT 以获取更多选项,然后我们可以从中选择我们最喜欢的一个:

聊天截图  自动生成的描述

图 6.2:潜在产品名称列表

GreenStride听起来对我足够好了——我会继续使用这个名字。

  • 生成吸引人的标语:除了产品名称之外,我们还想分享名称背后的意图和产品线的使命,以便我们的目标受众能够被它吸引。我们希望激发客户的信任和忠诚,并让他们在我们的新产品线的背后看到自己的影子。

聊天截图  自动生成的描述

图 6.3:我们新产品名称的标语列表

太好了——现在我对将要使用的商品名称和标语感到满意,这些将在稍后用于创建独特的社交媒体公告。在这样做之前,我想花更多的时间进行目标受众的市场研究。

图片

图 6.4:我新产品线要接触的目标人群群体列表

在心中考虑你受众的不同群体是很重要的,这样你就可以区分你想传达的信息。在我的情况下,我想确保我的产品线能够满足不同的人群,例如竞技跑者、休闲跑者和健身爱好者。

  • 产品变体和销售渠道:根据前面的潜在客户群体,我可以生成产品变体,以便它们更针对特定的受众:

文档的特写  自动生成的描述

图 6.5:产品线变体的示例

类似地,我也可以要求 ChatGPT 为前面提到的每个群体提出不同的销售渠道:

文档特写 自动生成的描述

图 6.6:ChatGPT 对不同销售渠道的建议

  • 脱颖而出于竞争:我想让我的产品线在非常饱和的市场中脱颖而出,并具有独特性。本着这个目的,我要求 ChatGPT 包括社会考虑因素,如可持续性和包容性。让我们请 ChatGPT 在这方面提一些建议:

图片

图 6.7:ChatGPT 生成的突出特征示例

如您所见,它能够生成有趣的特征,使我的产品线独具特色。

  • 产品描述:现在是我们开始构建 GTM 计划的时候了。首先,我想为我的网站生成一个产品描述,包括所有之前独特的差异化因素。

网站截图 自动生成的描述

图 6.8:ChatGPT 生成的描述和 SEO 关键词示例

  • 公平价格:另一个关键要素是为我们的产品确定一个公平的价格。由于我为不同受众(竞技跑者、休闲跑者和健身爱好者)区分了产品变体,我也希望有一个考虑这种聚类的价格范围。请注意,在以下示例中,ChatGPT 正在调用网络搜索插件来检索有关当前跑步袜市场价格的最新信息。

图片

图 6.9:产品变体的价格范围

我们几乎完成了。我们已经经历了许多新产品开发和 GTM 步骤,在每个步骤中,ChatGPT 都扮演了一个伟大的支持工具。

最后,我们可以请 ChatGPT 为我们新产品生成一条 Instagram 帖子,包括相关的标签和 SEO 关键词。然后我们可以生成 DALL-E 图像,它作为 ChatGPT Plus 中的一个嵌入式插件。

图片

图 6.10:ChatGPT 生成的社交媒体帖子

此外,得益于 DALL-E 的特殊贡献:

电脑截图 自动生成的描述

图 6.11:由 DALL-E 3 驱动的 ChatGPT 生成的插图示例

这里是最终结果:

图片

图 6.12:由 ChatGPT 和 DALL-E 3 完全生成的 Instagram 帖子

当然,这里还缺少许多元素,以完成完整的产品开发和 GTM。然而,在 ChatGPT(以及 DALL-E 3 的特殊贡献)的支持下,我们成功地头脑风暴了一个新产品线及其变体、潜在客户、吸引人的口号,以及生成了一条相当不错的 Instagram 帖子来宣布 GreenStride 的上市!

奖励提示

当谈到头脑风暴营销想法时,一个你可能想尝试的不错的提示模板是游戏玩法技术。

提示

让我们玩一个游戏来头脑风暴营销想法!

  1. 游戏规则:
  • 你将扮演[特定角色,例如,营销专家,创意消费者]。

  • 为[特定产品或服务]提供营销想法。

  • 遵循每一轮提供的主题或限制。

  1. 游戏回合:
  • 第一轮:[初始挑战或主题,例如,社交媒体活动]。

  • 第二轮:[引入新的限制,例如,环保焦点]。

  • 第三轮:[探索突破常规的方法,例如,游击营销]。

  1. 评分标准:
  • 理念将根据创意、可行性和与业务目标的一致性进行评估。

让我们从第一轮开始:[描述产品/服务和目标受众]。你能想出什么想法?

使用游戏提示技巧进行头脑风暴使过程更具创意、吸引力和高效性。将头脑风暴视为游戏鼓励跳出思维定式。

游戏引入了限制和意外的角度,导致新的想法。它们还使头脑风暴更有趣和难忘,提高动力。

当涉及到目标受众识别时,另一个有趣的提示技术可以是“反转互动”方法。在这种方法中,ChatGPT 通过提问来引导对话,收集信息,旨在实现特定目标。

例如,指导模型“我想提高我的公共演讲技巧;请问我问题以确定改进的区域”使 ChatGPT 能够引导用户通过自我评估过程。以下是一个例子。

提示:

我的目标是为我们新的环保产品线开发营销活动。请问我问题以确定我们的目标受众和关键信息策略。继续提问,直到你收集到足够的信息来提供全面的目标受众画像和信息策略计划。确保涵盖以下主题:

角色属性:

人口统计:你理想客户的可能年龄范围、收入水平、教育程度和居住地是什么?

心理统计:他们可能有哪些价值观、兴趣或爱好?

行为:你预计他们如何购物、与品牌互动或做出购买决定?

产品适配:

这个产品为每个角色解决了什么具体问题?

这个产品将如何使他们的生活变得更轻松或更好?

验证:

这些角色与真实世界数据或现有客户相比如何?

我们是否应该探索其他细分市场?

让我们开始吧!

使用这种方法,你正在迫使 ChatGPT 提问,从而明确意图(或在这种情况下,目标受众的属性)。

市场比较的 A/B 测试

ChatGPT 可以协助营销人员的一个有趣领域是 A/B 测试。

A/B 测试在营销中是一种比较两个不同版本的市场营销活动、广告或网站以确定哪个表现更好的方法。在 A/B 测试中,创建了同一活动或元素的两种变体,两个版本之间只有一个变量不同。目标是查看哪个版本能产生更多的点击、转化或其他期望的结果。

A/B 测试允许营销人员优化他们的活动和元素以实现最大效果,从而带来更好的结果和更高的投资回报率。

由于这种方法涉及生成相同内容的许多变体,ChatGPT 的生成能力肯定可以帮助在这个方面。

让我们考虑以下例子:

我正在推广我开发的新产品:一款专为速度攀岩者设计的新款、轻便、薄的攀岩安全带。我已经进行了一些市场调研,并且我知道我的目标受众。我还知道,对于这个受众群体来说,一个很好的沟通渠道是在在线攀岩博客上发布,其中大多数攀岩馆的会员都是读者。我的目标是创建一篇出色的博客文章来分享这款新安全带的发布,并且我想在两组人中测试它的两个不同版本。

我即将发布的博客文章,并且我希望它是我的 A/B 测试的对象如下:

图片

图 6.13:发布攀岩装备的博客文章示例

在这里,ChatGPT 可以在两个层面上帮助我们:

  • 第一个层面是重新措辞文章,使用不同的关键词或不同的吸引注意力的口号。为此,一旦这篇文章提供为上下文,我们就可以要求 ChatGPT 对文章进行工作并稍微改变一些元素:

图片

图 6.14:ChatGPT 生成的新版博客文章

根据我的要求,ChatGPT 能够仅重新生成我要求的元素(标题、副标题和结束语),这样我可以通过观察两个受众群体的反应来监控这些元素的有效性。

图片

图 6.15:攀岩博客上发布的示例博客文章

我们可以直接向 ChatGPT 提供 HTML 代码,并要求它更改一些布局元素,例如按钮的位置或它们的文字。例如,与其说是“立即购买”,不如说一个“我想要一个!”按钮更能吸引读者的注意。

因此,让我们向 ChatGPT 提供 HTML 源代码:

计算机程序截图 自动生成描述

图 6.16:ChatGPT 更改 HTML 代码

让我们看看输出结果是什么样的(我也更改了标题、副标题和段落,用 ChatGPT 生成的那些):

一个正在攀岩的人 描述自动生成

图 6.17:网站的全新版本

如您所见,ChatGPT 仅在按钮级别进行干预,略微改变了它们的布局、位置、颜色和文字。

总之,ChatGPT 是营销中 A/B 测试的有价值工具。它快速生成相同内容的不同版本的能力可以缩短新活动的上市时间。通过利用 ChatGPT 进行 A/B 测试,您可以优化您的营销策略,并最终为您的业务带来更好的结果。

奖励提示

在 A/B 测试的背景下,一种好的提示工程方法是所谓的替代方法模式。在提示工程中,这种模式涉及指示语言模型为给定问题生成多个解决方案或观点。这种技术利用模型产生多样化响应的能力,增强创造力并提供更广泛的选择范围。例如,当寻求提高客户参与度的方法时,您可能会提示,“你能提出各种提高客户参与度的策略吗?”然后模型会提供多种方法,如个性化营销、忠诚度计划或互动内容。

提示

你是一位创意内容策略师,负责为新产品攀岩绳索的发布生成 A/B 测试变体。你的目标是通过改变以下元素来提供两篇不同的博客内容版本:

  1. 标题

  2. 副标题

  3. 结尾句子

指令:

  1. 创建关注[特定角度,例如,强调速度和效率]的变体 A。

  2. 创建关注[替代角度,例如,安全性和多功能性]的变体 B。

  3. 确保两种变体都能吸引攀岩者,并针对博客内容进行优化。

可交付成果:

请按照以下格式提供您的回答:

<<<变体 A>>>

[插入变体 A 的内容]

<<<变体 A 结束>>>

<<<变体 B>>>

[插入变体 B 的内容]

<<<变体 B 结束>>>

这种方法在头脑风暴会议中特别有用,因为它鼓励探索不同的可能性,并减少专注于单一解决方案的可能性。

提升 SEO

ChatGPT 成为颠覆者的另一个有希望的领域是SEO。这是在搜索引擎如 Google 或 Bing 中排名的关键元素,它决定了您的网站是否对寻找您产品的用户可见。

定义

SEO 是一种用于提高网站在搜索引擎结果页面SERPs)上的可见性和排名的技术。这是通过优化网站或网页来增加来自搜索引擎的有机(未付费)流量数量和质量来实现的。SEO 的目的是通过针对特定的关键词或短语来优化网站,以吸引更多目标访客。

假设你经营一家名为 Hat&Gloves 的电子商务公司,正如你可能猜到的,该公司只销售帽子和大衣。你现在正在创建你的电子商务网站,并希望优化其排名。让我们让 ChatGPT 列出一些相关的关键词,以便嵌入我们的网站:

计算机屏幕截图  描述自动生成

图 6.18:ChatGPT 生成的 SEO 关键词示例

如您所见,ChatGPT 能够创建一个关键词列表。

SEO 的另一个关键要素是搜索引擎意图。搜索引擎意图,也称为用户意图,指的是用户在搜索引擎中进行的特定搜索查询的潜在目的或目标。理解搜索引擎意图很重要,因为它有助于企业和营销人员创建更精准和有效的内 容和营销策略,这些策略与搜索者的需求和期望相一致。

通常有四种类型的搜索引擎意图:

  • 信息意图:用户正在寻找特定主题或问题的信息,例如 “法国的首都是什么?”“如何在家制作披萨。”

  • 导航意图:用户正在寻找特定的网站或网页,例如 Facebook 登录Amazon.com

  • 商业意图:用户正在寻找购买产品或服务,但可能还没有做出最终决定。商业意图搜索的例子包括 1000 美元以下的最佳笔记本电脑在线折扣鞋

  • 交易意图:用户有一个特定的目标来完成交易,这可能涉及实物购买或订阅服务。交易意图的例子可能包括 购买 iPhone 13注册健身房会员

通过理解特定搜索查询背后的意图,企业和营销人员可以创建更精准和有效的内 容,以满足目标受众的需求和期望。这可能导致更高的搜索引擎排名、更多的流量,最终,更多的转化和收入。

现在,问题是,ChatGPT 能否确定给定请求的意图?在回答之前,值得注意的是,推断给定提示的意图的活动是包括 GPT 在内的大型语言模型(LLMs)的核心业务。所以,当然,ChatGPT 能够捕捉提示的意图。

这里的附加值在于,我们希望看到 ChatGPT 是否能够在具有精确分类的精确领域(即营销领域)中确定意图。这就是为什么提示设计再次成为引导 ChatGPT 走向正确方向的关键。

计算机屏幕截图  自动生成的描述

图 6.19:ChatGPT 按用户意图聚类的关键词示例

最后,我们还可以进一步利用“扮演…”技巧,这在第三章中已经提到过。确实很有趣,如果我们能对我们的网站进行评估,了解它是否按照预期进行了优化。在营销中,这种分析被称为SEO 审计。SEO 审计是对网站 SEO 性能和潜在改进区域的评估。通常由 SEO 专家、网站开发人员或营销人员执行,涉及对网站技术基础设施、内容和反向链接档案的全面分析。

在 SEO 审计过程中,审计员通常会使用一系列工具和技术来识别改进区域,例如关键词分析、网站速度分析、网站架构分析和内容分析。审计员随后将生成一份报告,概述关键问题、改进机会以及解决这些问题的建议措施。

让我们请 ChatGPT 扮演 SEO 专家来执行这项审计。作为参考网站,我们将使用上面提到的攀岩博客。我将给 ChatGPT 代码,并给出以下指示:“扮演 SEO 专家,对上述 HTML 代码生成一份简短的 SEO 审计(最多 300 字)。”这是回复:

计算机程序的一页  自动生成的描述

图 6.20:ChatGPT 在攀岩博客的 HTML 代码上生成 SEO 审计

ChatGPT 能够生成相当准确的分析,包括相关的评论和建议。总体而言,ChatGPT 在 SEO 相关活动方面具有有趣的潜力,无论是从零开始构建网站还是想要改进现有网站,它都可以成为一个好工具。

质量和客户满意度情感分析

情感分析是营销中用于分析和解释客户对品牌、产品或服务的情感和意见的技术。它涉及使用自然语言处理(NLP)和机器学习(ML)算法来识别和分类文本数据(如社交媒体帖子、客户评论和反馈调查)的情感。

通过执行情感分析,营销人员可以深入了解客户对其品牌的看法,识别改进区域,并基于数据驱动的决策来优化他们的营销策略。例如,他们可以跟踪客户评论的情感,以确定哪些产品或服务获得了正面或负面的反馈,并相应地调整他们的营销信息。

总体而言,情感分析是营销人员了解客户情感、衡量客户满意度并开发与目标受众产生共鸣的有效营销活动的重要工具。

情感分析已经存在了一段时间,所以你可能想知道 ChatGPT 能带来什么额外的价值。好吧,除了分析的准确性(它是目前市场上最强大的模型)之外,ChatGPT 与其他情感分析工具的不同之处在于它由一个 LLM 驱动;因此,它是“通用”的而不是“专用”的。

这意味着当我们使用 ChatGPT 进行情感分析时,我们并不是使用其专门为此任务设计的特定 API;ChatGPT 和 OpenAI 模型背后的核心思想是它们可以同时协助用户完成许多一般性任务,与任务互动并根据用户请求改变分析的范畴。

因此,ChatGPT 当然能够捕捉到给定文本的情感,比如 X/Twitter 帖子或产品评价。然而,ChatGPT 还可以更进一步,帮助识别产品或品牌中那些对情感有积极或消极影响的具体方面。例如,如果客户持续以负面方式提及产品的某个特定功能,ChatGPT 可以将其突出显示为需要改进的领域。或者,ChatGPT 可能被要求对特别敏感的评价生成回应,考虑到评价的情感并以此作为回应的上下文。再次,它可以生成报告,总结在评价或评论中找到的所有正面和负面元素,并将它们分类。

让我们考虑以下例子。一位客户最近从我的电子商务公司 RunFast 购买了一双鞋,并留下了以下评价:

“我最近买了 RunFast Prodigy 鞋子,感觉有些复杂。它们非常舒适,具有良好的缓震和支撑,减少了我在跑步时的脚部疲劳。设计也很吸引人,我收到了很多赞美。然而,耐用性令人失望;外底很快磨损,透气性上部的磨损迹象在几周后就出现了。考虑到高昂的价格,尽管它们舒适且设计出色,我还是犹豫是否推荐。”

让我们要求 ChatGPT 捕捉这个评价的情感:

图片

图 6.21:ChatGPT 分析客户评价

从前面的图中,我们可以看到 ChatGPT 并没有仅仅提供标签:它还解释了评价中具有混合情感的正面和负面元素,因此可以将其整体标记为中性。

注意

通常,情感分析的细微差别很棘手。当 ChatGPT 被给予少量提示以帮助它理解情感时,它表现得最好,正如我们在第三章中探讨的那样。关于这个话题的进一步讨论,你可以参考这里的一个初步研究:arxiv.org/abs/2304.04339

让我们深入探讨这个问题,并提出一些改进产品的建议:

图片

图 6.22:基于客户反馈的产品改进建议

最后,让我们生成一个响应给客户,表明我们作为一家公司确实关心客户的反馈,并希望改进我们的产品。

电子邮件截图,自动生成描述

图 6.23:ChatGPT 生成的响应

我们看到的例子是一个非常简单的例子,只有一个评论。现在,想象一下我们拥有大量的评论,以及多样化的销售渠道,我们从中获得反馈。想象一下 ChatGPT 和 OpenAI 模型等工具的力量,它们能够分析和整合所有这些信息,识别你产品的优点和缺点,以及捕捉客户趋势和购物习惯。此外,为了客户关怀和保留,我们还可以使用我们偏好的写作风格自动处理评论响应。事实上,通过调整聊天机器人的语言和语气以满足客户的特定需求和期望,你可以创造一个更具吸引力和有效性的客户体验。

这里有一些例子:

  • 同理心聊天机器人:一种使用同理心语气和语言与可能遇到问题或需要帮助处理敏感问题的客户互动的聊天机器人

  • 专业聊天机器人:一种使用专业语气和语言与可能寻求特定信息或需要帮助解决技术问题的客户互动的聊天机器人

  • 对话聊天机器人:一种使用轻松友好的语气与可能寻求个性化体验或进行更一般性咨询的客户互动的聊天机器人

  • 幽默聊天机器人:一种使用幽默和机智的语言与可能寻求轻松体验或缓解紧张局势的客户互动的聊天机器人

  • 教育聊天机器人:一种使用教学风格的沟通方式与可能想了解更多关于产品或服务的客户互动的聊天机器人

总之,ChatGPT 可以成为企业进行情感分析、提高质量和保留客户的有力工具。凭借其先进的 NLP 能力,ChatGPT 可以实时准确地分析客户反馈和评论,为企业提供有关客户情感和偏好的宝贵见解。通过将 ChatGPT 作为其客户体验策略的一部分,企业可以迅速识别可能对客户满意度产生负面影响的问题,并采取纠正措施。这不仅可以帮助企业提高质量,还可以增加客户忠诚度和保留率。

摘要

在本章中,我们探讨了 ChatGPT 如何被营销人员用来增强他们的营销策略。我们了解到 ChatGPT 可以帮助开发新产品以及定义其 GTM 策略,设计 A/B 测试,增强 SEO 分析,以及捕捉评论、社交媒体帖子和其他客户反馈的情感。

ChatGPT 对营销人员的重要性在于其潜力可以彻底改变公司与客户互动的方式。通过利用 NLP、ML 和大数据的力量,ChatGPT 使公司能够创建更个性化和相关的营销信息,提高客户支持和满意度,并最终推动销售和收入。

随着 ChatGPT 的持续发展和演变,我们可能会看到它在营销行业中的更多参与,尤其是在公司如何与客户互动的方式上。事实上,过度依赖 AI 使公司能够更深入地洞察客户行为和偏好。

对于营销人员来说,关键是要拥抱这些变化,适应 AI 驱动的营销的新现实,以便在竞争中保持领先并满足客户的需求。

在下一章中,我们将探讨本书中涵盖的 ChatGPT 应用的第三个也是最后一个领域——研究。

加入我们的 Discord 和 Reddit 社区

对本书有任何疑问或想参与关于生成式 AI 和 LLMs 的讨论?加入我们的 Discord 服务器packt.link/I1tSU和 Reddit 频道packt.link/jwAmA,与志同道合的爱好者连接、分享和协作。

Discord 二维码

第七章:用 ChatGPT 重新发明研究

本章是为希望利用 ChatGPT 的研究者准备的。本章将介绍 ChatGPT 可以解决的几个主要用例,以便你通过具体示例了解 ChatGPT 在研究中的应用。

到本章结束时,你将熟悉以多种方式使用 ChatGPT 作为研究助手,包括以下内容:

  • 研究者对 ChatGPT 的需求

  • 为你的研究头脑风暴文献

  • 为你的实验设计和框架提供支持

  • 生成和格式化参考文献,以便纳入你的研究

  • 生成研究展示

本章还将提供示例,并使你能够亲自尝试这些提示。

研究者对 ChatGPT 的需求

ChatGPT 可以成为研究人员在广泛领域中的极其宝贵的资源。作为一个在大量数据上训练的复杂语言模型,ChatGPT 可以快速准确地处理大量信息,并生成通过传统研究方法可能难以或耗时才能发现的见解。

此外,ChatGPT 可以通过分析可能对人类研究者来说并不立即明显的变化模式和趋势,为研究人员提供其领域的独特视角。例如,想象一位研究气候变化并希望了解公众对此问题看法的研究者。他们可能会要求 ChatGPT 分析与气候变化相关的社交媒体数据,并识别在线人们表达的最常见的主题和情感。然后,ChatGPT 可以为研究者提供一份全面的报告,详细说明与这一主题相关的最常见词汇、短语和情感,以及任何可能有用的新兴趋势或模式。

通过与 ChatGPT 合作,研究人员可以获取尖端技术和见解,并保持在他们的领域前沿。

让我们现在深入探讨四个 ChatGPT 可以提升研究生产力的用例。

注意

本章中提出的多数示例都是基于最新信息的;实际上,你将经常看到 ChatGPT 利用网络搜索插件。

为你的研究头脑风暴文献

文献综述是对特定主题或问题现有已发表研究的批判性和系统性的审查过程。它涉及搜索、审查和综合相关已发表的研究和其他来源,如书籍、会议记录和同行评审文献。文献综述的目的是在特定领域识别研究空白、不一致性和进一步研究的机遇。

文献综述过程通常包括以下步骤:

  1. 定义研究问题:进行文献综述的第一步是定义感兴趣主题的研究问题。比如说,我们正在进行关于社交媒体对心理健康影响的研究。现在,我们感兴趣的是头脑风暴一些可能的研究问题,以便将研究聚焦,我们可以利用 ChatGPT 来完成这项工作:

图片

图 7.1:基于给定主题的研究问题示例

这些都是可以进一步研究的有意思的问题。由于我对第一个问题特别感兴趣——“社交媒体使用频率和类型如何影响青少年的焦虑和抑郁水平?”——我将把它作为我们分析下一步的参考。

  1. 搜索文献:既然我们已经明确了研究问题,下一步就是使用各种数据库、搜索引擎和其他来源来搜索相关文献。研究人员可以使用特定的关键词和搜索词来帮助识别相关的研究。

图片

图 7.2:在 ChatGPT 支持下进行的文献搜索

从 ChatGPT 的建议开始,我们可以开始深入研究这些参考文献。

  1. 筛选文献:一旦确定了相关文献,下一步就是筛选这些研究,以确定它们是否符合综述的纳入标准。这通常涉及审查摘要,必要时还要审查全文。比如说,如果我们想深入研究《社交媒体与青少年焦虑:哈佛大学教育学院见解》这篇研究论文。我们可以让 ChatGPT 为我们筛选:

图片

图 7.3:特定论文的文献筛选

ChatGPT 能够为我提供论文的概述。考虑到其研究问题和主要讨论主题,我认为这对我的研究将非常有用。

  1. 提取数据:在确定了相关研究之后,研究人员需要从每项研究中提取数据,例如研究设计、样本量、数据收集方法和关键发现。例如,假设我们想从 Hinduja 和 Patchin 于 2018 年发表的论文《数字自残:流行率、动机和结果》中收集以下信息:

    • 论文中收集的数据来源和研究主题

    • 研究者采用的数据收集方法

    • 数据样本量

    • 分析的主要局限性和缺点

    • 研究者采用的实验设计

下面是具体步骤:

图片

图 7.4:从给定论文中提取相关数据和框架

  1. 综合文献:文献综述过程的最后一步是综合研究的结果,并就该领域的知识现状得出结论。这可能包括识别共同主题,突出文献中的差距或不一致,以及确定未来研究的机遇。

让我们设想,除了 ChatGPT 提出的论文外,我们还收集了其他我们想要综合的标题和论文。更具体地说,我们想要了解它们是否得出相同的结论,共同趋势是什么,以及哪种方法可能比其他方法更可靠。对于这种情况,我们将考虑三篇研究论文:

下面是结果呈现的方式:

图 7.5:三篇研究论文的文献分析和基准比较

此外,在这种情况下,ChatGPT 能够对提供的这三篇论文产生相关的总结和分析,包括方法之间的基准比较和可靠性考虑。

总体而言,ChatGPT 能够在文献综述领域执行许多活动,从研究问题头脑风暴到文献综合。正如往常一样,需要一个领域专家(SME)参与其中以审查结果;然而,在 ChatGPT 的帮助下,许多活动可以更高效地完成。

注意

作为一项常见的最佳实践,建议在发布任何由 AI 工具(可能是 ChatGPT 或类似工具)开发(即使部分开发)的内容时,始终添加免责声明。这确保了与您产品(研究论文、文章、书籍等)的最终用户之间的透明度,并使他们处于更容易接受潜在偏见或幻觉的位置。

ChatGPT 还可以支持另一个活动,即设计研究人员想要执行的研究实验。我们将在下一节中探讨这一点。

奖励提示

当我们与 ChatGPT 互动,就可能的研究问题进行头脑风暴时,一种好的提示技术可能是问题细化提示。采用这种方法,LLM 将用户引导通过一系列迭代以最终确定一个问题。让我们看看一个例子:

迭代问题细化以进行研究头脑风暴

目标:通过与 ChatGPT 的迭代反馈和对话,共同细化有影响力的研究问题。

第一步:初步头脑风暴

提示:“我正在进行一个关于 [插入领域/主题] 领域的研究。我感兴趣的具体领域是 [插入具体领域或主题]。请生成 5 个初步研究问题,探讨该领域的关键挑战、趋势或知识差距。”

第二步:细化

跟进提示:“感谢你的问题!以下是我的反馈:

问题 [插入编号] 需要更多地关注 [插入关注领域]。

问题 [插入编号] 感觉太宽泛。你能将其缩小到关注 [特定方面] 吗?

问题 [插入编号] 很有吸引力,但可以通过解决 [特定受众、结果或数据] 来受益。

根据这个反馈,改进问题以更好地符合我的目标。”

第三步:最终润色

跟进提示:“我赞赏这些改进。现在:

将问题 [插入编号] 的元素合并成一个连贯的问题。

确保语言清晰简洁。

建议任何最终调整以使这些问题更具影响力。”

采用这种方法,我们正在“鼓励”模型逐步工作并逐步完善其输出。

另一种有趣的提示技术,这对于构建查询输出非常有用,是利用所谓的提示模式。由 Jules White 博士及其同事开发,提示模式是可重复使用的解决方案,旨在解决与 LLM 交互时遇到的常见挑战。它们的功能类似于软件设计模式,通过提供结构化方法在 LLM 交互中实现特定结果。这种方法在他们的论文《A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT》中有详细说明(原始目录可在arxiv.org/abs/2302.11382找到)。

例如,当从文档中提取相关信息(如本节所述)时,我们可能想要确保收集到具体元素,如研究问题或研究设计:

提示

我需要一个结构化的模板,以便高效地从研究论文中提取关键数据。该模板应包括以下部分:

论文详情(标题、作者、年份、期刊、DOI/URL)。

研究问题(或目标)。

研究设计(例如,实验性、观察性、荟萃分析)。

方法(样本大小、数据收集技术、使用的工具)。

关键发现或结果。

局限性和建议。

请将此模板格式化为表格或清单,以便研究人员在审阅论文时容易填写。

使用这样的模板模式,你可以确保从多个来源收集的数据保持一致性。

同样,当比较不同的研究论文或更一般地说,文档时,可以使用相同的技巧。在本节中,我们提供了一个示例,说明我们如何利用网络搜索工具检索论文信息并进行比较。然而,如果您想遵循更结构化和受控的方法,您可以上传您想要基准测试的两个或多个论文,并运行以下提示(来自怀特博士的目录。您可以在arxiv.org/abs/2302.11382找到原始目录):

提示

我已经审阅了几篇关于[插入主题,例如,“社交媒体对心理健康的影响”]的研究论文,并附上了。我需要将它们的发现综合成一个连贯的摘要,突出以下内容:

论文之间的共同主题或趋势。

  • 关键差异或冲突结果。

  • 在文献中确定的差距或局限性。

  • 对未来研究或实际应用的启示。

请按以下结构组织综合:

引言:对主题和已审阅论文范围的简要概述。

共同主题:识别和总结共享的发现或重复出现的模式。

对比结果:强调论文之间任何主要的不同或矛盾。

差距和机遇:讨论需要进一步研究的地方。

结论:提供总体总结和未来研究的潜在方向。

通过应用这些提示模式,用户可以系统地设计提示,引导 LLMs 产生更可靠和上下文相关的输出,从而提高人机协作的效率和效果。

为您实验的设计和框架提供支持

实验设计是规划并执行科学实验或研究以回答研究问题的过程。它包括对研究设计、要测量的变量、样本大小以及收集和分析数据的程序做出决策。

ChatGPT 可以通过建议您研究框架,如随机对照试验、准实验设计或相关研究,并在实施该设计时支持您,来帮助您进行实验设计。

让我们考虑以下场景。我们想调查新教育项目对学生数学学习成果的影响。这个新项目包括基于项目的学习PBL),这意味着学生被要求在真实世界的项目中协作工作,使用数学概念和技能来解决问题和创造解决方案。

为了这个目的,我们定义了我们的研究问题如下:

新的 PBL 项目与传统教学方法相比,在提高学生表现方面有何不同?

这是 ChatGPT 如何帮助的:

  • 确定研究设计:ChatGPT 可以帮助确定适合研究问题的适当研究设计,例如随机对照试验、准实验设计或相关研究。

图 7.6:ChatGPT 建议适合您实验的适当研究设计

ChatGPT 建议进行随机对照试验(RCT),并清楚地解释了这样做的原因。

定义

RCT 是一种科学研究设计,通过随机分配参与者到两个或多个组来衡量干预措施的有效性:

  • 实验组:接受正在测试的干预或治疗

  • 对照组:接受安慰剂、标准治疗或无干预

通过随机分配参与者,RCT 最小化了偏差,并确保结果差异是由于干预本身而不是外部因素造成的。它们被认为是临床和社会科学研究在建立干预措施与其效果之间因果关系时的黄金标准。

我认为继续这种方法是合理的:下一步将是确定实验中要考虑的成果指标和变量。

  • 识别成果指标:ChatGPT 可以帮助您识别一些潜在的成果指标,以确定测试结果。让我们为我们的研究请求一些建议:

图 7.7:给定研究的学习成果

选择考试成绩作为成果指标是合理的。

  • 识别变量:ChatGPT 可以帮助研究人员识别研究中的自变量和因变量:

图 7.8:ChatGPT 为给定研究生成变量

注意,ChatGPT 还能够生成我们考虑的研究设计(RCT)中特有的变量类型,称为控制变量。

控制变量,也称为协变量,是在研究研究中保持恒定或控制的变量,目的是隔离自变量(们)和因变量之间的关系。这些变量不是研究的重点,但包括在内是为了最小化混杂变量对结果的影响。通过控制这些变量,研究人员可以降低获得假阳性或假阴性结果的风险,并提高其研究的内部可靠性、有效性、透明度和可重复性。

在前面的变量基础上,我们已准备好设置实验。现在我们需要选择参与者,ChatGPT 可以协助我们完成这一步。

  • 抽样策略:ChatGPT 可以建议潜在的研究抽样策略:

图 7.9:ChatGPT 提出的 RCT 抽样策略建议

注意,始终要求 AI 工具生成更多带有解释的选项是一个好习惯,这样你可以做出有理的决策。对于这个例子,让我们继续按照 ChatGPT 给出的建议进行,这些建议还包括关于目标人群和样本大小的建议。

  • 数据分析:ChatGPT 可以帮助研究人员确定分析从研究中收集的数据的适当统计测试,例如 ANCOVA、t 检验或回归分析。

图 7.10:ChatGPT 为给定研究建议一个统计测试

ChatGPT 提出的所有建议都是连贯的,并在关于如何进行统计测试的论文中得到证实。它还能够识别我们可能是在讨论一个连续变量(即分数),因此我们知道所有前面的信息都是基于这个假设。如果我们想要有离散的分数,我们可能需要通过添加这些信息来调整提示,然后 ChatGPT 将建议不同的方法。

ChatGPT 明确指定假设并解释其推理是做出基于其输入的安全决策的关键。

总之,ChatGPT 在设计实验时可以成为研究人员的一个宝贵工具。通过利用其自然语言处理NLP)能力和庞大的知识库,ChatGPT 可以帮助研究人员选择适当的研究设计,确定抽样技术,识别变量和学习成果,甚至建议用于分析数据的统计测试。

在下一节中,我们将继续探讨 ChatGPT 如何支持研究人员,重点关注参考文献生成。

奖励提示

当你设计研究实验时,怀特博士的提示目录也非常有用。例如,让我们考虑一下食谱模式(来源:arxiv.org/pdf/2302.11382):

提示

对 AI 的说明:请提供一个逐步计划,用于为这个研究目标设计一个稳健的实验。确保响应包括以下组件:

参与者:如何选择和分配参与者。

预测试:测量参与者基线表现的步骤。

干预:概述 PBL 项目实施和控制组治疗方法。

后测试:评估干预后成果的方法。

数据分析:指定比较结果和确保有效性的统计方法。

输出格式:

  • 清晰简洁地呈现每个步骤。

  • 为每个步骤提供理由,以证明其包含的合理性。

  • 总结为什么这种研究设计适合回答研究问题。

当用户对他们的目标有一般了解,并且对一些必要的步骤有所了解,但需要帮助将这些步骤组织成一个连贯且完整的序列时,这种模式确实特别有益。

另一个你可能想尝试用于实验设计的修订版提示如下:

提示

背景:您正在设计一个随机对照试验(RCT),以比较基于项目学习(PBL)项目与传统教学方法在提高学生表现方面的有效性。该研究需要定义具体的成果指标来评估项目的成功。

指导:生成一个详细的结果指标列表,这些指标是具体、可衡量且与评估学生表现相关的。包括学术、认知和行为领域的指标。

局限性:

  • 避免使用过于笼统的指标(例如,“学生进步”)。

  • 确保指标在 RCT 的背景下是现实和可行的。

  • 专注于可以全面评估两种教学方法指标的指标。

输出:提供至少 5-7 个结果指标的有序列表,每个指标都简要说明其如何有助于评估 PBL 项目的有效性。

在这个案例中,我们使用了清晰的分隔符和结构化的输出模式,以确保 ChatGPT 遵循科学的方法。此外,我们还纳入了限制条件,这是一种有效且明确地减少幻觉的方法。

生成和格式化参考文献

ChatGPT 可以通过提供自动化的引用和参考文献工具来支持研究人员在文献生成方面的需求。这些工具能够为包括书籍、文章、网站等多种来源生成准确的引用和参考文献。ChatGPT 了解多种引用风格,如 APA、MLA、芝加哥和哈佛风格,使得研究人员可以根据自己的工作选择合适的风格。此外,ChatGPT 还可以根据研究人员的输入建议相关来源,帮助简化研究过程并确保所有必要的来源都包含在参考文献中。通过使用这些工具,研究人员可以节省时间并确保他们的参考文献准确且全面。

让我们考虑以下例子。假设我们完成了一篇题为技术对工作场所生产力的影响:一项实证研究的研究论文。在研究和写作过程中,我们收集了以下需要包含在参考文献中的论文、网站、视频和其他来源的引用(按顺序,三篇研究论文、一个 YouTube 视频和一个网站):

显然,我们不能在我们的研究论文中包含上述列表;我们需要对其进行适当的格式化。为此,我们可以向 ChatGPT 提供参考文献的原始列表,并要求它以特定的格式重新生成它——例如,芝加哥风格,这是教育、心理学和社会科学中常用的参考文献格式风格。

让我们看看 ChatGPT 是如何工作的:

图 7.11:ChatGPT 生成的芝加哥格式参考文献列表

注意,我明确指出不要添加细节,以防 ChatGPT 不知道。事实上,我注意到有时 ChatGPT 会添加出版月份和日期,造成一些错误。

ChatGPT 还可以提供的另一种有趣的帮助是建议我们可能想要引用的潜在参考文献。我们已经在本章中看到 ChatGPT 在写作过程之前能够构思相关文献;然而,一旦论文完成,我们可能已经忘记了引用相关文献,甚至没有意识到我们引用了别人的作品。

ChatGPT 可以成为我们可能遗漏的可能参考文献的绝佳助手。让我们再次考虑我们的论文,该论文聚焦于研究问题“社交媒体的使用频率和类型如何影响青少年的焦虑和抑郁水平。”让我们假设我们设定了以下标题,它具有以下摘要:

标题:

社交媒体使用对青少年心理健康的影响:探讨社交媒体使用频率、内容类型与焦虑和抑郁水平之间的关系

摘要:

社交媒体已经成为青少年生活的一个组成部分,但其对心理健康的影响仍然是一个有争议的话题。本研究调查了社交媒体使用频率和类型与青少年焦虑和抑郁水平之间的关系。采用混合方法,我们分析了 13 至 18 岁青少年的调查数据,以评估他们的社交媒体习惯、内容偏好和自我报告的心理健康症状。研究发现,过度使用社交媒体,尤其是与负面情绪或高度编辑的内容互动,与更高的焦虑和抑郁水平相关。相反,积极的互动和支持性的在线社区可能减轻这些影响。该研究强调了理解社交媒体心理影响的必要性,并建议干预措施以促进青少年更健康的数字习惯。

让我们请 ChatGPT 列出所有可能与这类研究相关的可能参考文献:

图 7.12:与提供的摘要相关的参考文献列表

您也可以用这种方法重复处理论文的其他部分,以确保您没有遗漏任何需要包含在参考文献中的相关引用。

一旦你的研究准备就绪,你可能需要用电梯演讲稿来展示它。在下一节中,我们将看到 ChatGPT 如何也支持这项任务。

生成研究展示

研究研究的最后一公里往往是向各种受众展示。这可能包括准备幻灯片、提案或网络研讨会,研究人员需要面对不同类型的受众。

例如,假设我们的研究现在题为社交媒体使用对青少年心理健康的影响:探讨频率、内容类型与焦虑和抑郁水平之间的关系,是针对硕士学位论文讨论的。在这种情况下,我们可以要求 ChatGPT 生成一个持续 15 分钟并遵循科学方法的提案结构。让我们看看会产生什么样的结果(作为背景,我指的是之前给出的摘要):

图 7.13:ChatGPT 生成的论文讨论

那真是太令人印象深刻了!在我大学时代,有一个这样的工具来帮助我在讨论设计中会很有用。

从这个结构出发,我们也可以要求 ChatGPT 生成一个幻灯片作为论文讨论的视觉辅助。

让我们继续这个请求:

图 7.14:基于讨论提案的幻灯片结构

然后,你还可以要求 ChatGPT 生成一个可下载的资产作为幻灯片:

图 7.15:生成可下载的幻灯片

在后端发生的情况是 ChatGPT 生成 Python 代码来创建你的幻灯片:

图 7.16:ChatGPT 在后台运行 Python 代码

如果你点击提供的链接,你将能够下载生成的幻灯片:

图 7.17:生成的幻灯片

如你所见,大纲已经根据我们的要求保留。

最后,让我们设想一下,如果我们的论文讨论非常出色,以至于可能被选中获得研究资金以继续研究该主题,那么我们现在需要一份电梯演讲稿来说服资助委员会。让我们向 ChatGPT 寻求一些支持:

图 7.18:给定论文的电梯演讲稿

我们总是可以调整结果,使它们更符合我们的需求;然而,拥有现成的结构和框架可以节省大量时间,并允许我们更多地关注我们想要带来的技术内容。

总体来说,ChatGPT 能够支持研究过程中的端到端旅程,从文献收集和综述到生成研究的最终提案,我们已经展示了它如何成为研究人员的优秀 AI 助手。

此外,请注意,在研究领域,最近还开发了一些与 ChatGPT 不同但同样由 GPT 模型驱动的工具。一个例子是 Humata.ai,这是一个 AI 驱动的工具,允许您上传文档并对它们执行多项操作,包括总结、即时问答以及基于上传文件生成新论文。

这表明了由 GPT 驱动的工具(包括 ChatGPT)正在为研究领域的多项创新铺平道路。

摘要

在本章中,我们探讨了将 ChatGPT 作为研究人员宝贵工具的使用。通过文献综述、实验设计、参考文献生成和格式化以及演示生成,ChatGPT 可以帮助研究人员加快那些低或零附加价值的活动,以便他们可以专注于相关活动。

注意,我们只关注了 ChatGPT 可以支持研究人员的一小部分活动。在研究领域的许多其他活动中,ChatGPT 的支持也可能带来益处,其中包括数据收集、研究参与者招募、研究网络、公众参与等。

将此工具融入其工作的研究人员可以从其多功能性和节省时间的特性中受益,最终导致更具影响力的研究成果。

然而,重要的是要记住,ChatGPT 只是一个工具,应该与专家知识和判断力结合使用。与任何研究项目一样,仔细考虑研究问题和研究设计对于确保结果的准确性和可靠性是必要的。

在下一章中,我们将开始看到一些多模态的例子,通过结合 ChatGPT 的视觉能力来进行图像理解和生成。

参考文献

第八章:使用 ChatGPT 视觉化释放创造力

在本章中,我们专注于 ChatGPT 的视觉能力,从传统的 DALL-E 图像生成到模型中嵌入的更复杂的设计和格式化活动。

在过去的几个月里,ChatGPT 的视觉能力有了显著提升,因为我们现在正进入多模态时代。事实上,ChatGPT 现在不仅能从自然语言描述中生成图像,还能对多模态数据进行推理并解决复杂查询。这种多模态思维使 ChatGPT 更接近我们大脑处理周围现实的方式,而周围现实主要由视觉输入构成。

在本章中,我们将涵盖以下主题:

  • 使用 DALL-E 生成令人惊叹的插图

  • 利用 ChatGPT 作为设计师助手

  • 探索 GPT 商店中的高级插件

到本章结束时,你将能够通过在你的对话中结合视觉输入和输出,最大限度地发挥 ChatGPT 的作用。

什么是多模态?

第一章中,在介绍最新趋势和创新时,我们将多模态作为大型多模态模型(大型基础模型的一个子集)的典型特征引入,它包括处理和生成不同类型的数据,如文本、图像、音频和视频。

定义

大型语言模型LLMs)和大型多模态模型LMMs)都是生成式 AI 领域的一部分,并具有 Transformer 架构。

大型语言模型(LLMs)在大量的文本数据上进行训练,这使得它们能够理解和生成类似人类的文本。它们被应用于内容创作、语言翻译和客户服务代理等应用中。

另一方面,大型多模态模型(LMMs)在 LLMs 的基础上,通过处理和整合多种数据类型,包括文本、图像、音频和视频。这使得它们能够从文本描述中生成图像,用文本上下文分析视频,并创建结合各种数据形式的内容。

LMMs 的附加值在于,它们能够全面地推理异构的周围环境,处理情境的潜在语义,而不是对每种“现实资产”类型进行孤立的推理。我知道这可能听起来过于抽象,所以让我给你举一个例子。

想象一下,你正坐在一个房间里,你能意识到周围发生的每一件事。你听到声音,看到物体,阅读一本好书。所有这些感官都是不同类型的输入进入你的大脑。但你的大脑并没有将它们分开;它将所有这些信息一起处理,让你能够整体地理解你的环境。例如,你可能会将你在书中读到的东西——比如说,一幅美丽的风景——与你从房间窗户看到的景象联系起来。

现在,将 LMM 想象成这个房间里的人。它不仅仅能理解文字(比如阅读一本书),还能“看到”图片(图像)、“听到”声音(语音),并在它们之间建立关联。所有这些信息同时流入,模型将它们结合起来理解整个环境,就像你的大脑将一切融合在一起帮助你理解正在发生的事情。

因此,就像你可以坐在一个房间里并把它当作一个整体体验来感知一样,LMM 可以一次性处理不同类型的数据,无论是图片、文本还是音频剪辑。它不会将这些输入分开处理,而是理解所有结合在一起的全局背景。

在接下来的章节中,我们将探讨在视觉创造力背景下单模态和多模态模型。

使用 DALL-E 生成令人惊叹的插图

在前面的章节中,我们学习了当涉及到生成相关结果时,编写良好的提示是多么关键。这对于生成的文本和图像来说同样适用。因此,当我们利用像 DALL-E 3(基模型 DALL-E 的最新版本)这样的模型时,它接收自然语言指令作为输入并生成图像作为输出,编写一个精心设计的提示至关重要。

注意

在撰写本书时(2024 年 10 月),DALL-E 3 已集成到 ChatGPT 应用程序中。这意味着:

  • 在创建图像之前,你可以无缝地与 ChatGPT 交互,以便你可以想出更有创意的想法(我们将在下一节中看到这个场景)。

  • DALL-E 3 本身是建立在 ChatGPT 之上的,这意味着当用想法提示时,后者将在其后端自动生成一个更精细的提示,以在调用 DALL-E 3 时获得最佳结果。

为 DALL-E 3 设计提示是一个创造性的过程,涉及精心制作描述以产生视觉上令人惊叹且情境合适的图像。让我们探索一些设计提示的关键技术,从设定主题到调整技术细节,如长宽比。

定义主题和场景

主题是任何提示的核心。它是你希望 DALL-E 3 可视化的中心对象或概念。你对主题越具体和清晰,DALL-E 就越能准确地解释和创建图像。例如,与其只说“一只狗”,不如指定“一只在花园里玩耍的金毛猎犬。”添加元素,如场景,可以进一步细化图像,例如“在春天盛开的郁金香花园里玩耍。”

示例提示: “一只金毛猎犬在春天盛开的郁金香花园里玩耍。”

这告诉 DALL-E 不仅要知道主题是什么(小狗),还要知道它在哪里存在(花园)以及什么条件下(春天),为生成的图像提供更清晰的背景。

让我们在 ChatGPT 中嵌入的 DALL-E 3 中试试:

图片

图 8.1:DALL-E 3 在 ChatGPT 中生成图像的示例

图片质量已经非常高;然而,我们可能希望更具体地说明最终产品应该是什么样子。

用色彩和光照设定氛围

一旦主题和场景确定,下一步就是通过控制色彩调色板光照条件来塑造图像的氛围和气氛。图像的基调可以根据场景是明亮生动还是昏暗平静而大幅改变。颜色可以唤起特定的情绪,而像柔和的日光、强烈的正午光线或情绪化的阴影这样的光照条件可以影响图像的整体感觉。

示例提示:“一只金毛猎犬在春天郁金香盛开的花园中玩耍,在柔和的晨光下,花朵为柔和色调。”

计算机屏幕截图  自动生成的描述

图 8.2:DALL-E 3 根据要求添加更多细节的示例

在这里,“柔和的晨光”营造出温暖宁静的氛围,而“柔和色调的花朵”则添加了特定的色彩调色板,增强了气氛。

介绍摄像机角度和材料

通过结合技术方面,如摄像机视角或使用的材料,可以将你的提示从简单转变为复杂。通过添加这些细节,你指导 DALL-E 以更有意或艺术的方式呈现图像。你可以指定拍摄类型——是特写、广角还是用于复杂细节的微距镜头。

此外,提及材料或纹理,如“画布”、“金属表面”或“木材”,为 DALL-E 提供了如何呈现特定细节的指示。

示例提示:“一只金毛猎犬在春天郁金香盛开的花园中玩耍,以特写角度拍摄,焦点柔和,突出花朵和毛发的纹理。”

在郁金香花园中的小狗  自动生成的描述

图 8.3:DALL-E 3 根据要求添加更多细节的示例

这告诉 DALL-E 专注于特写细节,增强纹理并创造亲密的拍摄效果。

植入艺术影响

另一种提高提示工程的技术是借鉴既定的艺术风格或特定艺术家。通过引用特定艺术家艺术运动,你可以给图像注入独特的特征,如梵高的笔触或毕加索的抽象形状。或者,你可以指导 DALL-E 遵循更广泛的艺术运动,如印象派、超现实主义或写实主义,具体取决于你想要的风格。

示例提示:“一只金毛猎犬在春天郁金香盛开的花园中玩耍,以印象派风格绘制。场景中有柔和的斑驳阳光透过花朵,模糊而鲜艳的郁金香花瓣。”

图 8.4:DALL-E 3 根据要求进一步添加细节的示例

这将引导 DALL-E 模仿印象派风格,其重点在于光、色和形状的柔和融合,为图像创造梦幻般的质感。

设置文化和历史背景

在你的提示中添加文化历史背景可以加深意义并影响最终图像。无论你是在创作具有历史主题的作品,如“中世纪欧洲”,还是带有“科幻城市”的未来感,包括这些元素有助于 AI 模型理解时间段、建筑风格和场景风格。

示例提示: “一只金毛猎犬在 18 世纪欧洲的郁金香花园中玩耍,周围环绕着华丽的石制喷泉和巴洛克建筑。”

手机的截图  自动生成的描述

图 8.5:DALL-E 3 根据要求进一步添加细节的示例

这不仅确立了一个时间段,还提供了如巴洛克建筑这样的文化参考,为 DALL-E 提供了关于风格和细节的特定视觉提示。

选择媒介和形式

在提示工程中,另一个强大的技术是指定图像“创建”的媒介。这可以是摄影、绘画,甚至是雕塑。每种媒介都有自己的纹理、形式和视觉规则,DALL-E 可以模仿。同样,描述物体的形式形状可以进一步引导构图。

示例提示: “一只金毛猎犬在春天的郁金香花园中玩耍,以柔和的笔触和鲜明的色彩对比捕捉成数字绘画。”

郁金香花园中的狗  自动生成的描述

图 8.6:DALL-E 3 根据要求进一步添加细节的示例

在这里,媒介的选择——数字绘画——为 DALL-E 提供了如何构建图像的指示,确保它反映了与数字艺术常见的纹理和技术。

添加风格、技术和画幅比例

最后,一个精心制作的提示的完成细节通常来自于包括关于风格技术画幅比例的细节。无论你希望图像看起来像油画,以逼真的细节呈现,还是匹配特定的图像格式,如宽屏或方形,这些选择最终确定了美学方向。

例如,你可以指示 DALL-E 遵循特定的摄影风格,如“黑白肖像摄影”,或请求具有电影画幅比例的图像,如“16:9”,以创建宽屏风景。

示例提示: “一只金毛猎犬在春天的郁金香花园中玩耍,以生动的色彩捕捉成数字绘画,宽屏 16:9 的画幅比例,类似于全景风光画。”

花园小径上奔跑的狗  自动生成的描述

图 8.7:DALL-E 3 根据要求进一步添加细节的示例

这个最后的细节为 DALL-E 提供了如何构图和风格化图像的精确指令。

结合技术以实现最大影响

虽然上述每种技术都可以单独使用,但提示工程的实际力量在于将多个元素结合起来,以产生丰富、层次分明的描述。

综合示例提示:“一只金毛猎犬在春天郁金香盛开的花园中玩耍,以特写角度拍摄,焦点柔和。画面以印象派风格绘制,有柔和的阳光和柔和的彩色花朵。场景有松散的笔触,将小狗的毛发与精致的郁金香在梦幻般、温暖的氛围中融合在一起。画作以 16:9 的宽高比数字化呈现,以柔和、模糊的效果捕捉光与色的温柔游戏,让人联想到经典的印象派艺术。”

在郁金香田里的一只小狗,描述自动生成

图 8.8:DALL-E 3 根据要求进一步添加细节的示例

通过结合主题、场景、氛围、艺术影响和技术细节,这个提示为 DALL-E 提供了详细的指令,这可能会产生一个高度准确、视觉上吸引人的图像。

DALL-E 3 的提示工程是一个需要平衡创造性和精确性的微妙过程。通过深思熟虑地结合诸如主题、场景、氛围、风格和技术参数等元素,您可以生成高度定制且视觉上引人入胜的图像。

然而,DALL-E 3 与 ChatGPT 的本地集成带来了更多的可能性。事实上,集成的真正价值在于这项服务提供的多模态能力,我们将在下一节中介绍这一点。

利用 ChatGPT 作为设计师助理

随着 GPT-4 Vision 和随后的 GPT-4o 的出现,我们在多模态领域见证了巨大的加速,因为这些模型能够处理图像和自然语言。然而,它们只能产生文本输出(当然包括代码)。随着 DALL-E 3 集成到 ChatGPT 体验中,我们现在有一个能够以图像和文本(以及为了完整性,还有音频)的形式与我们进行交互的 AI 系统。

让我们看看一些具体的应用。

时尚助理

假设我们身处时尚界,并被要求围绕最新趋势制作博客内容,以及提出新的时尚想法。我们最近参加了一个时尚活动并拍摄了一些照片作为可能的灵感来源。让我们看看 ChatGPT 如何帮助我们:

  1. 首先,让我们要求模型生成一篇关于提供的服装的简短博客文章:

图 8.9:ChatGPT 理解图像并基于它生成文章的示例

  1. 现在我们来提出一个更具体的问题,关于裙子的材质:

聊天截图  自动生成的描述

图 8.10:ChatGPT 分析图像中裙子材质的示例

  1. 现在我们希望我们的模型生成一幅插图,以油画风格再现这套装扮:

图 8.11:DALL-E 3 基于提供的图像生成插图的示例

  1. 要求一些调整:

穿着连衣裙的人  自动生成的描述

图 8.12:DALL-E 3 根据要求细化图像的示例

  1. 现在让我们用一些配饰来扩展这套装扮:

人的手袋特写  自动生成的描述

图 8.13:DALL-E 3 为图像添加细节的示例

  1. 最后,让我们生成一套全新的装扮:

图 8.14:DALL-E 3 生成全新装扮的示例

在过去几个月里,该模型的图片质量和文本理解能力不断提高,你现在可以欣赏到 GPT-4o 和 DALL-E 3 在同一用户界面内的多模态协作。

注意,与之前章节中探讨的其他任务类似,上述示例可以是一个迭代过程,其中我们要求 ChatGPT 根据我们的要求进一步细化结果。

UX 设计师

第五章中,我们探讨了如何利用 ChatGPT 生成、优化和调试代码。当然,当涉及到我们想要构建的网站的用户体验UX)设计时,这可以与更高级的辅助工具相结合。例如,在生成代码之前,我们可能想要询问 ChatGPT 如何组织 UX,使用哪种调色板,组件的整体风格等等。

假设我们想要开发我们的作品集着陆页,并与 ChatGPT 进行头脑风暴会议:

  1. 我将首先要求 ChatGPT 为我技术作品集建议一些设计风格(截断输出):

图 8.15:ChatGPT 为我网站建议不同风格的示例

  1. 我们选择简约而时尚的设计。现在我想得到一些关于调色板的灵感(输出截断):

图 8.16:ChatGPT 为简约 UX 建议不同调色板的示例

  1. 我们选择选项 1,并让模型建议一些我应该嵌入我的作品集(截断输出)的进一步用户体验(UX)功能:

图 8.17:ChatGPT 建议在 UX 中包含的功能的示例

  1. 现在我非常想看到我网站的草案。正如我们所学的,我们可以要求模型生成构建它的代码;然而,在此之前,我们可能想要有一个视觉表示,以便我们可以对我们要达到的最终产品有一个概念。让我们看看嵌入的 DALL-E 3 模型是否能够做到这一点:

图 8.18:我们 UX 可能看起来如何的视觉草图示例

嗯,正如你可能已经注意到的,图像模型在生成文本方面仍然存在困难。然而,它仍然设法产生了一个符合我偏好的设计——一个简约、经典的色调,带有蓝色调,并提供了额外的 UX 功能。

在下一段中,我们将看到 ChatGPT UX 设计能力的更多示例,特别是当我们将它们纳入现有的网页设计平台(如 Wix 或 Canva)时。

样式迁移

我要展示的最后一个例子是如何将一个插图的风格迁移到另一个。如果你正在开发一套具有一致风格的插图,然后你非常欣赏你想要加入列表中的某个视觉元素,但这个视觉元素与之前一直应用于所有插图的风格不匹配,这可能很有用。然而,这个视觉元素并不符合你一直应用于所有插图的风格。如果是这种情况,你可以向 ChatGPT 提供一个你风格的示例以及你想要应用该风格的插图,并请求进行样式迁移。

让我们看看实际效果。想象一下,我们正在使用以下草图风格的插图:

图 8.19:草图风格插图示例

然后你发现了一个非常棒的插图,你希望将其包含在你的集合中:

一艘在海洋中的船  自动生成的描述

图 8.20:你想要以不同风格展示的插图示例

让我们看看如果要求 ChatGPT 进行样式迁移会发生什么:

一艘船的截图  自动生成的描述

图 8.21:使用 DALL-E 3 的样式迁移示例

太棒了!正如你所见,新的插图完美地符合我正在应用于插图集中的草图风格。

样式迁移的酷之处在于,即使你没有参考图片,你仍然可以应用它。例如,假设你想要将表现主义风格应用于你的插图。

让我们要求 ChatGPT 将这种风格迁移到船的插图上,而不提供上述参考图像:

计算机屏幕截图  自动生成的描述

图 8.22:使用 DALL-E 3 的样式迁移示例

现在,所有这些视觉助手都可以作为独立的聊天机器人使用;然而,如果它们与我们在之前活动中通常使用的软件(如用于图像编辑的 Photoshop 或用于视觉设计的 Canva)集成,将会更加无缝。

另一种实现这种进一步整合的方法是利用插件,并从 GPT 商店构建自己的 GPT。我们将在下一章中介绍 GPT,所以不会深入探讨它们是什么以及如何从头开始创建自己的 GPT;然而,在下一节中,我将向你展示一些预先构建并公开可用的 GPT,它们正好提供这种与第三方服务的无缝集成,并可以提升你的视觉创造力。

探索 GPT 商店中的高级插件

2024 年 1 月,OpenAI 推出了 GPTs,这些可以被定义为 ChatGPT 的专用和定制版本。用户可以通过指定系统消息、一系列动作、语气和其他我们将要介绍的功能来创建自己的 GPT。一旦你创建了你的 GPT,你就可以通过 GPT 商店将其公开,这是一个对所有拥有 ChatGPT Plus 的用户开放的优质市场。

你可以通过chatgpt.com/gpts访问商店,并从那里浏览由消费者和公司开发的许多 GPT。在本节中,我们将介绍一些由在视觉设计领域工作的公司开发的有趣 GPT,这些公司通过插件(在 GPT 术语中,这些插件被称为“动作”)整合生成式 AI(我们将在下一章中介绍这个话题)。

Canva

Canva是一个于 2013 年在澳大利亚推出的图形设计平台。它的目标是使设计民主化,让每个人都能使用,无论他们的技能水平如何。Canva 提供了一系列工具和模板,用于创建从社交媒体图形和演示文稿到海报、促销物品,甚至网站的一切。

Canva 的一个关键特性是其直观的拖放界面,它使用户能够轻松地自定义他们的设计。无论你是在使用电脑还是移动设备,Canva 都通过其网页和移动应用提供无缝体验。此外,Canva 还包含强大的照片和视频编辑功能,使其成为满足所有设计需求的综合工具。

图 8.23:Canva 插件

让我们测试一下:

社交媒体帖子的截图 自动生成描述

图 8.24:ChatGPT 利用 Canva 插件的示例

你还可以展开Talked to chatgpt-plugin.canva.com标签页来查看 API 调用的配置(正如我们将在下一章中看到的,GPT 动作本质上都是 REST API 调用)。

电脑的截图 自动生成描述

图 8.25:Canva 插件 API 调用的细节

Canva GPT 所做的是根据你的自然语言请求从 Canva 的模板中检索一些选项供你选择,并且还会添加一个标题使其与你的主题相关。一旦你确定了一个符合你需求的提案,你就可以点击它,并在 Canva 中直接进行编辑:

计算机截图  自动生成的描述

图 8.26:Canva 插件的输出示例

Canva GPT 是一个非常实用的工具,可以帮助你用自然语言起草你的视觉设计,并且它与 Canva 平台的无缝集成允许你在不同平台之间保持流畅,不会丢失想法。

Wix

Wix是一个领先的基于云的网站开发平台,它使用户能够轻松地创建令人惊叹的专业网站。成立于 2006 年,Wix 彻底改变了人们构建和管理在线存在的方式。凭借其直观的拖放界面,用户可以设计网站而无需任何编码技能。

Wix 提供了一系列可定制的模板和高级功能,包括电子商务功能、SEO 工具和集成营销解决方案。无论你是小企业主、艺术家、博主还是企业家,Wix 都提供了你需要的工具,让你的愿景变为现实,并有效地触及你的受众。

网站构建器截图  自动生成的描述

图 8.27:Wix 插件

利用 ChatGPT 背后的对话模型,Wix 允许客户与 ChatGPT 协同设计他们的网站,同时直接在 Wix 中创建后端。一旦对话和协同创作结束,用户可以直接跳转到最终网站,并在 Wix 中继续编辑它。

假设,例如,我们想要设计一个展示我们作品的组合:

聊天截图  自动生成的描述

图 8.28:Wix 插件的交互示例

自从这些最初的互动以来,我已经为与我的 GPT 进行协同设计会议做好了准备,在这个案例中,GPT 被定制得可以继续向我提出有用的问题,以构建最终产品。在提出的名字中,我认为我会选择 Coded Creations。

聊天截图  自动生成的描述

图 8.29:Wix 插件生成网站的示例

一旦它收集了一些更多信息,GPT 就在 Wix 上为我生成了网站,并提供了链接。在这种情况下,你还可以展开与 wix.com 交谈选项卡来查看通话的配置(正如我们将在下一章中看到的,GPT 操作本质上都是 REST API 调用)。

计算机截图  自动生成的描述

图 8.30:Wix 插件 API 调用的详细信息

让我们看看结果:

计算机截图  自动生成的描述

图 8.31:Wix 插件的最终输出示例

就这样!现在你可以继续进行这个设计,或者让嵌入在 Wix 中的 AI 进行一些轻微的修改后重新生成它。或者,你可以直接通过 ChatGPT 进行修改,如下所示:

计算机截图  自动生成的描述

图 8.32:Wix 插件根据用户请求调整 API 调用示例

如 API 调用参考所示,lookAndFeel字段已更改为我们所要求的。让我们看看结果:

网站的截图  自动生成的描述

图 8.33:Wix 插件调整输出的示例

就这样!仅仅通过几次交互,我们就创建和修改了我们的着陆页的第一稿。再次强调,你总是有进一步定制的可能性,但从一个非空白页面开始通常会更加高效。

Veed.io

Veed.io是一个创新的在线视频编辑平台,让所有技能水平的创作者都能制作出专业质量的视频。成立于 2017 年,总部位于英国伦敦,Veed.io 迅速在数字内容创作领域树立了声誉。该平台旨在通过一系列用户友好的工具和功能简化视频编辑过程。从自动字幕和文本转视频功能到屏幕录制和背景噪音消除,Veed.io 提供了将创意愿景变为现实所需的资源。Veed.io 专注于易用性和可访问性,正在改变视频的制作方式,使高质量的制作对每个人来说都变得可行。

视频聊天的截图  自动生成的描述

图 8.34:Veed.io 插件

让我们测试一下:

聊天的截图  自动生成的描述

图 8.35:Veed.io 插件请求进一步详情以进行 API 调用示例

如你所见,GPT 要求我提供更多详情以确保它能完成任务。一旦提供了所需的信息,GPT 就会继续生成最终的视频:

视频项目的截图  自动生成的描述

图 8.36:Veed.io 插件生成最终输出的示例

让我们检查 API 调用:

消息的截图  自动生成的描述

图 8.37:Veed.io 插件 API 调用详情

让我们看看结果:

计算机的截图  自动生成的描述

图 8.38:Veed.io 插件输出的示例

一旦点击链接,你将被引导到新视频的编辑页面。旁白是我们向 GPT 指示的女性头像,你可以看到视频已经包含了多个不同的场景和视觉效果。

这些只是市场上众多视觉 GPT 中的三个例子。许多公司正在发布他们自己的 GPT,以允许与他们的平台无缝集成,它们值得探索!

摘要

利用 ChatGPT 作为视觉助手可以提高你的生产力,同时保持你的创造力。

通过掌握提示设计,你可以生成令人惊叹的、量身定制的插图,满足你的确切需求。无论你是在进行品牌建设、内容创作还是艺术项目,ChatGPT 都充当一个可靠的设计助手,简化复杂任务同时实现高质量的输出。

此外,探索 GPT 商店中的高级插件可以提升体验,提供更广泛创造可能性的专业工具。实际上,ChatGPT 设计和其视觉能力(以及其一般能力)的真实价值在于我们能够将它们整合到我们自己的工具和流程中,解锁无缝的生产力流程。正如本章所展示的,这可以通过 GPT 的行为实现,更广泛地说,通过 GPT——这是我们将在下一章更详细讨论的主题。

参考文献

第九章:探索 GPT

在前几章中,我们看到了如何利用 ChatGPT 进行各种活动的几个例子,从个人生产力到市场营销,从研究到软件开发。对于这些场景中的每一个,我们总是面临一个类似的情况:我们从一个通用工具 ChatGPT 开始,然后通过特定领域的问题和额外的上下文来定制它。

然而,如果我们旨在获得针对我们自己的极端专业化的模型,有时这可能还不够。这就是为什么我们可能需要构建一个特定目的的 ChatGPT。幸运的是,OpenAI 本身已经开发了一个无代码平台来构建这些定制助手,这些助手被称为 GPT。

在本章中,我们将探讨 GPT 的特点、能力和实际应用,涵盖我们在前几章中看到的相同用例,以便您可以看到输出质量的不同。此外,我们还将了解如何发布您的 GPT 并将其集成到外部系统中,使其不仅对您自己,也对他人成为生产应用。

到本章结束时,您将能够:

  • 了解 GPT 是什么以及它能完成哪些任务

  • 不用写一行代码就构建您自己的 GPT

  • 发布您的 GPT 并将其与外部系统集成

让我们从一些基本定义开始,然后进入实践。

技术要求

要在 ChatGPT 中访问和使用 GPT,需要 ChatGPT Plus 订阅。在撰写本书时,这个订阅的价格为每月 20 美元。

GPT 是什么?

2023 年 11 月,OpenAI 推出了 GPT,这是 ChatGPT 的专用版本,旨在提高生产力和满足特定任务和需求。与通用 ChatGPT 不同,这些定制版本允许用户在没有编码知识的情况下创建定制的 AI 模型。

注意

在本章中,有一个重要的考虑因素将贯穿始终。当我们提到 GPT 这个词时,您将在本书中找到两个主要定义。

第一个指的是 OpenAI 语言模型背后的正确生成式预训练 TransformerGPT)模型架构。我们在第一部分提到了这个架构,并且我们知道这是 ChatGPT 本身的框架。

第二个更通用地指的是 OpenAI 允许用户通过无代码方法创建的专用助手。在 GPT 的语境中,一个 GPT 指的是您利用该平台(对所有拥有 ChatGPT Plus 的用户开放)创建的一个助手。

在本章中,无论何时您读到 GPT 或 GPTs,请记住我们使用的是第二个定义。

GPT 的想法类似于 AI 代理。实际上,通过 GPT,我们正在构建由 LLM 驱动的实体,具有特定的指令,并提供一个自定义的知识库以及一套工具或插件来与周围环境交互。

让我们更详细地看看这些组件。首先,你可以全面查看所有已公开发布的 GPT。为此,你可以通过以下页面进行导航:chatgpt.com/gpts。

图 9.1:GPT 的着陆页面

如前图所示,这是一个所有现有 GPT 的市场。你可以通过类别(框 1)或通过在搜索栏中说明你正在寻找的内容(框 2)来探索它。

然后,要创建你自己的 GPT,你可以通过chatgpt.com/gpts/edit页面进行导航,并使用你的 OpenAI 账户登录。或者,你可以进入 ChatGPT,点击页面左上角的探索 GPTs,然后点击创建(如图中 3 号框所示)。

一旦进入编辑器,你将需要配置你的 GPT,而在右侧,你可以实时测试它。

图 9.2:从头开始创建你的 GPT 的编辑页面

让我们探索所有这些组件:

  • 名称:你想要给你的 GPT 取的名字。

  • 描述:描述你的 GPT 的功能。这一点非常重要,尤其是如果你打算在市场上发布你的 GPT,以便其他用户可以轻松找到它(如我们之前提到的,GPT 可以通过搜索 GPTs 栏中的自然语言进行搜索。此外,这个描述也将帮助其他用户了解 GPT 的用途。

  • 指令:这是你的 GPT 的系统消息,即一组针对你特定需求的自然语言指令,最终用户看不到。

  • 对话启动词:这是一组用户可以开始与 GPT 交互并对其使用建立信心的示例提示。

  • 知识:这指的是我们可以将模型基于的定制文档。当我们在这里上传文档时,我们的 GPT 将能够通过检索增强生成模式在这些文档中导航,这样我们就可以提供额外的知识,甚至根据我们的需求限制我们的助手对定制知识库的响应。

  • 功能:这些指的是我们可以提供给 GPT 的一组内置插件,而无需编写任何代码。你可以从上面的图片中看到,有三种插件是默认提供的:

    • 网络浏览用于搜索网络并检索最新信息

    • DALL-E 3 图像生成用于生成插图

    • 代码解释器与数据分析用于在沙盒化的 Python 环境中执行代码并与分析文件(如电子表格)交互

  • 动作:动作也可以被视为插件;然而,由于它们不是内置的,而是由 GPT 开发者指定的,因此它们在功能上有所不同。例如,你可能生成一个如下所示的动作:

    注意

    在动作的上下文中,你可以通过点击添加动作然后从 ActionsGPT 获取帮助来从集成到配置面板中的专用 GPT 获得支持。

![img/B31559_09_03.png]

图 9.3:如何从 ActionsGPT 获取支持的示例

通过这样做,你将看到 ActionsGPT 界面:

![img/B31559_09_04.png]

图 9.4:ActionsGPT 的着陆页

看到我们正在见证一个“GPT 中的 GPT”,你不觉得这很神奇吗?

除了标准配置页面外,还有一个选项以更“对话式”的方式构建你的 GPT。实际上,你可以切换到创建标签页,并用自然语言解释你希望通过你的 GPT 实现什么:

![img/B31559_09_05.png]

图 9.5:从自然语言对话开始创建 GPT

我们将在本章的实践部分看到这两种方法——标准配置和对话式配置。

既然我们已经知道了 GPT 是什么,让我们看看如何创建一个。在接下来的几节中,我们将创建五个不同的 GPT:

  • 前四个将专注于我们已经用通用 ChatGPT 涵盖的四个领域——个人生产力、代码开发、营销和研究。我们的想法是比较特定领域 GPT 与通用 ChatGPT 的整体效率和准确性。

  • 第五个将涵盖一个新的领域,与艺术创造力相关。我们将利用内置的 DALL-E 插件以及其他由设计公司(如 Canvas)开发的插件。

让我们从使用专用 GPT 提高我们的个人生产力开始。

个人助手

在这种情况下,我们将构建一个 GPT 来提高我们的健身房锻炼。为此,我们将利用内置插件。此外,我们还将添加一些相关文档,以便助手基于特定的知识库。

我的目的是拥有一个可以根据我的健身目标、可用性、性别、年龄、偏好等构建锻炼计划的助手。我还希望我的助手对我的建议背后的原因提供清晰的解释。

为了完成所有这些,我想确保我的助手将:

  • 问我它需要设计最适合我的最佳锻炼计划的具体问题

  • 提供与我响应相关的相关信息和来源

  • 考虑我的反馈,但能够保持立场,如果它认为这是正确的

  • 如果它们不合理或对我的健康有风险,不要满足我的请求

让我们看看如何创建这个 GPT,按照前一小节中提到的所有配置步骤进行:

  1. 名称:我将我的助手命名为 WorkoutGPT。

  2. 描述:这是我设置的描述:“帮助用户根据他们的需求设计锻炼计划的锻炼助手。”

  3. 说明:在这里,我们来到了我们 GPT 的真正核心。这是我提供给 GPT 的指令集:

    “你是一个工作 AI 助手,根据用户的需求帮助他们创建训练计划。”

在生成计划之前,确保询问以下问题:

  • 健身目标和时间预期

  • 年龄和性别

  • 身体素质

  • 工作时间

  • 所有其他你需要来定义一个合适的训练计划(例如,设备,潜在伤害……)

如有必要,使用提供的文件来丰富你的回答。

如果用户向你建议一些对他们目标来说不切实际的事情,坚持你的假设,并礼貌地解释背后的原因。

如果用户问你一些可能对他们的健康有风险的问题,礼貌地建议他们采取更简单和替代的方法,并解释背后的原因。”

  1. 对话开场白:在这里,我设置了三个不同训练的示例:

    • 我想在 6 个月内为马拉松训练。

    • 无需任何设备生成 30 分钟的高强度间歇训练(HIIT)计划。

    • 仅使用哑铃生成 45 分钟的力量训练计划。

  2. 知识:在这里,我上传了标准的国家力量与条件协会NSCA)训练负荷图表,这是一个帮助运动员和教练确定不同练习和训练课的适当训练负荷的工具。它看起来如下:

带有数字和符号的图表,自动生成描述

图 9.6:NSCA 训练负荷图表。来源:https://www.nsca.com/contentassets/61d813865e264c6e852cadfe247eae52/nsca_training_load_chart.pdf

我差点忘记一个关键步骤——添加插图!这可能看起来很肤浅,但为你的 GPT 添加一个图标会使它更具吸引力,尤其是如果你打算将其发布给所有用户。幸运的是,我们直接在配置面板中集成了 DALL-E:

图 9.7:如何设置你的 GPT 图标的示例

这就是配置看起来像的样子:

计算机屏幕截图,自动生成描述

图 9.8:WorkoutGPT 配置页面

太好了!现在让我们看看一些示例对话。

首先,让我们选择关于马拉松训练的第一个对话开场白:

图 9.9:WorkoutGPT 询问的问题示例,以评估用户的整体目标和健身水平

如你所见,我们的 WorkoutGPT 立即要求我们提供继续计划所需的信息。一旦提供了上述信息,我的助手生成了以下 24 周的计划(我在这里只分享了前四周):

图 9.10:由 WorkoutGPT 生成的马拉松训练工作表示例

此外,它还具体说明了周五的力量训练如下:

黑白列表,黑色文字,自动生成描述

图 9.11:WorkoutGPT 生成的力量训练示例

让我们专注于力量训练。我想更好地了解如何校准权重。以下图显示了响应的第一部分:

图 9.12:WorkoutGPT 解释如何在力量训练中确定要举起的重量

在同一响应中,助手还引用了作为知识库提供的 NCSA 训练负荷图表:

负荷图表截图  自动生成的描述

图 9.13:WorkoutGPT 从自定义知识库中检索 NSCA 训练负荷图表信息的示例

现在,我想挑战我的 WorkoutGPT,询问一些可能对我有害的事情。例如,一个月内没有任何经验就准备马拉松绝对是一个糟糕的想法。让我们看看一旦我向它提供了一系列起始问题的答案,我的助手对此有何看法:

手机截图  自动生成的描述

图 9.14:WorkoutGPT 在考虑到请求相关的风险时,温和地引导用户调整目标和期望的示例

如您所见,我的 WorkoutGPT 正在引导我改变对比赛的方法。虽然它仍然为我提供了为期 3 周的跑步训练计划(这里,输出被截断),但它并不专注于准备我在 3 小时 15 分钟内完成马拉松,而是专注于建立耐力和力量。

注意,如果我们向通用 ChatGPT 提出相同的问题,它将如下回应:

消息截图  自动生成的描述

图 9.15:ChatGPT 尽管表达了自己的担忧,但仍然满足了用户请求的示例

注意 ChatGPT 尽管在表达担忧方面直言不讳,但仍然满足了我的请求,为我提供了一个完成全程马拉松的计划。这可能会鼓励我——一个认为跑马拉松是玩笑的鲁莽新手——投身于这个愚蠢的冒险,这对我的健康有严重的后果。

总体而言,GPTs 允许你非常具体地定义你的助手应该如何表现,以及他们应该避免说什么或做什么。

代码助手

在本节中,我想开发一个针对数据科学项目的助手。更具体地说,我希望我的助手能够:

  • 根据用户的任务提供如何设置数据科学实验的明确指导。

  • 生成运行实验所需的 Python 代码。

  • 利用代码解释器的功能运行和检查代码。

  • 将最终代码推送到 GitHub 仓库。

    注意

    当涉及到代码生成时,定制 GPT 相对于通用 ChatGPT 可以提供显著的优势。通过结合特定领域的知识和定制说明,定制 GPT 可以生成更准确、更高效且符合特定要求的代码。这种定制允许模型理解和遵守与特定项目相关的编码标准、框架或库,从而降低错误发生的可能性以及需要大量修订的需求。此外,得益于动作,GPT 实际上可以执行在开发生命周期中自动化的活动,从而加快产品的上市时间。

让我们一步步看看如何做:

  1. 设置说明:

这个 GPT 是一个数据科学助手,它帮助用户设置和运行数据科学实验。它提供了如何定义和组织任务的明确指导,并生成实验所需的 Python 代码,并利用代码解释器的功能来运行和检查代码。GPT 将接受用户的输入,并逐步提供结构化实验、创建必要的脚本和执行代码的说明。

GPT 将执行代码以查看其是否工作。一旦用户接受最终代码,它可以作为.ipynb文件推送到 GitHub 仓库。

  1. 设置(可选)对话启动器:

    • 我该如何设置分类实验?

    • 为随机森林模型生成 Python 代码。

    • 你能帮我预处理这个数据集吗?

    • 运行此代码并检查错误。

  2. 启用代码解释器和数据分析插件:

图片

图 9.16:启用代码解释器和数据分析插件

  1. 创建与 GitHub 通信的动作:为此,我们需要点击创建新动作并定义所需的架构。

    注意

    要使用 OpenAPI 3.1.0 规范设置 ChatGPT 动作的架构,您定义动作将处理的数据(请求和响应)的结构。这涉及到在 API 路径中指定内容下的架构属性。架构概述了请求和响应体的预期数据类型、必填字段和可能的值。

定义架构的步骤如下:

  1. 识别数据结构:确定操作将处理的数据类型(例如,JSON 对象或数组)。

  2. 定义属性:在架构下指定属性、它们的类型以及任何约束。例如,如果操作需要用户名和电子邮件,您将在属性下定义这些。

  3. 设置必填字段:使用必填数组来指定哪些字段必须提供。

  4. 应用到路径:将架构放置在路径中适当的 HTTP 方法下(例如,POST 或 GET)。

让我们考虑以下示例:

openapi: 3.1.0
info:
  title: ChatGPT Action API
  version: 1.0.0
paths:
  /perform-action:
    post:
      operationId: performAction
      summary: Perform a specific action with given inputs.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                action:
                  type: string
                  description: The action to perform
                parameters:
                  type: object
                  description: Parameters for the action
                  properties:
                    userId:
                      type: string
                    content:
                      type: string
              required:
                - action
                - parameters
      responses:
        '200':
          description: Successful action response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  message:
                    type: string 

在这个例子中,POST 方法的requestBody定义了一个包含操作和参数的架构,这些参数作为必填字段。响应也被定义,指定了执行操作后返回的数据结构。

这是架构看起来像什么:

计算机屏幕截图 自动生成的描述

图 9.17:GitHub 动作架构的配置

这是我在此使用的完整架构:

openapi: 3.1.0
info:
  title: GitHub API
  description: API for interacting with GitHub, including pushing code to a repository.
  version: 1.0.0
servers:
  - url: https://api.github.com
    description: GitHub API server
paths:
  /repos/{owner}/{repository}/contents/{path}:
    put:
      operationId: updateFileContents
      summary: Create or update a file in a GitHub repository
      description: Use this endpoint to create a new file or update an existing file in a repository.
      parameters:
        - name: owner
          in: path
          required: true
          description: The owner of the repository.
          schema:
            type: string
        - name: repo
          in: path
          required: true
          description: The name of the repository.
          schema:
            type: string
        - name: path
          in: path
          required: true
          description: The file path in the repository.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: Commit message for the file change.
                content:
                  type: string
                  description: The new file content, Base64 encoded.
                sha:
                  type: string
                  description: SHA of the file being replaced, if updating.
                branch:
                  type: string
                  description: The branch where the file should be created or updated.
                committer:
                  type: object
                  properties:
                    name:
                      type: string
                    email:
                      type: string
              required:
                - message
                - content
      responses:
        '200':
          description: Successful file update or creation.
        '201':
          description: Successful file creation.
        '422':
          description: Validation failed or the file already exists.
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: token
  schemas:  # This subsection contains schema definitions (if needed).
    ExampleSchema:  # Example object schema
      type: object
      properties:
        exampleProperty:
          type: string 

为了允许动作与我的代码库通信,我在 GitHub 个人资料下的设置>开发者设置>个人访问令牌中创建了一个访问令牌。

你可以按照以下步骤测试连接:

计算机屏幕截图 自动生成的描述

图 9.18:测试动作的示例

现在我们来浏览一下代码库,看看它是否工作正常:

计算机屏幕截图 自动生成的描述

图 9.19:通过 GPT 动作上传文件的示例

太好了!正如你所看到的,我们现在有一个包含预定义内容的新文件。

现在我们来创建它并测试它:

  • 让我们从如何设置一个分类实验的简单问题开始(输出被截断):

计算机屏幕截图 自动生成的描述

图 9.20:DataScience 助手提供如何解决分类问题的指导示例

  • 按照这些说明,我们现在已经准备好设置我们的实验。我们想要解决众所周知的泰坦尼克号乘客生存预测问题。我们将上传我们的数据集(你可以在网上找到许多免费版本;我的是从github.com/datasciencedojo/datasets/blob/master/titanic下载的.csv 文件)并利用逻辑回归模型。

    注意

    泰坦尼克号生存预测任务是数据科学和机器学习中的一个经典问题。目标是根据年龄、性别、乘客等级、票价等特征预测泰坦尼克号上的乘客是否会生存,这是一个典型的用于教授分类技术的任务,模型在标记数据集上训练,然后用于预测新数据的结果。挑战在于选择相关特征、处理缺失数据以及选择合适的机器学习算法以实现准确的预测。

这是我的查询:

计算机屏幕截图 自动生成的描述

图 9.21:DataScience 助手设计泰坦尼克号生存实验的示例

我现在将分享一些模型对每个步骤的响应的屏幕截图:

  1. 加载数据

计算机屏幕截图 自动生成的描述

图 9.22:DataScience 助手执行实验步骤 1 的示例

  1. 探索和清理数据

计算机屏幕截图 自动生成的描述

图 9.23:DataScience 助手探索和清理数据的示例

注意,当你看到符号[>_]时,这意味着 Code Interpreter 插件已被触发。你可以点击它来查看执行的代码:

计算机程序屏幕截图  自动生成的描述

图 9.24:数据科学助理利用代码解释器插件生成的代码示例

  1. 特征工程

计算机屏幕截图  自动生成的描述

图 9.25:数据科学助理进行特征工程示例

  1. 数据拆分

计算机屏幕截图  自动生成的描述

图 9.26:数据科学助理将数据集拆分为训练集和测试集的示例

  1. 训练逻辑回归模型

计算机屏幕截图  自动生成的描述

图 9.27:数据科学助理训练逻辑回归模型的示例

  1. 评估模型

测试屏幕截图  自动生成的描述

图 9.28:数据科学助理评估模型输出的示例

这非常酷!它非常准确,可以节省大量时间。此外,如果你考虑在大企业中工作的数据科学家在多个项目中,拥有类似的助手也有助于在项目之间遵循固定标准,以确保维护在团队之间保持一致。

当然,保持主题专家在流程中(在这种情况下,是数据科学家)是至关重要的,因为我们不仅需要验证输出,还需要验证推理过程。

我们将要求我们的 GPT 将代码推送到我们的仓库。让我们看看它是如何工作的:

图 9.29:数据科学助理利用操作在 GitHub 上推送代码示例

如果我们点击链接,我们可以看到文件已成功上传:

计算机屏幕截图  自动生成的描述

图 9.30:通过数据科学助理操作上传的文件

这成功了!再次,这是一个例子,说明了 GPT 如何加快开发人员和数据科学家的生产力。按照通用框架设计数据科学实验,并启用无需切换到 GitHub 的推送工作流程可以节省宝贵的时间,这样数据科学家就可以专注于他们项目的核心方面。

营销助理

正如我们在第六章中看到的,AI 助理在这个领域非常有价值。事实上,生成文本内容——如社交媒体帖子、博客文章或营销活动——可能是这些模型表现最好的活动之一。

定义

撰稿人是专门从事撰写具有说服力和吸引力的内容的职业人士,通常用于营销和广告目的。他们的工作通常包括撰写促销材料,如广告、手册、网站、电子邮件、社交媒体帖子以及其他旨在说服受众采取特定行动(如购买或订阅服务)的内容形式。

在本节中,我们将创建一个针对此类活动的定制文案助手。为此,我给我的助手命名为 Copywriting Companion,并设置了以下配置组件:

  1. 指令:

Copywriting Companion 是一款多功能的助手,旨在帮助用户完成各种写作任务。它专门根据用户输入生成产品说明书,包括文本和图像,制作用于通讯或推广目的的电子邮件活动,为新产品创建吸引人的视觉内容,以及为不同平台撰写定制的社会媒体帖子。

在执行任务时,它确保逐步验证您的思维过程和推理。

它确保内容具有说服力、吸引人,并与目标受众保持一致,旨在有效提高参与度并推广产品或服务。助手会根据用户的需求调整其风格,并在所有输出中追求创意、清晰和相关性。它以轻松、友好的语气进行沟通,使互动感觉起来易于接近和轻松。

  1. 话题开启:

你能为我新产品写一个产品描述吗?

我需要一个关于攀岩文章的吸引人的标题

给我一些关于跑步博客文章的想法

  1. 功能:

白色背景的特写,自动生成的描述

图 9.31:Copywriting Companion 启用的插件

让我们看看它的实际效果:

  1. 我首先要求它从提供的图片开始写一个产品说明书(输出被截断):

图片

图 9.32:Copywriting Companion 生成产品描述的示例

作为一名文案撰写者,我可能希望将这组信息插入到一个更结构化的存储库中,比如一个 Excel 文件。让我们请助手这样做,利用它的代码解释器插件:

白色背景,黑色文字

图 9.33:Copywriting Companion 利用代码解释器插件将其之前的响应转换为 Excel 文件的示例

这是最终结果:

计算机屏幕截图,自动生成的描述

图 9.34:Copywriting Companion 生成的 Excel 文件

  1. 现在让我们要求助手生成一个 Instagram 帖子来赞助我们的鞋子:

计算机屏幕截图,自动生成的描述

图 9.35:Copywriting Companion 生成 Instagram 帖子的示例

正如您所看到的,助手还提出了一个利用 DALL-E 插件生成的图像描述。由于描述对我来说是有意义的,我将继续要求它生成:

图片

图 9.36:Copywriting Companion 利用 DALL-E 插件生成图像的示例

  1. 最后,我想了解一些主要竞争对手品牌——如耐克和阿迪达斯——如何进行他们的营销活动。为此,我将要求我的助手从网络上收集一些证据:

图片

图 9.37:文案伴侣利用 Web 浏览插件进行竞争分析的示例

如您所见,我们的伴侣正确地利用了 Web 浏览插件来检索所需信息。此外,它还为我们提供了关于两家竞争公司投资哪些领域的强大见解,这样我们就可以思考(或询问我们的伴侣)哪些独特的差异化因素可以帮助我们的品牌在竞争激烈的市场中脱颖而出。

我们还可以更进一步,通过利用代码解释器与数据分析插件来获取更多关于竞争的具体见解。比如说,我们创建了一个具有以下结构的 Excel 表:

图片 B31559_09_38.png

图 9.38:Excel 表上的竞争分析

现在我们想从中生成一些视觉内容。让我们请我们的文案伴侣来做这件事:

图表的截图  自动生成的描述

图 9.39:文案伴侣生成的柱状图和散点图示例

这里还有更多视觉内容:

图表屏幕截图  自动生成的描述

图 9.40:文案伴侣生成的折线图示例

如请求,执行报告也已生成:

文档的特写  自动生成的描述

图 9.41:文案伴侣生成的执行报告示例

总体而言,当涉及到生成新内容、设计营销策略和进行网络竞争分析时,为营销活动定制 ChatGPT 可以非常有用。

研究助理

在这种情况下,我们将再次专注于研究,但这次特别关注论文检索。更具体地说,我们希望我们的助手能够做到以下几点:

  • 从我们提供的自定义知识库中检索信息。

  • 将自定义文档与仅来自 arXiv 的论文集成,启用此任务的 Web 插件。

  • 从数据库(在我们的案例中,它将在 Notion 上托管)检索其他研究人员现有的正在进行的工作,这样我们就不会冒险覆盖已经被其他人覆盖的论文内容。

让我们看看所有步骤:

  1. 上传自定义文档。为此,我将使用两篇关于机器学习图像分类的论文:J. Bird 等人撰写的“CIFAKE:图像分类和可解释的 ai 生成合成图像识别”和 Khalis 等人撰写的“在图像分类任务中对视觉 Transformer 的全面研究”

  2. 您可以在配置面板的相关部分上传它们:

图片 B31559_09_42.png

图 9.42:在配置面板中上传自定义文档

  1. 将自定义文档与网络参考集成。为此,我们需要启用 Web 插件:

白色背景的特写  自动生成的描述

图 9.43:在配置面板中启用 Web 浏览插件

此外,我们还需要指定助手只能导航 arXiv 存档。我们将在我们创建的指令集中看到如何指定这一点。

  1. 从 Notion 数据库中检索信息。在这里,我们的想法是,作为研究人员,我们可能会提出一些已经被我们的同事研究和开发的想法。想象一下,我们跟踪所有正在进行的研究在一个具有以下结构的 Notion 数据库中:

白色背景,黑色文字  自动生成的描述

图 9.44:Notion 数据库结构

要做到这一点,我们需要创建 GPT 动作。要做到这一点,有两个步骤要遵循:

  1. 在你的 Notion 工作区中,你需要创建一个新的标记为内部的连接,并创建一个新的内部集成密钥(或 API 密钥)。你可以称这个连接为“chatgpt”或类似。

  2. 在你的 GPT 配置面板中,你需要设置一个新的动作架构。由于在我们的案例中我们需要查询特定的数据库,架构将看起来如下。当涉及到认证时,你可以点击认证并选择API 密钥。输入以下信息:

    • API 密钥:使用你在 Notion 中新建连接的内部集成密钥。

    • 认证类型:Bearer。

图 9.45:Notion 动作架构

整个架构看起来是这样的:

openapi: 3.1.0
info:
  title: Notion API
  description: API for interacting with Notion's pages, databases, and users.
  version: 1.0.0
servers:
  - url: https://api.notion.com/v1
    description: Main Notion API server
paths:
  /databases/{database_id}/query:
    post:
      operationId: queryDatabase
      summary: Query a database
      parameters:
        - name: database_id
          in: path
          required: true
          schema:
            type: string
        - name: Notion-Version
          in: header
          required: true
          schema:
            type: string
          example: 2022-06-28
          constant: 2022-06-28
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                filter:
                  type: object
                sorts:
                  type: array
                  items:
                    type: object
                start_cursor:
                  type: string
                page_size:
                  type: integer
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  results:
                    type: array
                    items:
                      type: object
                  next_cursor:
                    type: string
                  has_more:
                    type: boolean 

很好,现在我们已经有了所有配料,我们需要设置我们的系统消息和可选的对话开始。在这种情况下,我设置了以下指示:

你是一个 AI 研究助理,负责通过利用各种工具和资源来帮助研究人员。你的主要职责包括从自定义知识库、arXiv 上的学术论文以及存储在 Notion 数据库中的正在进行的研究项目中检索、整合和交叉引用信息。遵循以下指南以确保你的帮助准确、全面且避免重复:

  1. 始终根据提供的文档进行回答。

  2. 如果你觉得需要,可以在网上进行扩展搜索。你只能导航的网站是 arXiv。

  3. 如果用户要求,检查该主题是否已在 Notion 数据库中覆盖。

以下是对话开始:

VGGNet、ResNet 和 Inception 在图像分类的准确性和效率上有哪些不同?

图像分类模型面临哪些挑战,以及数据增强和迁移学习等技术如何帮助?

CNN 的深度如何影响图像分类,ResNet 的残差连接又是如何帮助的?

最终产品看起来是这样的:

图 9.46:我们的 ResearchGPT 的着陆页

让我们测试一下:

  1. 我会先提出一个通用问题,这个问题将由提供的论文来解答:

计算机屏幕截图  自动生成的描述

图 9.47:ResearchGPT 从提供的文档中检索知识的示例

  1. 然后,我想看看这个主题是否已经被涵盖:

聊天截图  自动生成的描述

图 9.48:ResearchGPT 使用预定义动作与 Notion 对话的示例

  1. 最后,我想将这个主题整合进去,使其独一无二:

聊天截图  自动生成的描述

图 9.49:ResearchGPT 使用网络浏览器插件的示例

如您所见,我们的助手可以利用我们提供的所有工具,在需要时调用 Notion 数据库。

摘要

在本章中,我们探讨了如何定制 GPT 以实现我们的特定目标。定制 ChatGPT 的可能性开辟了一个新的场景领域,其中高度专业化的 AI 助手成为专业人士的日常伴侣。此外,OpenAI 提供了一个无代码 UI 来创建 GPT,这样所有公民开发者不仅可以从可用的解决方案扩展的市场中受益,还可以从他们自己的创作中受益。

通过插件的扩展性和自定义知识库,定制的 GPT 可以为您执行无限的任务。然后,通过添加强大的动作,它们还可以与周围环境进行通信,并从“仅仅”生成进化到自动化。

通过本章,我们也总结了本书的第二部分,其中我们专注于 ChatGPT 的实用应用。从下一章开始,我们将更详细地介绍大型企业如何利用 OpenAI 模型并将它们嵌入到其业务流程中。

参考文献

加入我们的 Discord 和 Reddit 社区

对本书有任何疑问或想参与关于生成式 AI 和 LLMs 的讨论?加入我们的 Discord 服务器packt.link/I1tSU以及 Reddit 频道packt.link/jwAmA,与志同道合的爱好者们连接、分享和协作。

Discord 图标 二维码

第三部分

OpenAI 企业版

本部分将带您进入 OpenAI 模型在企业应用领域的世界。

这一部分首先介绍了 OpenAI 与微软的合作关系,以及随之而来的 Azure OpenAI 服务推向市场的举措,这是一项云管理的服务,它提供了 OpenAI 模型,具有云规模架构典型的所有可扩展性、灵活性和安全性。

接着,它回顾了本书涵盖的所有内容,包括最近几周发布的最新公告和发布信息。它还提供了一个部分,包含一些关于仅几个月内生成式人工智能技术指数级增长的反思和最终思考,以及未来可以期待的内容。

本部分包含以下章节:

  • 第十章利用 OpenAI 模型进行企业级应用

  • 第十一章结语与思考

第十章:利用 OpenAI 模型进行企业级应用

本章,我们将重点关注企业级应用 生成式人工智能GenAI)以及更具体地说,OpenAI 的模型。我们将看到不同行业近年来如何受到 GenAI 的巨大影响,以及出现了哪些趋势模式和应用程序。

本章中,我们将讨论以下主题:

  • 由强大的 LLMs 驱动的各个行业(包括医疗保健、金融服务、零售等)的最新进展,突出了最热门的应用案例

  • OpenAI 模型驱动的自定义应用程序背后的架构框架,揭示模型 API 的多功能性和采用情况

  • Azure OpenAI 介绍,这是微软基于云的服务,它反映了 OpenAI 的游乐场,并在 Azure 订阅范围内直接提供 OpenAI 的模型

到本章结束时,你将了解各个行业中主要的 GenAI 模式,以及如何在你的应用程序中利用 OpenAI 模型的 API。此外,你将对 Azure OpenAI 的云规模服务有一个更清晰的理解,以及如何在开发基于 AI 的解决方案时考虑道德因素。

技术要求

以下为本章的技术要求:

  • OpenAI 账户、聊天模型和嵌入模型部署

  • [可选] 一个 Azure 订阅和 Azure OpenAI 实例,包括聊天模型和嵌入模型部署

  • Python 3.7.1 或更高版本

你可以参考以下存储库以获取 OpenAI Python SDKs:https://github.com/openai/openai-python。

GenAI 如何颠覆行业

LLMs 和 GenAI 在一般意义上正在通过引入前所未有的自动化、创造力和效率来改变各个行业。近年来,我们见证了不同行业创新浪潮的巨大浪潮,所有这些行业都认为,如果不抓住 GenAI 机会,就意味着在竞争激烈的市场中落后。

让我们看看一些例子。

医疗保健

在医疗保健领域,通用人工智能(GenAI)和大型语言模型(LLMs)正在增强诊断、个性化医疗和行政任务:

案例研究

OpenAI 与 Summer Health 合作,Summer Health 是一家提供通过短信快速便捷获取儿科护理的健康服务公司。这次合作旨在通过整合 OpenAI 的高级语言模型来增强 Summer Health 平台的功能。这种集成使得对父母医疗咨询的响应更加高效和准确,为儿童的健康问题提供快速、可靠的医疗建议。这导致了效率的提高和及时性的改善,同时数据保持匿名。由 AI 驱动的平台帮助简化父母和医疗专业人员之间的沟通,提高了儿科护理的整体体验和可及性。

来源: https://openai.com/index/summer-health/.

金融

在金融领域,通用人工智能(GenAI)和大型语言模型(LLMs)正在改变风险管理、客户服务和投资策略:

案例研究

标准普尔评级公司(Moody’s Corporation),作为全球领先的信用评级、研究和风险分析提供商,已与微软合作开发由 GenAI 驱动的增强风险数据分析和研究解决方案。这次合作将标准普尔在金融风险和数据分析方面的广泛专业知识与微软先进的 AI 技术相结合。结果是提供实时洞察金融风险的工具集,使金融机构和其他利益相关者能够做出更精确的决策并改善风险管理。

来源:https://news.microsoft.com/2023/06/29/moodys-and-microsoft-develop-enhanced-risk-data-analytics-research-and-collaboration-solutions-powered-by-generative-ai/?msockid=2dc01bb6f864693933ed0eb3f9a668dc.

零售和电子商务

在零售和电子商务领域,GenAI 和 LLMs 正在提升客户体验、库存管理和个性化营销:

  • 客户体验:AI 驱动的聊天机器人提供个性化客户服务,帮助购物者找到产品、解决问题并完成购买。

  • 库存管理:LLMs 通过分析销售数据、季节性趋势和客户行为,帮助零售商预测需求并优化库存水平。

  • 个性化营销:通用人工智能(GenAI)正在推动超个性化营销活动。通过分析客户数据,AI 可以创建有针对性的广告和产品推荐。

案例研究

可口可乐公司推出了一项创新计划,邀请数字艺术家使用与谷歌云平台GCP)合作开发的新 AI 平台创作独特的艺术作品。该平台允许艺术家通过结合可口可乐的标志性品牌元素和他们的创造力来生成数字内容。名为“创造真实魔法”的这项计划利用先进的 AI 工具激发和赋权艺术家,促进与可口可乐品牌理念产生共鸣的数字艺术创作。该项目突显了 AI 如何在零售和消费品行业中架起创造力和技术之间的桥梁。

来源:https://brandthechange.com/creativity/create-real-magic-inside-coca-colas-first-ai-powered-campaign/#:~:text=The Coca-Cola Company has partnered with OpenAI and%2Cusing iconic creative assets from the Coca-Cola archives.

制造业

在制造业中,GenAI 和 LLMs 正在推动自动化、质量控制和供应链优化:

  • 自动化:AI 驱动的机器人和系统正在自动化重复性任务,如装配线工作和物料处理。

  • 质量控制:大型语言模型(LLMs)用于实时监控生产过程,识别缺陷或不效率。AI 系统可以分析传感器和摄像头数据,以检测产品中的异常,确保更高的质量。

  • 供应链优化:AI 模型通过预测需求、管理库存和选择供应商,帮助制造商优化其供应链。

案例研究

Iveco 集团,全球领先的商用车制造商,已与微软合作,将 Azure OpenAI 服务整合到其业务流程中。客户开发了一个名为“Chat IVG”的内部智能聊天机器人,可用于问答以及从组织自己的数据和文档中提取信息。此外,还在开发和部署大量用例和自主项目,这些项目要么利用 Chat IVG 的特定定制,要么以 Chat IVG 的架构为基础。Chat IVG 通过提升内部业务用户体验、提高各个业务单元的生产力以及实现更快、更高效的客户支持产生了重大影响。

来源:https://www.microsoft.com/en/customers/story/1706380538888475836-iveco-group-azure-openai-service-manufacturing-italy.

媒体和娱乐

在媒体和娱乐领域,生成式 AI 和 LLMs 正在革命性地改变内容创作、受众参与和媒体分发:

  • 内容创作:生成式 AI 被用于生成内容,从撰写文章到创作音乐。例如,《华盛顿邮报》使用 AI 撰写简短的新闻文章和报道,让记者能够专注于更复杂的故事。在音乐领域,像 OpenAI 的 MuseNet 这样的 AI 平台可以创作各种风格的原声音乐曲目,帮助音乐家在创作过程中。

  • 受众参与:LLMs 通过分析用户数据来提供个性化的内容推荐,保持受众的参与度。Netflix 使用 AI 根据观众的偏好推荐电影和电视剧,显著提高了观众的留存率。

  • 媒体分发:AI 通过分析受众人口统计和消费模式,也在优化媒体分发。Spotify 使用 AI 来创建个性化的播放列表,确保用户发现符合他们口味的全新音乐。

案例研究

微软的 Xbox 部门宣布与 Inworld AI 签订了一项多年合作协议,旨在开发用于游戏开发的先进生成式 AI 工具。这次合作旨在通过整合 Inworld 在生成式 AI 方面的专业知识与微软的 Azure OpenAI 服务和微软研究洞察力,来提升角色对话和叙事创作。目标是赋予游戏开发者创造更动态和沉浸式游戏体验的能力。

来源:https://developer.microsoft.com/en-us/games/articles/2023/11/xbox-and-inworld-ai-partnership-announcement/.

法律服务

在法律行业,生成式 AI 和 LLMs 正在改变研究、合同分析和案例预测:

  • 法律研究:AI 工具通过分析大量法律文件、案例法和法规来加速法律研究。例如,ROSS Intelligence 利用 AI 在几秒钟内为律师提供相关的案例法和法律先例,这原本需要手动查找数小时。

  • 合同分析:LLMs 被用于审查和分析合同,识别关键条款、风险和合规问题。这有助于加快谈判并确保合同无懈可击。Kira Systems 就是一个例子,它使用 AI 审查合同以进行尽职调查,识别条款和潜在风险。

  • 案例预测:GenAI 正在被用于根据历史数据预测法律案件的结果。通过分析过去的案例,AI 可以为律师提供可能判决的见解,帮助他们更好地制定策略。例如,Lex Machina 使用 AI 预测法官在知识产权纠纷中可能如何判决。

案例研究

Ironclad,一家领先的数字合同平台,已与 OpenAI 合作,将其高级 AI 功能集成到其法律工作流程中。通过利用 OpenAI 的语言模型,Ironclad 增强了其平台自动化合同分析、生成和审查法律文件以及更高效地向法律团队提供见解的能力。

这种集成使得合同处理更快、更准确,减少了手动审查所需的时间,并使法律团队能够专注于更高价值的工作。这种合作凸显了 AI 在通过提高合同管理中的准确性和生产力来转型法律行业中所日益增长的作用。

教育

在教育领域,GenAI 和 LLMs 正在改变学习体验、个性化教育和行政任务:

  • 学习体验:AI 驱动的平台正在根据学生的优势和劣势为学生创建个性化的学习路径。例如,Coursera 等平台使用 AI 推荐课程和资源,这些课程和资源是根据每个学习者的进度和偏好定制的。

  • 个性化教育:LLMs 可以通过回答问题、解释概念和提供作业反馈来辅导学生。Khan Academy 的 AI 辅导老师就是一个例子,为在特定主题上遇到困难的学生提供个性化帮助。

  • 行政任务:AI 还被用于自动化诸如评分和排程等行政任务。例如,Turnitin 使用 AI 来评分和检测剽窃,节省了教育者的时间并确保了学术诚信。

案例研究

可汗学院与 OpenAI 合作,将先进的 AI 功能整合到其教育平台上。通过集成 OpenAI 的语言模型,可汗学院能够提供个性化辅导,回答学生问题,并以更互动和动态的方式协助学习。这次合作旨在通过提供实时帮助和定制支持,增强教育体验,使学习更加便捷和有效。AI 驱动的工具帮助学生掌握复杂概念,提供即时反馈,并适应个人学习风格,进一步通过技术民主化教育。更多信息

来源

上述例子只是 GenAI 在各个行业中实现的可能性的一个子集。然而,有一个元素将所有涵盖的例子统一起来:在每个场景中,都通过利用 LLM API 构建了定制应用程序。

理解 OpenAI 模型 API

在本书的第一章中,我们看到了 LLM 如何在 AI 领域中引入范式转变:与“ChatGPT 时代之前”以 AI 为特色的定制、高度专业化的模型不同,LLM 现在能够被泛化并根据用户的查询处理不同的任务。

此外,还有一个额外的元素将 LLM 与之前的模型区分开来:实际上,LLM 通常作为预训练对象提供,任何人——即使没有任何 AI 领域的经验——也可以通过最简单的方式与之交互:自然语言。

当然,没有人阻止你从头开始设计和训练你的大型语言模型(LLM),但请注意,这至少需要:

  • 设计模型的技术知识

  • 大量的训练数据

  • 支持训练和推理阶段的专业基础设施

  • 在项目中投入大量时间

如果上述元素过去曾是许多 AI 开发者进入该领域的障碍,那么现在范式已经转变。实际上,新的焦点是如何高效地构建围绕 LLM 的所有内容,例如系统消息、向量数据库VectorDBs)、插件等等。这就是为什么现在使用 LLM 的 API 已经成为构建 GenAI 应用程序的验证模式。

什么是模型 API?

在讨论 OpenAI 模型 API 之前,让我们首先刷新一下 API 的定义。

应用程序编程接口API)是一套规则和工具,允许不同的软件应用程序之间相互通信。它就像一个翻译者,通过以标准化的方式共享数据和功能,帮助不同的程序或系统协同工作。例如,当你使用应用程序检查天气时,该应用程序使用 API 从天气服务获取天气信息。

图片

图 10.1:使用 API 收集信息的天气应用程序

现在,当涉及到 LLMs 的 API 时,机制是相似的。更具体地说,LLMs 的 API 属于 表示状态转移REST)API 的范畴,这意味着它们:

  • 使用标准 HTTP 方法(POST 用于发送提示,GET 用于检索数据)。

  • 通过 HTTP/HTTPS 进行通信。

  • 以 JSON 格式返回响应。

  • 遵循无状态模型,意味着每个请求都是独立的。

    定义

    REST API 是遵循 REST 原则的基于 Web 的 API,使用 HTTP 方法如 GET、POST、PUT 和 DELETE 通过 URL 与资源交互。它是无状态的,意味着每个请求都是独立的,并且通常以 JSON 格式交换数据。其他类型的 API 包括 SOAP,它依赖于 XML 进行结构化消息和严格的安全;GraphQL,它允许客户端请求特定数据以获得更多灵活性;gRPC,它使用 Protocol Buffers 进行高效的微服务通信;WebSockets,它使实时双向通信成为可能;以及 流式 API,它提供连续数据流,常用于 AI 响应和股市信息流。

让我们探讨您如何使用 OpenAI 模型的 API 来创建一个营销助理。这个助理帮助营销人员生成内容,如社交媒体帖子、电子邮件草稿、广告文案或博客文章想法。让我们分解整个过程:

  1. 发送请求

    • 使用您应用程序的营销人员可能会输入一个提示,例如:“创建一篇推广我们新环保产品系列的社交媒体帖子。”

    • 您的市场助理将此提示作为请求的一部分发送到 OpenAI 模型的 API。该请求包括提示和任何特定指令,包括要使用的模型——比如说,GPT-4o。

  2. 模型处理

    • OpenAI API 接收请求并使用指定的模型(在我们的例子中是 GPT-4o)处理提示。

    • 模型通过分析输入并利用其广泛的知识库生成响应。它考虑因素如目标受众、常见营销用语和期望的语气,以创建相关内容。

  3. 接收响应

    • API 将生成的内容作为响应发送回您的营销助理应用程序。

    • 例如,模型可能会生成类似以下内容:“兴奋地推出我们新的环保产品系列!可持续、时尚,完美适合有意识的消费者。加入我们,共同创造积极影响——现在购物并拯救地球,一次一个产品!#环保友好 #可持续性。”

  4. 显示响应

    • 您的应用程序从 API 接收内容并将其显示给营销人员。

    • 营销人员可以随后根据需要审查、编辑和发布内容,从而在内容创作过程中节省时间和精力。

  5. 附加功能

    • 定制:营销人员可以进一步定制请求。例如,他们可能会要求一系列帖子或请求变化以测试不同的营销角度。

    • 反馈循环:应用程序可能还允许营销人员对生成的内容进行评分。这种反馈可以用于微调未来的请求,随着时间的推移提高内容的关联性和质量。

  6. 幕后

    • API 密钥和身份验证:要使用 OpenAI API,您的应用程序需要一个 API 密钥(一个用于验证和识别向 API 发送请求的应用程序或项目的唯一字母数字字符串),这确保只有授权用户可以访问该服务。

    • 处理多个请求:OpenAI API 被设计为可以同时处理多个请求,这意味着它可以在不减速的情况下同时为许多营销人员提供服务。

    • 速率限制和成本:根据 API 使用情况,可能会有速率限制(例如,每分钟可以发送多少请求)以及与处理文本数量相关的成本。您的应用程序需要管理这些因素,可能通过优先处理某些请求或批量处理它们。

通过 API 消耗 OpenAI 模型为开发者提供了在自定义围绕 LLM 的应用逻辑方面的巨大灵活性。在下一节中,我们将看到如何使用 Python 实际利用这些 API。

如何使用 Python SDK 调用 OpenAI 模型的 API

要在您的编程 IDE 中使用 OpenAI 模型的 API,您首先需要从您的 OpenAI 账户创建一个访问令牌。

注意

在消耗 OpenAI 的 API 时,您将承担与模型使用成比例的费用。更具体地说,OpenAI 的定价模式是按令牌计费,其中令牌代表一段文本(大约 4 个英文字符)。为了估算您的令牌消耗——因此您的费用——您可以参考这篇文章链接:https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them

每个 API 请求都会根据输入(提示)和输出(响应)消耗令牌。价格因模型而异,更强大的模型每令牌的成本更高

您可以在 https://openai.com/api/pricing/找到 OpenAI 的定价模型。

要这样做,您可以遵循以下步骤:

  1. 导航到 https://platform.openai.com/api-keys

  2. 点击+ 创建新的密钥

图 10.2:OpenAI API 平台

  1. 这将创建一个新的 API 密钥,您可以将它保存在您选择的密钥库中。

一旦您创建了 API 密钥,您就可以使用以下脚本使用它来消耗您的模型:

from openai import OpenAI
client = OpenAI(api_key = "xxx")
response = client.chat.completions.create(
  model="gpt-4o",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is the recipe for Margherita Pizza?"}
  ]
) 

上述示例使用了 Python SDK。然而,您也可以按照 OpenAI 文档中的说明使用 Node.js 或 curl 进行调用。

注意

您客户端的架构可能因您使用的模型和数据格式而异。例如,如果您使用 gpt-4o-mini 进行图像处理,您的客户端将类似于以下结构:

response = client.chat.completions.create(

model=”gpt-4o-mini”,

messages=[

{

“role”: “user”,

“content”: [

{“type”: “text”, “text”: prompt},

{

“type”: “image_url”,

“image_url”: {“url”: f”data:{img_type};base64,{img_b64_str}”},

},

],

}

],

)

您可以在以下 GitHub 仓库github.com/openai/openai找到 OpenAI Python 库。

让我们检查响应是如何构建的(我截断了响应的内容):

response.to_dict()
{'id': 'chatcmpl-9znQeWUbRyGmy3pWf7VfFWAppMCo7',
 'choices': [{'finish_reason': 'stop',
   'index': 0,
   'logprobs': None,
   'message': {'content': 'To make Margherita Pizza […]
    'role': 'assistant'},
   'content_filter_results': {'hate': {'filtered': False, 'severity': 'safe'},
    'self_harm': {'filtered': False, 'severity': 'safe'},
    'sexual': {'filtered': False, 'severity': 'safe'},
    'violence': {'filtered': False, 'severity': 'safe'}}}],
 'created': 1724515040,
 'model': 'gpt-4o-2024-05-13',
 'object': 'chat.completion',
 'system_fingerprint': 'fp_abc28019ad',
 'usage': {'completion_tokens': 193, 'prompt_tokens': 55, 'total_tokens': 248},
 'prompt_filter_results': [{'prompt_index': 0,
   'content_filter_results': {'hate': {'filtered': False, 'severity': 'safe'},
    'self_harm': {'filtered': False, 'severity': 'safe'},
    'sexual': {'filtered': False, 'severity': 'safe'},
    'violence': {'filtered': False, 'severity': 'safe'}}}]} 

如您所见,有许多组件构成了响应对象:

  • id: 这是 API 调用的唯一标识符。在这种情况下,chatcmpl-9znQeWUbRyGmy3pWf7VfFWAppMCo7是与这个特定的聊天完成请求相关联的特定 ID。

  • choices: 这是一个包含模型生成的不同可能响应(选择)的数组。在这个响应中,只有一个选择(index 0),这对于大多数单响应完成来说是典型的:

    • index: 表示此特定选择在选择列表中的位置(在这种情况下,0)。

    • finish_reason: 表示模型停止生成令牌的原因。stop通常意味着模型自然到达其响应的末尾,无需截断。

    • logprobs: 如果启用,这将包含完成中每个令牌的对数概率。这里为None,表示你没有请求此信息。

    • message: 包含响应的内容('content')和说话者的角色('role'):

      • content: 辅助生成的实际文本,在这个例子中是关于支持客户管理密钥的 Azure AI 服务的响应

      • role: 对话中说话者的角色,这里为‘assistant’,表示响应来自 AI 助手

    • content_filter_results: 这包含响应的内容过滤结果,检查类别如仇恨、自残、性内容和暴力中的任何有害内容。在这种情况下,所有类别都被标记为'safe''filtered': False,表示未检测到任何问题内容。

  • created: 这是一个表示响应生成时间的戳记。数字1724515040是 UNIX 时间戳(自 1970 年 1 月 1 日起的秒数)。

  • model: 这表示生成响应的模型的版本。

  • object: 这表示返回的对象类型。在这种情况下,'chat.completion'表示这是一个来自聊天 API 的完成。

  • system_fingerprint: 这是一个 OpenAI 用于跟踪或诊断处理请求的系统的内部标识符。'fp_abc28019ad'是此交易的特定指纹。

  • usage: 此对象跟踪 API 调用的令牌使用情况:

    • completion_tokens: 生成响应中使用的令牌数(193 个令牌)

    • prompt_tokens: 输入提示中使用的令牌数(55 个令牌)

    • total_tokens: 请求中消耗的总令牌数,这是提示和完成令牌的总和(248 个令牌)

  • prompt_filter_results:这个数组包含在生成响应之前应用于输入提示的内容过滤结果。它确保提示不包含有害内容。与选择部分中的content_filter_results一样,它包括对仇恨、自残、色情内容和暴力的检查。所有这些都标记为'safe''filtered': False,表示未发现任何问题。

在所有输出参数中,当涉及到管理可能有害的结果时,content_filter_results可能特别相关。事实上,你可能希望对可能有害的内容采取更加保守的方法,无论是输入还是输出。如果是这种情况,你可以简单地实施一个确定性规则,防止模型进一步处理任何触发特定风险级别的请求。

这是一个有意义的例子,说明了利用 OpenAI 模型 API 如何为围绕 LLM 构建应用逻辑提供极大的灵活性。

使用模型 API 构建应用的架构模式

通用人工智能(GenAI)和大型语言模型(LLMs)的兴起为软件开发领域带来了革命性的变革。事实上,从“现代应用”——指的是基于微服务架构和 CI/CD 的快速创新——我们现在谈论的是“智能应用”,这些应用通过自然语言交互、数据驱动体验和新模型发布速度注入了 GenAI 模型。

一个智能应用可以用以下插图来描述:

计算机网络的示意图  描述由中等置信度自动生成

图 10.3:由 LLM 提供动力的智能应用的解剖结构

在上述架构中,我们用以下特性描述了智能应用的解剖结构:

  • 它具有自然语言界面(可能是基于文本或语音的)。

  • 它由一个作为应用“大脑”的 LLM 提供动力。

  • 它有一个模型可以查询的知识库,通常使用检索增强生成RAG)技术。

  • 它有一套工具或插件,可以用来与外部环境交互。

这种软件开发的新范式带来了一组典型的人工智能应用的新应用组件。让我们更详细地探讨这些新组件。

新的应用组件

在 AI 开发方面,主要的转变是指我们与模型合作的方式:从生产模型,现在的趋势是消费模型,正如我们多次提到的,这些模型不过是 API。

这种转变导致了一系列新的软件开发组件(或现有组件的调整)在开发领域的出现:

  • 模型:模型就是我们决定嵌入到我们应用中的 LLM 类型。主要有两种模型类别:

    • 专有 LLM:由特定公司或组织拥有的模型。例如,由 OpenAI 开发的 GPT-4o,或由 Google 开发的 Gemini。由于它们的源代码和架构不可用,这些模型不能从头开始使用自定义数据进行重新训练,但在需要时可以进行微调。

    • 开源:具有代码和架构自由可用和分发的模型,因此它们也可以从零开始使用自定义数据进行训练。例如,由阿布扎比的技术创新研究所TII)开发的 Falcon LLM,以及由 Meta 开发的 Llama。

  • 系统消息:这是我们提供给模型的指令集,它会影响我们 AI 应用的风格和行为。我们可以在元提示中直接塑造许多功能,包括:

    • 通过指定模型只引用提供的知识库来减少幻觉(这个过程被称为“扎根”)

    • 通过指定,例如,不响应恶意查询或不要生成可能有害的响应来实施负责任的 AI 实践

    • 指示模型在回答之前总是提出一个额外的问题来巩固上下文

  • 记忆与 VectorDB:当我们谈论 AI 应用中的记忆时,我们需要区分两种类型的记忆:

    • 短期记忆:这是应用保持用户与 LLM 之间交互在上下文窗口中的能力。这意味着每条消息都会为模型的现有元提示提供输入,而无需用户重复已经提到的内容。

    • 长期记忆:这种类型的记忆指的是我们使用嵌入提供的模型的外部知识库。在这种情况下,我们通常利用 VectorDBs,这是一种新型数据库(或现有数据库的新功能),它存储了提供的文档的数值表示。

      定义

      VectorDB 是一种基于向量嵌入存储和检索信息的数据库类型,这些嵌入是捕获文本意义和上下文的数值表示。通过使用 VectorDB,你可以根据意义的相似性而不是关键词进行语义搜索和检索。一些 VectorDB 的例子包括 Chroma、FAISS、Elasticsearch、Milvus、Pinecone、Qdrant 和 Weaviate。

  • 工具/插件:这些可以被视为可以集成到 LLM(大型语言模型)中的附加模块或组件,以扩展其功能或适应特定的任务和应用。这些插件作为附加组件,增强了 LLM 在核心语言生成或理解能力之外的特性。

插件的背后理念是使 LLM 更加灵活和适应性强,允许开发者和用户根据他们的特定需求定制语言模型的行为。可以创建执行各种任务的插件,并且它们可以无缝地集成到 LLM 的架构中。

以下是一个由 LLM 驱动的应用程序的主要组件的说明:

计算机程序图  自动生成的描述

图 10.4:LLM 驱动应用程序的高级架构

如上图所示,高级架构的核心是 AI 调度器。通过 AI 调度器,我们指的是使嵌入和调度 LLM 在应用程序中变得更容易的轻量级库。

AI 调度器

由于 LLM 在 2022 年底走红,市场上已经出现了许多库。在接下来的几节中,我们将重点关注其中的三个:LangChain、Semantic Kernel 和 Haystack。

LangChain

LangChain 是由 Harrison Chase 在 2022 年 10 月作为开源项目推出的。它可以在 Python 和 JS/TS 中使用。

LangChain 是一个用于开发由语言模型驱动的应用程序的框架,使其具备数据感知(具有扎根)和代理性——意味着能够与外部环境交互。

LangChain 为我们之前提到的与语言模型一起工作的组件提供了模块化抽象,例如提示、记忆和插件。除了这些组件之外,LangChain 还提供了预构建的 ,这些链是组件的结构化连接。这些链可以是针对特定用例预构建的,也可以是定制的。

总体而言,LangChain 具有以下核心模块:

  • 模型:这些是将成为应用程序引擎的 LLM 或大型基础模型。LangChain 支持专有模型,例如 OpenAI 和 Azure OpenAI 中可用的模型,以及可以从 Hugging Face Hub 消费的开源模型。

    定义

    Hugging Face 是一家公司和社区,它构建和分享自然语言处理(NLP)和其他机器学习领域的最先进模型和工具。它开发了 Hugging Face Hub,这是一个人们可以创建、发现和协作机器学习模型、LLM、数据集和演示的平台。Hugging Face Hub 在各个领域和任务中托管了超过 120k 个模型、20k 个数据集和 50k 个演示,例如音频、视觉和语言。

除了模型之外,LangChain 还提供了许多与提示相关的组件,使管理提示流程变得更容易。

  • 数据连接:这些是指构建块,用于检索我们希望提供给模型的额外非参数化知识。数据连接的例子包括文档加载器或文本嵌入模型。

  • 记忆:它允许应用程序在短期和长期内保留对用户交互的引用。它通常基于存储在 VectorDB 中的矢量嵌入。

  • :这些是预定的一系列动作和对 LLM 的调用,这使得构建需要将 LLM 与彼此或其他组件链接的复杂应用程序变得更容易。链的一个例子可能是:获取用户查询,将其分成更小的部分,嵌入这些部分,在 VectorDB 中搜索相似的嵌入,使用 VectorDB 中最相似的三个部分作为上下文来提供答案,生成答案。

  • 代理:代理是驱动 LLM 驱动的应用程序中决策的实体。它们可以访问一系列工具,并根据用户输入和上下文决定调用哪个工具。代理是动态和自适应的,这意味着它们可以根据情况或目标改变或调整其行为。

干草堆

干草堆是一个基于 Python 的框架,由 deepset 开发,deepset 是一家成立于 2018 年的柏林初创公司,由 Milos Rusic、Malte Pietsch 和 Timo Möller 创立。deepset 为开发者提供构建基于 NLP 的应用程序的工具,随着干草堆的引入,他们将其提升到了新的水平。

干草堆具有以下核心组件:

  • 节点:这些是执行特定任务或功能的组件,例如检索器、阅读器、生成器、摘要器等。节点可以是 LLM 或其他与 LLM 或其他资源交互的实用工具。在 LLM 中,干草堆支持专有模型,例如 OpenAI 和 Azure OpenAI 中可用的模型,以及来自 Hugging Face Hub 的开源模型。

  • 管道:这些是调用执行自然语言任务或与其他资源交互的节点的序列。管道可以是查询管道或索引管道,这取决于它们是在一组文档上执行搜索还是为搜索准备文档。管道是预先确定和硬编码的,这意味着它们不会根据用户输入或上下文进行更改或适应。

  • 代理:这是一个使用 LLM 生成对复杂查询准确响应的实体。代理可以访问一系列工具,这些工具可以是管道或节点,并且可以根据用户输入和上下文决定调用哪个工具。代理是动态和自适应的,这意味着它可以根据情况或目标改变或调整其行为。

  • 工具:代理可以调用的函数,用于执行自然语言任务或与其他资源交互。工具可以是代理可用的管道或节点,它们可以分组到工具包中,工具包是一组可以完成特定目标的工具集。

  • 文档存储:这些是存储和检索用于搜索的文档的后端。文档存储可以基于不同的技术,包括 VectorDB(例如 FAISS、Milvus 或 Elasticsearch)。

Haystack 以其简单易用而闻名,具有模块化架构,允许开发者构建用于语义搜索和问答等任务的定制管道。这种设计使其特别适合RAG应用,其中高效的数据检索至关重要。

Semantic Kernel

Semantic Kernel是我们将在本章中探索的第三个开源 SDK。它由微软开发,最初是用 C#编写的,现在也提供了 Python 版本。

这个框架的名字来源于“内核”的概念,一般而言,内核指的是系统的核心或本质。在这个框架的上下文中,内核的作用是作为引擎,通过链式和串联一系列组件形成管道,鼓励函数复合

定义

在数学中,函数复合是将两个函数组合起来创建一个新函数的方法。其思想是使用一个函数的输出作为另一个函数的输入,形成一个函数链。两个函数 f 和 g 的复合表示为,其中首先应用函数,然后是函数

计算机科学中的函数复合是一个强大的概念,通过将较小的函数组合成较大的函数,可以创建更复杂和可重用的代码。它增强了模块化和代码组织,使程序更容易阅读和维护。

Semantic Kernel 具有以下主要组件:

  • 模型:这些是作为应用引擎的 LLM 或大型基础模型。Semantic Kernel 支持专有模型,例如 OpenAI 和 Azure OpenAI 中可用的模型,以及可以从 Hugging Face Hub 获取的开源模型。

  • 内存:这允许应用程序在短期和长期内保持对用户交互的引用。在 Semantic Kernel 的框架内,可以通过三种方式访问记忆:

    • 键值对:这包括保存存储简单信息的环境变量,例如名称或日期。

    • 本地存储:这包括将信息保存到可以按其文件名检索的文件中,例如 CSV 或 JSON 文件。

    • 语义记忆搜索:这与 LangChain 和 Haystack 的记忆相似,因为它使用嵌入来表示和基于其意义搜索文本信息。

  • 函数:函数可以看作是混合 LLM 提示和代码的技能,目的是使用户的请求可解释和可操作。有两种类型的函数:

    • 语义函数:这些基本上是一个模板化的提示,它是一个自然语言查询,指定了 LLM 的输入和输出格式,同时也结合了提示配置,该配置设置了 LLM 的参数。

    • 原生函数:这些是指可以路由语义函数捕获的意图并执行相关任务的本地计算机代码。

举个例子,一个语义函数可能会要求 LLM 写一段关于 AI 的短段落,而一个原生函数实际上可以在 LinkedIn 等社交媒体上发布。

  • 插件:这些是连接到外部来源或系统的连接器,旨在提供额外的信息或执行自主操作的能力。语义内核提供了现成的插件,例如 Microsoft Graph 连接器套件,但您可以通过利用函数(无论是原生还是语义,或者两者的混合)来构建自定义插件。

  • 规划器:由于 LLM 可以被视为推理引擎,它们也可以被用来自动创建链或管道以满足新用户的需求。这个目标是通过一个规划器实现的,它是一个接受用户任务作为输入并产生实现目标所需的一组动作、插件和函数的函数。

下面是语义内核解剖结构的插图:

技术视角下的发生情况

图 10.5:语义内核的解剖结构。来源:https://learn.microsoft.com/en-us/semantic-kernel/overview/

总体而言,这三个框架提供了更多或更少的类似核心组件,有时被称为不同的分类法,但涵盖了协同系统概念中所示的所有块。因此,一个自然的问题可能是,“我应该使用哪一个来构建我的 LLM 驱动应用程序?”

下面是一些您可能想要考虑的标准:

  • 您熟悉或更愿意使用的编程语言。不同的框架可能支持不同的编程语言或具有不同程度的兼容性或集成。例如,语义内核支持 C#、Python 和 Java,而 LangChain 和 Haystack 主要基于 Python(尽管 LangChain 也引入了 JS/TS 支持)。您可能希望选择一个与您的现有技能或偏好相匹配的框架,或者允许您使用最适合您的应用领域或环境的语言。

  • 您想要执行或支持的自然语言任务类型和复杂性。不同的框架可能具有不同的能力或特性来处理各种自然语言任务,例如摘要、生成、翻译、推理等。例如,LangChain 和 Haystack 提供了编排和执行自然语言任务的实用工具和组件,而语义内核允许您使用自然语言语义函数来调用 LLM 和服务。您可能希望选择一个提供您应用目标或场景所需的功能和灵活性的框架。

  • 您需要或希望对 LLMs 及其参数或选项进行定制和控制的程度。不同的框架可能有不同的方式来访问、配置和微调 LLMs 及其参数或选项,例如模型选择、提示设计、推理速度、输出格式等。例如,Semantic Kernel 提供了连接器,使得向你的 AI 应用添加记忆和模型变得容易,而 LangChain 和 Haystack 允许你将不同的组件插入到 DocumentStore、检索器、阅读器、生成器、摘要器和评估器中。你可能希望选择一个能够提供你对 LLMs 及其参数或选项所需或希望达到的定制和控制程度的框架。

  • 框架的文档、教程、示例和社区支持的可获得性和质量。不同的框架可能具有不同水平的文档、教程、示例和社区支持,这些支持可以帮助你学习、使用和调试框架。例如,Semantic Kernel 有一个包含文档、教程、示例和 Discord 社区的网站;LangChain 有一个包含文档、示例和问题的 GitHub 仓库;Haystack 有一个包含文档、教程、演示、博客文章和 Slack 社区的网站。你可能希望选择一个具有文档、教程、示例和社区支持的可获得性和质量,这可以帮助你开始使用框架并解决相关问题的框架。

好吧,没有正确或错误的答案!上面讨论的三个编排器都非常有效。然而,某些功能可能更适合特定的用例或开发者的偏好。根据这一点做出你的选择。

介绍公共云:Azure OpenAI

2016 年,OpenAI 同意利用微软的 Azure 云基础设施来运行其 AI 实验,这导致了 2019 年科技巨头对萨姆·奥特曼的公司(news.microsoft.com/2019/07/22/openai-forms-exclusive-computing-partnership-with-microsoft-to-build-new-azure-ai-supercomputing-technologies/)投资了 10 亿美元。

这标志着两家公司之间战略合作的开始,旨在开发对人类有益的 AI 模型和技术。这个合作基于以下三个主要支柱:

  • 微软和 OpenAI 将共同构建新的 Azure 超级计算基础设施来训练 AI 模型。

  • OpenAI 将从 Azure 云中提供其模型和技术。

  • 微软将成为 OpenAI 在市场上商业化新 AI 解决方案的首选合作伙伴。

自那时起,两家公司一直持续投资和研究,最终在 2023 年 1 月,OpenAI 模型作为托管服务在 Microsoft Azure 上提供:Azure OpenAI Service(简称,AOAI)。

随着 AOAI 服务的全面上市,我们达到了一个新的里程碑,并且微软的人工智能产品组合通过 OpenAI 强大的 LLMs 得到了扩展。

AOAI 服务

AOAI 服务是微软的一个产品,它提供了一个游乐场和 API,用于与 OpenAI 的所有强大语言模型进行交互和消费。重要的是要强调,模型是完全相同的:唯一的区别是,如果您通过 AOAI 消费它们,您将利用自己的 Azure 订阅,并自动继承所有典型的微软公共云企业功能,包括安全、基于角色的访问控制、数据隐私等。

要创建您的 AOAI 资源,请按照以下说明操作:

  • 导航到您的 Azure 站点 ms.portal.azure.com/

  • 点击创建资源

  • 输入 azure openai 并点击创建

  • 填写所需信息并点击Review + create

如下截图所示:

图片 B31559_10_06.png

图 10.6:创建 AOAI 资源步骤

此过程可能需要几分钟。一旦准备就绪,您可以直接跳转到其用户友好的界面 AOAI Studio,在部署之前测试您的模型:

图片 B31559_10_07.png

图 10.7:AOAI Studio 和聊天游乐场

要使用 AOAI 模型,您必须启动一个部署,这是一个可以附加到模型的无服务器计算实例。

计算机截图,描述自动生成

图 10.8:通过 Azure OpenAI 站点创建新的 AOAI 部署

最后,就像我们在上一节中为 OpenAI 模型 API 所做的那样,从 AOAI Studio,您可以通过 API 消费您已部署的模型。为了快速入门,您可以导航到聊天游乐场并点击查看代码按钮。一个脚本将准备好复制粘贴到您喜欢的编程 IDE 中,以及访问资源所需的秘密密钥:

图片 B31559_10_09.png

图 10.9:通过 API 消费已部署的模型

通过这样做,您可以将 Azure OpenAI 的 LLMs 无缝地集成到您自己的应用程序中。

摘要

在本章的开头,我们概述了 GenAI 如何颠覆行业,从提高内部流程的效率到通过个性化体验增强客户的旅程。许多这些应用可以通过高度的定制来实现,而预构建的面向消费者的应用程序,如 ChatGPT,可能就不够了。

正因如此,我们引入了 OpenAI 模型 API。通过模型 API,您可以在自己的应用程序中利用 ChatGPT 背后模型的力量,根据您自己的行业和场景进行定制。然而,开发 AI 驱动的应用程序需要一套新的组件,这也标志着软件开发领域的新范式。

最后,我们看到从 2023 年起,OpenAI 模型(无论是在游乐场中还是在通过 API 中)已通过 Microsoft Azure 作为托管服务:Azure OpenAI 提供使用。这为大型企业采用新的一波铺平了道路,这些企业可以从公共云中已有的所有安全和治理层中受益(按设计,企业级就绪)。

在下一章中,我们将回顾本书涵盖的所有内容,包括最新的公告和发布。我们还将关注在短短几个月内生成式 AI 技术的指数级增长以及未来可以期待的内容。

参考文献

加入我们的 Discord 和 Reddit 社区

对这本书有疑问或想参与关于生成式 AI 和 LLMs 的讨论?加入我们的 Discord 服务器packt.link/I1tSU和 Reddit 频道packt.link/jwAmA,与志同道合的爱好者连接、分享和协作。

序言和结语

你已经走到了这里——恭喜!我希望你觉得这本书很有趣,并且它帮助你朝着你的目标前进。

撰写这本书的第二版让我深思,考虑到两个版本之间发生的变化和成就数量是惊人的,考虑到仅仅过去了一年多。

即使在撰写这一版时,事情也在迅速变化,这使得撰写最后一章的工作非常困难。

因此,我想利用本章作为 OpenAI 之外当前大型基础模型LFMs)的汇编,以及生成式人工智能AI)领域的最有希望的研究领域和围绕这些新强大模型出现的担忧。

更具体地说,我们将涵盖以下主题:

  • 到目前为止我们所学的概述

  • 并非所有都是关于 OpenAI

  • 生成式 AI 的伦理影响以及为什么我们需要负责任的 AI

  • 近期可以期待什么

到本章结束时,你将更全面地了解生成式 AI 领域的最先进发展,它如何影响行业,以及在新发展和社会关注方面可以期待什么。

到目前为止我们所学的概述

我们从介绍生成式 AI 的概念及其各种应用开始这本书。我们看到了生成式 AI 不仅关乎文本,还关乎图像、视频和音乐。

第二章中,我们转向了研究将生成式 AI 推向最大普及的公司:OpenAI。成立于 2015 年,OpenAI 主要专注于一种特定类型的生成模型,生成预训练转换器GPT)。然后,在 2022 年 11 月,OpenAI 发布了 ChatGPT,这是一个由 GPT 模型驱动的免费网络应用程序,用于对话助手。它获得了巨大的关注度,仅用五天时间就达到了一百万用户!

ChatGPT 已经是一个颠覆性的产品。它对日常生产力和各个行业领域的影响是巨大的。我们还在第三章中看到了如何正确设计使用生成模型如 ChatGPT 时最重要的元素:提示。提示是用户的输入,不过是自然语言中的指令。设计提示是获取你生成模型最大价值的关键步骤,以至于提示工程已经成为一个新的研究领域。

一旦我们熟悉了 ChatGPT 和提示设计,我们就转向了第四章,在那里我们终于得到了 ChatGPT 如何提高你的日常生产力并成为你的日常助手的具体例子。从电子邮件生成到提高你的写作技巧,我们看到了 ChatGPT 的生成能力如何改善许多活动。

但我们并没有停止在这里。通过第五章、第六章、第七章和第八章,我们看到了 ChatGPT 如何不仅提高日常生产力,还能提升特定领域的活动——对于开发者来说,从代码生成和优化到解释机器学习模型;对于营销人员来说,从新产品开发到改进搜索引擎优化SEO);对于研究人员来说,从实验设计到基于研究的演示文稿生成;对于那些需要视觉创意助手的人来说,从设计建议到图像和画布的创建。

此外,在第九章中,我们探讨了如何通过构建高度专业化的助手 GPT,利用 OpenAI 的 GPT Store,进一步定制所有之前的 ChatGPT 功能(代码生成、市场研究等)。有了 GPT,用户可以构建利用 ChatGPT 背后模型力量的个人助手,同时受益于更专业和范围更广的行为,利用用户自身提供的知识库、插件和精确指令——这一切都不需要编写一行代码!

通过第十章,我们将对话转向企业层面,探讨 OpenAI 的模型也可以通过 API 进行消费,并嵌入到定制应用程序中。这允许个人和组织构建强大的 AI 增强应用程序,这些应用程序受益于 OpenAI 的 LLMs,同时在后端应用程序逻辑和前端 UI 方面提供了极大的灵活性。

这段旅程旨在让您对我们讨论的流行词汇,如 ChatGPT、OpenAI 和 LLMs,有更清晰的了解。

然而,在下一节中,我们将看到最近几个月 AI 的快速发展是如何在已有的基础上带来全新的技术的。

并非一切都与 OpenAI 有关

在整本书中,我们涵盖了“所有关于 OpenAI 的内容”。众所周知,OpenAI 是生成式 AI 领域的第一个进入者。很难否认 ChatGPT 的推出是标志着 AI 领域所谓范式转变的里程碑,从两个角度来看:

  • 从技术角度来看,ChatGPT(或者更准确地说,它背后的模型——GPT-3.5-turbo)在它上线时(2022 年 11 月)是最强大的 LLM。这给了 OpenAI 一个竞争对手难以衡量的竞争优势。

  • 从行为角度来看,ChatGPT“打破了互联网”的界限,因为几乎每个人都对其易用性和非凡的能力感到震惊。这导致了一波新的用户,尽管他们不是 AI 专家,但对这个问题产生了兴趣,并开始探索产品的无限能力,几个月来不断提高期望值。

然而,在 2022 年 11 月之后不久,许多其他参与者进入了市场,并开始用新的条目填充 LFMs 的格局,既有专有技术也有开源技术。

让我们探索一些目前的关键参与者。

Mistral AI

这家总部位于法国的公司在其开源模型方面取得了显著进展。Mistral AI 因其 Mistral 7B 和 Mixtral 模型而闻名,这些模型因其性能和效率而受到赞誉。该公司致力于创建高度能效的模型,使其对更广泛的 AI 社区可访问,通过开源贡献促进创新。他们的模型旨在处理各种任务,从文本生成到代码补全,成为 AI 工具箱中的多功能工具。

Meta

Meta 在推进大型语言模型(LLM)方面发挥了关键作用,特别是其大型语言模型 Meta AILLaMA)系列。这些模型在推动 LLM 所能达到的边界方面发挥了重要作用,特别是在可扩展性和效率方面。Meta 的研究集中在优化训练这些大型模型所需的基础设施上,确保它们可以有效地部署在各种应用中。他们的工作还强调了开源模型的重要性,允许全球开发者在其创新的基础上构建。

微软

正如我们在第十章中提到的,微软通过多年的合作,利用其 Azure 平台支持 OpenAI 的开发和部署。微软还将其 Azure 平台上提供的整个 LLM 目录通过 API(包括专有和开源)公开。

除了其合作伙伴关系外,微软还开发了其自己的 Phi 系列模型。Phi-3 系列模型,包括 Phi-3-mini、Phi-3-small 和 Phi-3-medium,旨在高度高效且成本效益高。这些模型在各种基准测试中表现出色,在语言理解、推理、编码和数学等任务上优于更大的模型。例如,Phi-3-mini 支持高达 128K 个标记的上下文窗口,使其适用于不同的应用非常灵活。微软专注于优化这些模型,以便在各种平台上部署,包括 Azure AI、Hugging Face 和本地环境,确保它们对广泛的用户既可访问又实用。这种致力于开发稳健、可扩展和高效的模型,突显了微软在生成 AI 领域的重要贡献。

谷歌

谷歌凭借其 Gemini 模型在多模态应用领域处于领先地位,这些模型能够处理和生成各种格式的内容,包括文本、图像和视频。谷歌在检索增强生成RAG)方面的创新通过整合来自云数据库的实时数据,提高了大型语言模型(LLM)输出的准确性和可靠性。这种方法有助于缓解诸如幻觉等问题,确保生成的内容既相关又准确。

Anthropic

Anthropic 开发了 Claude 系列大型语言模型,这些模型以其安全性和伦理考量而闻名。Claude 模型旨在最小化偏见并促进公平,使其适用于广泛的用途。

Anthropic 对负责任 AI 开发的关注在行业中树立了高标准,确保其模型不仅强大,而且符合伦理指南。对安全和透明的承诺使 Claude 在生成式 AI 社区中成为一个值得信赖的品牌。

在生成式 AI 市场中,LLM 的激增正在呈指数增长。然而,重要的是要承认,我们选择“最适合我们应用的最好 LLM”的选择不应该仅仅基于平均性能最高的模型。截至写作时,有许多在特定领域或专业知识(如数学推理、代码生成、特定语言等)上训练的 LLM,平均性能远低于像 OpenAI 的 o1 这样的通用模型。尽管如此,在开发我们的应用程序时,我们可能需要考虑不同的变量。

例如,我们可能对具有特定行业特定分类法非常具体理解的模型感兴趣。如果是这样,我们可能希望利用为这一目的训练和微调的 LLM,比如微软的 BioGPT。或者,我们可能需要在本地运行我们的模型,在不连接的场景中(想想海洋中部的离岸工厂);如果是这样,我们无法运行,比如说,GPT-4o——首先,因为它是一个专有模型,不能“下载”;其次,我们是否有能够托管超过 100 万亿参数的超级计算机?

有许多场景需要除了“最先进”的模型之外的模型,评估特定用例所需模型类型是新一代与 AI 相关工作的部分职责。

生成式 AI 的伦理影响以及为什么我们需要负责任的 AI

前一节强调了随着生成式人工智能技术的广泛知识和采用,一个普遍的关注正在上升。

人工智能技术的快速发展带来了大量的伦理考虑和挑战,必须仔细解决以确保其负责任和公平的部署。其中一些列在这里:

  • 数据隐私和安全:由于人工智能系统在学习和决策过程中高度依赖数据,确保数据隐私和安全变得至关重要。在生成式人工智能的背景下,这是一个影响最初用于训练模型的数据的话题。尽管 ChatGPT 用于生成响应的知识库是公开的,但使用这些信息生成响应的涉及用户的同意阈值在哪里?

  • 偏见和公平性:人工智能模型通常从历史数据中学习,这可能会无意中引入偏见。解决人工智能系统中的偏见和公平性问题包括以下方面:

    • 多样化的数据集:确保训练数据多样化,并代表各种人口统计特征,可以帮助减少人工智能模型中的偏见。

    • 算法公平性:开发优先考虑公平性且不对特定人口群体进行歧视的算法至关重要。

    • 监控和审计:定期监控和审计人工智能系统可以帮助识别和纠正偏见,确保结果公平。

  • 透明度和问责制:随着人工智能系统的日益复杂,理解其决策过程可能具有挑战性。这涉及到以下两个重要方面:

    • 可解释的人工智能:开发能够为其决策提供明确解释的人工智能模型可以帮助用户理解和信任该系统。

    • 责任和问责制:明确人工智能系统的责任和问责制对于确保开发者、组织和用户对人工智能驱动决策的后果负责至关重要。

  • 工作的未来:人工智能驱动的自动化有可能在某些行业取代工作,引发对工作未来的担忧。在这本书中,我们看到了 ChatGPT 和 OpenAI 模型如何能够提高个人和企业的生产力。然而,也可能会有些重复性任务被人工智能彻底取代,这将影响一些工人。这是变革和发展过程的一部分,而且接受变化而不是与之抗争至关重要。

在这个方向上的一些行动可能是再培训和技能提升计划——政府、组织和教育机构应投资于再培训和技能提升计划,以帮助工人适应不断变化的就业市场并获得新兴角色所需的新技能。

最重要的是,应鼓励人机协作。开发能够补充和增强人类能力的人工智能系统可以帮助创造新的就业机会,并促进协作工作环境。

通过解决这些伦理考虑和挑战,我们可以朝着正确的方向努力,确保人工智能技术得到负责任地开发和部署,为所有人创造一个更好、更公平的未来。

现在,下一个合乎逻辑的问题可能是:鉴于最近几个月人工智能技术的巨大加速,我们应该期待在不久的将来会发生什么?

近期可以期待什么

近几个月来,人工智能研究和发展的加速令人难以置信。从 2022 年 11 月到撰写本文时(2025 年 2 月),我们看到了以下情况发生:

  • 2022 年 11 月:OpenAI 发布了基于 GPT-3.5 的对话式人工智能模型 ChatGPT,因其类似人类的文本生成能力而迅速引起广泛关注。

  • 2022 年 12 月:ChatGPT 在发布后的五天内用户数量超过一百万,突显了公众对 AI 驱动对话工具的快速接受。

  • 2023 年 1 月:微软宣布对 OpenAI 进行数十亿美元的投资,旨在将其先进的人工智能技术集成到其产品和服务中。这是 Copilot 系统的基石。

  • 2023 年 3 月:OpenAI 揭晓 GPT-4,这是一个先进的跨模态 AI 模型,能够处理文本和图像输入,标志着 AI 理解和生成能力的重大飞跃。

  • 2023 年 5 月:谷歌推出 Gemini,这是一个由谷歌 DeepMind 开发的跨模态 LLM,旨在同时处理多种数据类型,包括文本、图像、音频和视频。

  • 2023 年 12 月:谷歌推出 Gemini 1.0,将其集成到 Bard 和 Pixel 设备等产品中,并计划在其服务中实现更广泛的应用。

  • 2024 年 2 月:OpenAI 推出 Sora,一个能够根据文本描述生成逼真视频的文本到视频模型,扩展了 AI 生成内容的应用范围。

  • 2024 年 5 月:OpenAI 发布了 GPT-4o,这是一个处理和生成文本、图像和音频的多模态模型,在 AI 性能的多个任务中设定了新的基准。

  • 2024 年 6 月:Anthropic 揭晓 Claude 3.5 Sonnet,这是一个在编码、多步骤工作流程和图像分析方面表现出色的人工智能模型,有助于 AI 应用的多样化。

  • 2024 年 7 月:OpenAI 推出 GPT-4o mini,这是 GPT-4o 的一个更易于访问的版本,旨在使高级 AI 能力惠及更广泛的受众。

  • 2024 年 9 月:OpenAI 发布了 o1-preview 和 o1-mini 模型,旨在提高推理准确性,特别是在科学、编码和复杂推理任务中。

  • 2024 年 12 月:OpenAI 揭晓 o3 和 o3-mini,作为 o1 模型的继任者,专注于改进推理和效率,并开始与选定用户测试这些模型。

  • 2025 年 1 月:中国 AI 初创公司 DeepSeek 发布其 R1 模型,这是一个开源 AI 助手,在性能上与领先模型相媲美,同时成本效益显著。该发布对全球科技市场产生了重大影响,导致美国主要科技公司股价大幅波动。

此外,2025 年 1 月,一项新的突破性计划被宣布:Stargate 项目。该项目是一个大规模的倡议,旨在开发美国下一代 AI 基础设施。由 OpenAI、软银、甲骨文和 MGX 支持,该项目预计在未来四年内获得高达 5000 亿美元的投资。第一阶段涉及 1000 亿美元的初始投资,并计划随着需求的增长而扩大。

该倡议旨在建设尖端数据中心和能源设施,确保美国在人工智能发展上保持竞争力。像微软、英伟达和 Arm 这样的主要技术公司正在贡献专业知识和资源。该项目预计将创造数十万个工作岗位并推动经济增长,德克萨斯州被选为首个建筑工地,其他地点正在审查中。除了经济影响之外,Stargate 被定位为加强人工智能基础设施和提升国家安全的战略努力。

这种令人难以置信的速度使得预测接下来会发生什么变得困难。正如我们所看到的,这种速度也因这些新技术缺乏监管而引起了机构、公司和公众人物的关注。同时,公司和机构不可避免地需要适应这个新环境,以便跟上竞争对手。

当我们展望未来时,生成式人工智能的发展轨迹指向越来越自主和协作的系统。人工智能代理——无需人类干预即可执行复杂任务的自主实体——正在迅速发展。这些代理预计将管理各个领域的复杂流程,从自动化业务运营到提高个人生产力。多智能体系统的集成,其中多个人工智能代理协作以实现共同目标,有望通过模仿有效的人类团队合作来革新问题解决方式。

摘要

生成式人工智能技术的快速发展正在引领一个创新和变革的新时代。这些进步具有革命性改变行业和重塑日常生活的巨大潜力,它们正在重新书写人机交互的规则。

随着我们站在这个由人工智能驱动的未来的门槛上,确保这些技术被负责任和道德地使用是我们共同的责任。通过拥抱机遇和应对挑战,我们可以培养一个世界,在那里人工智能赋予人类力量,并提升我们的潜力达到新的高度。

生成式人工智能时代“仅仅”始于两年前,如果你考虑它在这一时间段内产生的影响,我们不禁会想象我们可能会在不久的将来见证的所有伟大成就。

参考文献

加入我们的 Discord 和 Reddit 社区

对这本书有疑问或想参与关于生成式人工智能和大型语言模型(LLMs)的讨论?加入我们的 Discord 服务器packt.link/I1tSU和 Reddit 频道packt.link/jwAmA,与志同道合的爱好者建立联系、分享和协作。

附录

在本书的主要章节中,我们通过 ChatGPT 的视角探索了 OpenAI 模型的力量,深入其对话界面,并理解了它如何改变我们与 AI 互动的方式。然而,OpenAI 的世界远不止 ChatGPT 熟悉的基于聊天的体验。为了充分利用这些模型的能力,了解 OpenAI 提供的更广泛工具和界面至关重要。

本附录致力于探索这样一个工具:OpenAI 游乐场。游乐场提供了一个灵活的环境,可以用来实验 OpenAI 的模型,允许用户对参数、输出和行为有更多的控制。无论您是想微调响应、测试不同的用例,还是仅仅想更深入地了解模型的能力,游乐场都是一个无价的资源。

在本附录中,我们将:

  • 演示游乐场界面及其关键特性。

  • 展示如何从游乐场直接与 OpenAI 模型交互。

  • 提供使用游乐场时最大化结果的技巧和最佳实践。

到本附录结束时,您将具备使用 OpenAI 的游乐场及其模型的知识和信心,超越 ChatGPT。

在游乐场中尝试 OpenAI 模型

要访问 OpenAI 游乐场,您需要创建一个 OpenAI 账户并导航到platform.openai.com/playground。这是着陆页的样貌:

聊天截图,自动生成描述

图 1:OpenAI 游乐场,位于 https://platform.openai.com/playground

如您从图 1中看到的,游乐场提供了一个用户界面,用户可以从中开始与模型交互,您可以在聊天界面的顶部选择模型。请注意,无论何时通过 OpenAI 游乐场使用模型,您都将根据交互量支付费用。您可以在 https://openai.com/api/pricing/找到定价页面。

在深入探讨游乐场的主要部分之前,让我们首先定义一些您在本章中会看到的术语:

  • 标记:标记可以被认为是 API 用于处理输入提示的词片段或段。与完整单词不同,标记可能包含尾随空格甚至单词片段。一般来说,一个英文标记大约相当于四个字符,或者是一个单词的三分之四(您可以在以下链接中参考如何将单词转换为 OpenAI 模型中的标记:https://platform.openai.com/tokenizer)。

  • 提示词:在自然语言处理(NLP)和生成式 AI 的背景下,提示词指的是作为输入提供给 AI 语言模型以生成响应或输出的文本片段。提示词可以是一个问题、一个陈述或一个句子,它被用来为语言模型提供上下文和方向。

  • 上下文:在 GPT 领域,上下文指的是用户提示之前的单词和句子。这个上下文被语言模型用来根据训练数据中发现的模式和关系生成最可能的下一个单词或短语。

  • 模型置信度:模型置信度是指 AI 模型对特定预测或输出的确定性或概率水平。在 NLP 的背景下,模型置信度通常用于表示 AI 模型对其生成的针对给定输入提示的响应的正确性或相关性的信心程度。

  • 工具:通过工具,我们为模型提供额外的技能,使其能够调用以完成用户的任务。一个函数总会有自然语言描述,以便模型知道何时调用它。

在 Playground 中,有四个主要部分可以与模型交互。让我们在下一节中探讨它们。

聊天

在这里,你可以测试今天所有可用的聊天模型,包括仅文本模型(如 GPT-3.5)和多模态模型(如 GPT-4o)。你可以提供系统消息——你提供给模型的指令集——全部使用自然语言。

定义

在 LLMs 的背景下,系统消息是在对话开始时提供的指令,用于确立模型的角色、行为和响应指南。这条消息设定了总体上下文,指导模型的交互以符合特定的目标或约束。例如,系统消息可能指定模型应充当友好的旅行顾问或保持正式的语气。这种配置可以在 AI 开发者后端级别设置,这样最终用户将无法访问它,因此无法“强迫”模型以不同的方式行事。

你还可以比较对同一问题的两个不同模型的输出。以下是如何做到这一点的示例:

聊天截图  自动生成的描述

图 2:两个模型之间比较的示例

对于每个模型,你还可以调整一些你可以配置的参数。以下是一个列表:

  • 温度(范围从 0 到 2):这控制着模型响应的随机性。低温度使模型更加确定,意味着它倾向于对相同的问题给出相同的输出。例如,如果我将温度设置为 0 多次询问我的模型“什么是 OpenAI?”的话,它大多数时候会给出相同的答案。另一方面,如果我用大于 0 的温度做同样的事情,它将尝试每次修改其答案,包括措辞和风格。

  • 最大令牌数:这控制着模型对用户提示的响应长度(以令牌为单位)。

  • 停止序列(用户输入):这使响应在期望的点结束,例如句子的结尾或列表的结尾。

  • 最高概率(范围从 0 到 1):这控制了模型在生成响应时将考虑哪些标记。这意味着模型将从累积概率总和达到分布 90%的最小标记集中进行选择。

  • 频率惩罚(范围从 0 到 1):这控制了在生成的响应中相同标记的重复。惩罚越高,同一响应中看到相同标记超过一次的概率越低。惩罚会根据标记到目前为止在文本中出现的频率成比例地减少(这是与以下参数的关键区别)。

  • 存在惩罚(范围从 0 到 2):这与之前的参数类似,但更严格。它减少了重复任何到目前为止已出现在文本中的标记的机会。由于比频率惩罚更严格,存在惩罚还增加了在响应中引入新主题的可能性。

助手

OpenAI 助手可以被视为一种更快、更简单地开发 AI 代理的方法。实际上,助手可以被定义为由 LLM 驱动的实体,具有要遵循的指令和要使用的工具或插件集。

在 OpenAI 助手的案例中,它们附带三个预构建的工具:

  • 文件搜索:这允许用户上传自定义文档,以便助手可以导航这些文档以完成用户的查询。它使用基于 RAG 的框架。

  • 函数调用:这允许用户定义一组自定义函数,这些函数可以被助手调用以完成特定任务。

  • 代码解释器:这指的是助手运行代码的能力,无论是针对提供的文档(例如,在需要数学计算的电子表格或分析论文的情况下)还是简单地解决用户提供的复杂任务(例如,复杂的数学问题)。

在以下屏幕截图中,您可以看到一个名为与 PDF 聊天的助手示例,该助手专门用于响应提供的文档(在我的情况下,我上传了 Hugo Touvron 等人撰写的论文《LLaMA:开放和高效的基座语言模型》)。

计算机屏幕截图  描述自动生成

图 3:OpenAI 助手的示例

如您从前面的屏幕截图中所见,助手能够回答我的问题,从提供的文档中检索知识。实际上,我的问题相当模糊,因为“毒性”一词可以指多个领域;尽管如此,助手知道要监视提供的文档作为主要信息来源。

完成内容

本节涉及一类称为基础模型的模型,如 GPT-3。它们是所谓“助手模型”(或聊天模型,如我们之前所看到的)的基础。例如,聊天模型 GPT-3.5 Turbo(ChatGPT 背后的模型)是基础模型 GPT-3 的微调版本。

定义

完成模型(基础模型)旨在生成对提示的单个响应,这使得它们适合像文本生成和摘要这样的任务,而不需要在多次交互中保持上下文。另一方面,聊天(助手)模型针对交互式对话进行了优化,能够在多个回合中保持上下文,非常适合聊天机器人和虚拟助手等应用。

下面您可以看到游乐场中一个典型的完成任务的示例:

计算机的截图 自动生成的描述

图 4:OpenAI 游乐场中完成任务的示例

如您所见,使用我的话“今天我去了一家杂货店和”,模型用最可能出现的词语完成了这个句子。

今天,完成模型很少使用,因为它们在聊天模型面前表现不佳,但它们可以被进一步微调以适应特定的用例(我们将在本节稍后讨论微调)。

文本转语音

除了上述的语音识别模型 Whisper 之外,OpenAI 还发布了一个 文本转语音TTS)模型,该模型可以直接在游乐场中测试。

让我们看看一个例子:

视频聊天的截图 自动生成的描述

图 5:在游乐场中使用 OpenAI 的 TTS 模型的示例

如您从上面的截图中所见,您可以选择声音、模型、速度和生成的音频格式。

所有的前述模型都是预先构建的,也就是说,它们已经在庞大的知识库上进行了预训练。

然而,有一些方法可以使你的模型更加定制化,更适合你的用例。

定制你的模型

定制你的模型的第一个方法嵌入在模型的设计方式中,它涉及到在少量样本学习方法中向模型提供上下文。

例如,你可以要求模型生成一篇文章,其模板和词汇库回忆起你之前已经写过的另一篇文章。为此,你可以向模型提供生成文章的查询,以及前述文章作为参考或上下文,这样模型就能更好地准备你的请求。

这里有一个例子:

聊天的截图 自动生成的描述

图 6:使用 OpenAI 游乐场中的少量样本学习方法的对话示例

在前面的例子中,我指示模型只输出推文情感的标签,并提供了三个如何做到这一点的示例。

定制你的模型的第二种方法更为复杂,被称为 微调。微调是将预训练模型适应新任务的过程。

在微调中,预训练模型的参数被调整,无论是通过调整现有参数还是添加新参数,以更好地适应新任务的数据。这是通过在针对新任务的小型标记数据集上训练模型来完成的。微调背后的关键思想是利用从预训练模型中学到的知识,并将其微调到新任务,而不是从头开始训练模型。看看下面的图:

图 7:模型微调

在前面的图中,你可以看到一个关于如何在 OpenAI 预构建模型上执行微调的架构。想法是,你有一个带有通用权重或参数的预训练模型可用。然后,你用自定义数据(通常是键值提示和完成)来喂养你的模型,如下所示:

{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"} 

一旦完成训练,你将拥有一个针对特定任务表现特别出色的定制模型,例如,对你公司文档的分类。

微调的好处在于,你可以根据你的用例定制预构建模型,而无需从头开始重新训练它们,同时利用较小的训练数据集,因此需要更少的训练时间和计算。同时,模型保留了通过原始训练学习到的生成能力和准确性,这是在大量数据集上进行的。

摘要

OpenAI 游乐场提供了一个强大的工具,通过零样本或少量样本学习和微调技术进行高级 AI 模型的实验。游乐场允许用户直接与预训练模型互动,使其更容易为特定任务(如情感分析或文档分类)进行定制和增强。

对于希望利用 OpenAI API 构建 AI 应用的开发者来说,掌握这些技术对于确定特定模型的配置是否满足特定应用的需求至关重要。

尽管本书的重点主要在 ChatGPT 上,但在企业级场景(我们在第十章中讨论过)中,当涉及到 AI 用例时需要更多定制的方法;这就是为什么熟悉游乐场和 OpenAI 模型 API 的概念对于拥抱这一波 AI 驱动应用开发的新思维非常有价值。

加入我们的 Discord 和 Reddit 社区

对本书有任何疑问或想参与关于生成式 AI 和 LLMs 的讨论?加入我们的 Discord 服务器packt.link/I1tSU和 Reddit 频道packt.link/jwAmA,以连接、分享和与志同道合的爱好者合作。

packt.com

订阅我们的在线数字图书馆,全面访问超过 7,000 本书和视频,以及领先的行业工具,帮助您规划个人发展并推进职业生涯。欲了解更多信息,请访问我们的网站。

为什么订阅?

  • 使用来自 4,000 多位行业专业人士的实用电子书和视频,减少学习时间,增加编码时间

  • 通过为您量身定制的技能计划提高学习效果

  • 每月免费获得一本电子书或视频

  • 完全可搜索,便于轻松访问关键信息

  • 复制粘贴,打印和收藏内容

www.packt.com,您还可以阅读一系列免费的技术文章,订阅各种免费通讯,并享受 Packt 书籍和电子书的独家折扣和优惠。

您可能还会喜欢的其他书籍

如果您喜欢这本书,您可能会对 Packt 的以下其他书籍感兴趣:

使用 DALL-E 3 生成创意图像

Holly Picano

ISBN: 9781835087718

  • 掌握 DALL-E 3 的架构和训练方法

  • 以精确的方式创建精细印刷和其他 AI 生成的艺术作品

  • 无缝融合人工智能与传统艺术

  • 解决人工智能艺术中的伦理困境

  • 探索数字创造力的未来

  • 为您的艺术追求实施实用的优化技术

使用 OpenAI API 构建人工智能应用

Martin Yanev

ISBN: 9781835884003

  • 在使用 OpenAI API 进行自然语言处理任务方面打下坚实的基础

  • 构建、部署并将支付集成到各种桌面和 SaaS 人工智能应用中

  • 将 ChatGPT 与 Flask、Django 和 Microsoft Office API 等框架集成

  • 通过集成 DALL-E API 到您的桌面应用程序中,释放您的创造力,生成令人惊叹的 AI 艺术

  • 体验 Whisper API 的语音识别和文本到语音功能

  • 了解如何针对您的特定用例微调 ChatGPT 模型

  • 掌握 AI 嵌入技术以衡量文本字符串的相关性

Packt 正在寻找像您这样的作者

如果您有兴趣成为 Packt 的作者,请访问 authors.packtpub.com 并今天申请。我们已与成千上万的开发者和技术专业人士合作,就像您一样,帮助他们将见解与全球技术社区分享。您可以提交一般申请,申请我们正在招募作者的特定热门话题,或提交您自己的想法。

分享您的想法

您已经完成了《Practical Generative AI with ChatGPT, Second Edition》,我们很乐意听听您的想法!如果您在亚马逊购买了这本书,请点击此处直接进入亚马逊评论页面并分享您的反馈或在该购买网站上留下评论。

您的评论对我们和科技社区都非常重要,并将帮助我们确保我们提供高质量的内容。

posted @ 2026-03-25 10:25  绝不原创的飞龙  阅读(10)  评论(0)    收藏  举报