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

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

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

译者:飞龙

协议: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 Vision 和 DALL-E,使 AI 驱动的图像生成、视觉问答和增强创意工作流程成为可能。

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

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

第十一章结语和最后思考,回顾了生成式人工智能的发展态势,讨论了伦理影响,并展望了人工智能的未来。

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

为了充分利用这本书

如果你能记住以下几点,跟随起来会更容易:

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

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

  • 探索 API 和开发者工具:如果你是开发者,花些时间探索 OpenAI 的 API 文档,并尝试将 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/

分享您的想法

读完 《实用生成式 AI 与 ChatGPT 第二版》 后,我们非常希望听到您的想法!请 点击此处直接进入本书的 Amazon 评论页面 并分享您的反馈。

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

下载本书的免费 PDF 版本

感谢您购买本书!

你喜欢随时随地阅读,但无法携带你的印刷书籍到任何地方吗?

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

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

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

优惠不仅限于此,你还可以获得独家折扣、时事通讯和每日收件箱中的精彩免费内容。

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

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

免费 PDF 二*码

packt.link/free-ebook/9781836647850

  1. 提交你的购买证明。

  2. 就这些!我们将直接将你的免费 PDF 和其他优惠发送到你的邮箱。

第一部分

生成式人工智能和 OpenAI 的基础知识

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

本部分从生成式人工智能领域的概述开始,为您提供了关于这个 AI 领域的知识基础,包括其历史和最先进的发展。您还将熟悉生成式人工智能的应用,从文本生成到音乐创作。

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

本部分包含以下章节:

  • 第一章生成式人工智能简介

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

第一章:生成式 AI 简介

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

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

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

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

  • 介绍生成式 AI

  • 探索生成式 AI 的领域

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

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

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

介绍生成式 AI

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

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

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

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

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

    定义

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

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

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

图片

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

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

定义

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

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

定义

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

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

生成式 AI 的领域

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

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

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

因此,开发者可以更多地专注于创造创新的游戏玩法机制和丰富的叙事,最终提供更加个性化和引人入胜的游戏体验(https://www.xcubelabs.com/blog/generative-ai-in-game-development-creating-dynamic-and-adaptive-environments/)。

最后,生成式 AI 对广告和视觉资产生成有着巨大的影响。例如,2023 年 3 月,可口可乐推出了“创造真实魔法”平台(https://www.coca-colacompany.com/media-center/coca-cola-invites-digital-artists-to-create-real-magic-using-new-ai-platform),邀请全球数字艺术家使用其档案中的标志性品牌资产创作原创艺术作品。该平台与 OpenAI 和 Bain & Company 合作开发,结合了 GPT-4 和 DALL-E 的能力,使用户能够生成融合可口可乐遗产与现代 AI 技术的独特作品。参与者有机会提交他们的作品,以获得在纽约时代广场和伦敦皮卡迪利广场的可口可乐数字广告牌上展示的机会,这体现了品牌通过尖端技术培养创造力的承诺。这些只是生成式 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)》中提出的生成对抗网络(GAN)架构。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 在音乐生成领域的最早方法可以追溯到 20 世纪 50 年代,当时的研究领域是算法作曲,这是一种使用算法生成音乐作品的技术。1957 年,Lejaren Hiller 和 Leonard Isaacson 为弦乐四重奏创作了Illiac Suitehttps://www.youtube.com/watch?v=n0njBFLQSk8),这是第一首完全由 AI 创作的音乐作品。从那时起,生成式 AI 在音乐领域的应用一直是持续研究的主题。

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

定义

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

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

这些以及其他框架成为了许多音乐生成 AI 作曲助手的基础。一个例子是由 Sony CSL Research 开发的 Flow Machines。这个生成式 AI 系统在一个大型音乐作品数据库上进行了训练,以创建多种风格的新音乐。它被法国作曲家本诺·卡雷(Benoît Carré)用来创作名为Hello Worldhttps://www.helloworldalbum.net/)的专辑,其中与多位人类音乐家进行了合作。

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

图片

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

生成式 AI 在音乐领域的另一个令人难以置信的应用是语音合成。这指的是能够根据文本输入在知名歌手的声音中创建音频的 AI 工具。

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

图片

图 1.6:使用 fakeyou.com 进行文本到语音合成

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

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

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

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

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

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

视频生成

视频生成中的生成式 AI 与图像生成有着相似的发展时间线。视频生成领域的一个关键发展是 GANs(生成对抗网络)的发展。由于它们在生成逼真图像方面的准确性,研究人员开始将这项技术应用于视频生成。基于 GAN 的视频生成的一个最显著的例子是 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 可以使用与 LLMs 相同的推理能力,但可以将这些能力应用于除文本以外的数据。

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

包含文本描述的填字游戏  自动生成的描述

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

如您所见,该模型能够:

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

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

如您所想象,这为各个行业打开了应用前景,我们将在接下来的章节中看到一些具体的例子。

AI 代理

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

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

代理由以下成分组成:

  • 一个作为人工智能系统推理引擎的 LLM(大型语言模型)。

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

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

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

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

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

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

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

这还不算完。

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

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

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

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

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

  • 一个能够轻松将所有信息浓缩在一个电梯演讲中的公共演讲专家:这将是一个具有如何进行完美演讲的指令的智能体。

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

因此,当用户要求智能体生成关于当前气候变化问题的电梯演讲时,所有智能体都可以开始工作在这个项目上。

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

在撰写本文时,多智能体框架正显示出有希望的进步,这是对 LLMs 背后的卓越推理能力以及它们如何解锁新的问题解决方式的预览。

*型语言模型

LLMs 无疑是庞大的。这意味着具有 LLMs 的 ANN 架构由数十亿个参数组成。通常,大量的参数与性能更好的模型相关联,因为它能够处理更多的信息和示例,因此能够在用户提问时识别和推断出更多的模式。然而,大量参数通常伴随着高昂的训练和托管成本,因为需要强大的 AI 基础设施。此外,这些模型的能耗引发了关于 LLM 训练的环境影响以及它们长期可持续性的严重问题。

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

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

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

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

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

版权和知识产权问题

LLM 通常在从互联网上抓取的大量语料库上进行训练,包括可能受版权保护的内容。因此,将受版权保护的文本、音乐、图像或视频片段直接嵌入 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)。

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

偏见、歧视和社会危害

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

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

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

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

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

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

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

摘要

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

本章的目标是为你打下生成式人工智能基础知识的坚实基础,并激发你进一步探索这个迷人的领域。

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

参考文献

加入我们的 Discord 和 Reddit 社区

对本书有疑问或想参与生成式人工智能和 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)是一种机器学习范式,其中智能体通过与环境的交互来学习做出决策。智能体根据其行为获得反馈,形式为奖励或惩罚,并旨在最大化随时间累积的奖励。

深度强化学习(Deep RL)是强化学习(RL)和深度神经网络(DNNs)或深度神经网络(后者是一种具有多个输入和输出之间层的类型)的结合。

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

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

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

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

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

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

ChatGPT 的出现

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

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

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

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

然后,在 2020 年,OpenAI 首先宣布然后发布了 GPT-3,它拥有 1750 亿个参数(大约是地球人口的 21 倍!),在 GPT-2 的基础上大幅提高了基准测试结果。我们是在 2022 年 11 月(在其首次发布时,ChatGPT 由 GPT-3.5 提供支持)进入 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(参数数量不同),这是一个代表重大进步的模型系列,尤其是在增强推理能力方面

    • o3 系列,基于其前辈(o1 系列)的功能,在基准测试(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 日推出。在 680,000 *时的多种语言和多任务数据上训练,它擅长跨语言转录语音并将非英语语音翻译成英语。除此之外,OpenAI 还开发了文本到语音TTS)模型,将书面文本转换为语音,提供清晰、表达丰富且自然的声音输出,使其适用于广泛的用途,从客户服务机器人到教育工具。

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

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

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

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

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

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

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

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

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

开始使用 ChatGPT

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

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

图片

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

重要的是要注意,ChatGPT 本身不是一个大型语言模型LLM),而是一个用户可以通过它与底层模型交互的应用程序。实际上,ChatGPT 的核心是一个由 AI 驱动的聊天机器人,旨在模拟类似人类的对话。它支持各种任务,包括写作、编码和提供关于各种主题的信息。由 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 提供了创建 GPTs 的可能性,这些是您可以针对特定功能定制的个性化助手。您可以选择将您的 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 解决的问题类型。

数学思*

原本,大型语言模型在解决数学任务时常常遇到困难。然而,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 利用了一个名为代码解释器的功能,它允许它生成 Python 代码来分析数据,并直接在上传的文件上运行。需要注意的是,您可以通过点击 [>_] 图标来可视化生成的代码:

图 2.8:代码解释器

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

摘要

在本章中,我们回顾了 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 中的用户输入和大型语言模型(LLM)时。

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

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

  • 什么是提示工程?

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

  • 提示工程的原则

  • 探索一些高级技术

  • 避免偏见的伦理考量

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

技术要求

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

什么是提示工程?

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

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

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

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

图 3.1:用户提示的一个示例

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

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

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

图 3.2:系统消息的一个示例

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

提示工程是设计有效提示的过程,以从 LLM 中诱发出高质量和相关的输出。提示工程需要创造力、对 LLM 的理解以及对你想要实现的目标的清晰理解。

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

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

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

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

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

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

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

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

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

定义

在 LLMs(大型语言模型)的背景下,shot learning指的是模型在推理过程中,能够使用不同数量的特定任务示例来执行任务的能力。这些 shot-learning 范式使得 LLMs 能够以最*或没有额外训练的情况下适应新任务,增强了它们在自然语言处理应用中的灵活性和效率。

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

此外,shot learning 直接通过提示(正如我们将在以下场景中看到的)进行,因此整个过程更节省时间且更容易执行。

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

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

零样本学习

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

图片

图 3.4:零样本学习示例

单样本学习

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

图片

图 3.5:单样本学习示例

如您从前面的截图中所见,该模型能够生成一个与提供的示例风格和模板相匹配的答案。当提供多个示例时,这种推理同样适用,如下一节所述。

少样本学习

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

图片

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

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

定义

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

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

提示工程原则

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

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

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

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

  • 提供对话上下文。

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

  • 减少幻觉。

    定义

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

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

清晰的指令

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

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

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

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

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

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

图片

图 3.7:ChatGPT 中清晰指令的示例

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

图片

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

注意

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

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

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

将复杂任务分解为子任务

当我们与 LLM 互动,让他们解决一些任务时,有时这些任务对于单个提示来说过于复杂或模糊,最好将它们分解为更简单的子任务,这些子任务可以通过不同的提示来解决。

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

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

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

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

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

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

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

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

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

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

  • 代码生成:这是一个技术任务,涉及为视频游戏生成可工作的代码。这个任务可以分解为以下子任务:

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

    • 添加高级动作功能,如打印或跳跃逻辑,并考虑重力。

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

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

    • 生成文档供将来参考。

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

  • 你是一个总结文章的 AI 助手。

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

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

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

    • 打印每个步骤。

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

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)。通过理解模型的思*过程,用户可以识别潜在的偏见或不准确性,从而做出更明智的决定,并有效利用人工智能系统。

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

让我们考虑以下例子。我们希望我们的 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 等人发表的论文《思*链提示在大型语言模型中激发推理》中引入的 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:在语言模型中协同推理和行动》中引入的推理与行动ReAct)是一个通用范式,它将推理和行动与 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 的研究员 Tom Brown 等人创建了一个实验设置来调查 GPT-3 中的种族偏见。模型被提示包含种族类别的短语,并为每个类别生成了 800 个样本。生成的文本的情感是通过 Senti WordNet 根据词汇共现来测量的,其范围从-100 到 100(正分数表示积极词汇,反之亦然)。

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

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

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

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

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

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

摘要

在本章中,我们深入探讨了提示工程的概念,因为它是控制 ChatGPT 和 LLMs 输出的一般关键组件。我们学习了如何利用不同级别的 shot 学习使 LLMs 更符合我们的目标。

我们从提示工程的概念及其重要性引入,然后转向基本原理——包括明确的指令、要求证明等。

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

提示工程是一个新兴的学科,它为 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 提供大学书籍概述

注意

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

重要的是要记住,当涉及到关于特定资产或个人信息的问题时,我们正在增加 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 也可以通过提供写作辅助和翻译来支持现有内容,正如我们将在下一节中看到的。

提高写作技能和翻译

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

让我们看看一些例子。想象一下,我草拟了一封电子邮件,邀请我的一个客户参加一个网络研讨会。我写了两个简短的句子。在这里,我希望 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 重现它:

图 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?约定检索 docstring 文档。通过使用 Python 包、函数和方法,我们可以获得特定对象的完整文档,如下(以pandas Python 库为例):

图 5.13:pandas 库文档示例

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

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

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

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

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

图 5.15:新的 UnderscoreAdder 类文档

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

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

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

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

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

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

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

理解 ML 模型可解释性

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

让我们看看使用深度学习卷积神经网络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 能够在保持相同输出和风格(即,如果存在,它保留文档字符串文档)的情况下,在不同编程语言之间进行翻译。

有许多场景中,这可能会成为变革者。

例如,你可能必须学习一种你以前从未见过的新的编程语言或统计工具,因为你需要快速交付一个基于它的项目。借助 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 虚拟机VM))开始。然而,在第二阶段,您可能希望重构、重新设计或甚至重建您的应用程序。

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

图片

图 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 画布功能,它允许用户在协作工作区中动态修改模型的响应。然而,当涉及到代码开发时,这个功能真正闪耀。

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

让我们看看一个例子。我们将从一个简单的查询开始:

图 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 测试

  • 通过搜索引擎优化(SEO)使网站和帖子更高效

  • 文本数据的情感分析

到本章结束时,您将能够利用 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 策略。当然,这一切都由 ChatGPT 支持:

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

手机截图  自动生成的描述

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

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

  • 产品名称:现在我们已经确定了想法,我们需要为它想一个吸引人的名字。再次,我们将向 ChatGPT 寻求更多选项,以便我们可以从中选择我们最喜欢的一个:

聊天截图  自动生成的描述

图 6.2:潜在产品名称列表

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

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

聊天截图  自动生成的描述

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

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

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

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

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

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

图 6.5:产品线变体示例

同样,我也可以让 ChatGPT 为前面提到的每个群体提出不同的销售渠道:

文档特写自动生成的描述

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

  • 脱颖而出:我希望我的产品线能够从竞争中脱颖而出,并在一个非常饱和的市场中崭露头角——我想让它独一无二。本着这个目的,我要求 ChatGPT 包括社会因素,如可持续性和包容性。让我们就这方面向 ChatGPT 寻求一些建议:

![图片 B31559_06_07.png]

图 6.7:ChatGPT 生成的突出功能示例

如你所见,它能够生成一些有趣的特点,可以使我的产品线独一无二。

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

网站截图自动生成的描述

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

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

![图片 B31559_06_09.png]

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

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

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

![图片 B31559_06_10.png]

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

以及 DALL-E 的特殊贡献:

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

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

这是最终结果:

![图片 B31559_06_12.png]

图 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:在攀岩博客上发布的示例博客文章

我们可以直接将 HTML 代码喂给 ChatGPT,并要求它更改一些布局元素,例如按钮的位置或它们的文字。例如,而不是“立即购买”,一个读者可能更会被“我要一个!”按钮吸引。

因此,让我们用 HTML 源代码来喂养 ChatGPT:

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

图 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 的目的是通过针对特定的关键词或短语来优化网站,以吸引更多有针对性的访客。

想象你经营一家名为帽子和手套的电子商务公司,正如你可能猜到的,只卖帽子和大衣。你现在正在创建你的电子商务网站,并希望优化其排名。让我们要求 ChatGPT 列出一些相关的关键词,以便嵌入到我们的网站中:

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

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

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

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

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

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

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

  • 商业意图:用户正在寻找购买产品或服务,但可能尚未做出最终决定。具有商业意图的搜索示例包括1000 美元以下的最佳笔记本电脑在线折扣鞋

  • 交易意图:用户有一个特定的目标来完成交易,这可能涉及实物购买或订阅服务。交易意图的示例可能包括购买 iPhone 13注册健身房会员

通过理解特定搜索查询背后的意图,企业和营销人员可以创建更针对性和有效的内 容,以满足目标受众的需求和期望。这可能导致更高的搜索引擎排名、更多的流量,最终,更多的转化和收入。

现在,问题是,ChatGPT 能否确定给定请求的意图?在回答之前,值得注意的是,推断给定提示的意图是大型语言模型(LLMs),包括 GPT 的核心业务。所以,当然,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 的持续发展和演变,我们可能会看到它在营销行业中的更多参与,尤其是在公司与其客户互动的方式上。事实上,过度依赖人工智能使公司能够更深入地了解客户行为和偏好。

对于营销人员来说,关键是要接受这些变化,适应由人工智能驱动的营销的新现实,以便在竞争中保持领先并满足客户的需求。

在下一章中,我们将探讨这本书中涵盖的 ChatGPT 应用的第三个也是最后一个领域——研究。

加入我们的 Discord 和 Reddit 社区

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

Discord QR Code

第七章:使用 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 的迭代反馈和对话,共同细化有影响力的研究问题。

步骤 1:初步构思

提示:“我正在进行[插入领域/主题]领域的研究。我感兴趣的具体领域是[插入具体领域或主题]。请生成 5 个初步研究问题,探讨该领域的关键挑战、趋势或知识差距。”

步骤 2:细化

跟进提示:“感谢你的问题!以下是我的反馈:”

问题[插入编号]需要更多地关注[插入关注领域]。

问题[插入编号]过于宽泛。你能将其缩*范围,专注于[具体方面]吗?

问题[插入编号]很有吸引力,但可以通过解决[特定受众、结果或数据]来受益。

“基于这个反馈,将问题细化以更好地符合我的目标。”

步骤 3:最终润色

跟进提示:“我赞赏这些细化。现在:”

将问题[插入编号]的元素合并成一个连贯的问题。

确保语言清晰简洁。

建议任何最终调整,以使这些问题更具影响力。

采用这种方法,我们是在“鼓励”模型一步一步地工作,并逐步完善其输出。

另一种有趣的提示技术,这对于构建查询输出非常有用,是利用所谓的提示模式。由 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)的类型变量,称为控制变量。

控制变量,也称为协变量,是在研究研究中保持恒定或控制的变量,以便隔离自变量(s)和因变量之间的关系。这些变量不是研究的重点,但包括在内是为了最*化混杂变量对结果的影响。通过控制这些变量,研究人员可以降低获得假阳性或假阴性结果的风险,并提高其研究的内部可靠性、有效性、透明度和可重复性。

在上述变量基础上,我们已准备好设置我们的实验。现在我们需要选择参与者,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 推出了 GPT,可以将其定义为 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 允许客户在 Wix 中直接创建后端的同时,与 ChatGPT 共同设计他们的网站。一旦对话和共创结束,用户可以直接跳转到最终网站,并在 Wix 中继续编辑它。

假设,例如,我们想要设计一个展示我们作品的个人资料:

聊天截图  自动生成的描述

图 8.28:与 Wix 插件的交互示例

从这些最初的互动开始,我已经为与我的 GPT 进行协同设计做好了准备,在这种情况下,它被定制得如此之好,以至于它也会继续问我一些有用的问题,以构建最终产品。在提出的名字中,我认为我会选择“编码创作”。

聊天截图  自动生成的描述

图 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 语言模型背后的正确 生成预训练转换器GPT)模型架构。我们在第一部分中提到了这个架构,我们知道这是 ChatGPT 本身背后的框架。

第二个更通用地指的是 OpenAI 允许用户以无代码方式创建的专用助手。在 GPT 的语境中,OpenAI 指的是 ChatGPT 的专用版本。在这种情况下,一个单独的 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,点击页面左上角的探索 GPT,然后点击创建(如前图中的框 3 所示)。

一旦进入编辑器,你将被要求配置你的 GPT,而在右侧,你可以实时测试它。

图 9.2:从头开始创建你的 GPT 的编辑器页面

让我们探索所有组件:

  • 名称:你想要给你的 GPT 起的名字。

  • 描述:这是你对 GPT 能力的描述。这非常重要,尤其是如果你打算在市场上发布你的 GPT,以便其他用户可以轻松找到它(如我们之前提到的,GPT 可以通过自然语言在“搜索 GPT”栏中进行搜索。此外,这个描述还将帮助其他用户了解 GPT 的用途。

  • 指令:这是你的 GPT 的系统消息,即一组针对你特定需求的自然语言指令,最终用户看不到。

  • 对话启动词:这是一组用户可以开始与 GPT 交互并对其使用建立信心的示例提示。

  • 知识:这指的是我们可以基于自定义文档来训练模型。当我们在这里上传文档时,我们的 GPT 将能够通过检索增强生成模式来导航这些文档,这样我们就可以提供额外的知识,甚至根据我们的需求限制我们的助手对自定义知识库的响应。

  • 能力:这些是指我们可以提供给 GPT 的一组内置插件,而无需编写任何代码。从上面的图片中可以看到,有三种插件是默认提供的:

    • 网络浏览用于搜索网络和检索最新信息

    • DALL-E 3 图像生成用于生成插图

    • 代码解释器与数据分析用于在沙盒 Python 环境中执行代码并与分析文件(如电子表格)交互

  • 动作:动作也可以被视为插件;然而,由于它们不是内置的,而是由 GPT 开发者指定的,因此它们在能力上有所不同。例如,你可能生成一个如下所示的动作:

    注意

    在动作的上下文中,您可以通过点击添加动作然后从 ActionsGPT 获取帮助来从集成到配置面板中的专用 GPT 获取支持。

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

图 9.3:从 ActionsGPT 获取支持的示例

通过这样做,您将看到 ActionsGPT 界面:

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

图 9.4:ActionsGPT 的着陆页

看到我们在见证一个“GPT 中的 GPT”,你不觉得这很神奇吗?

除了标准配置页面外,还有一个选项以更“对话式”的方式构建您的 GPT。实际上,您可以切换到创建选项卡,并用自然语言解释您想通过您的 GPT 实现什么。

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

图 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. 应用到路径:在您的路径(例如,POST 或 GET)的适当 HTTP 方法下放置架构。

让我们考虑以下示例:

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:利用代码解释器插件生成的 DataScience 助手代码示例

  1. 特征工程

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

图 9.25:DataScience 助手进行特征工程示例

  1. 数据拆分

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

图 9.26:DataScience 助手将数据集拆分为训练集和测试集的示例

  1. 训练逻辑回归模型

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

图 9.27:DataScience 助手训练逻辑回归模型的示例

  1. 评估模型

测试屏幕截图 自动生成的描述

图 9.28:DataScience 助手评估模型输出的示例

这非常酷!它非常准确,可以节省大量时间。此外,如果你考虑在大企业中工作的数据科学家在多个项目中,拥有类似的助手也有助于在项目之间遵循固定标准,以便*护可以在团队间保持一致。

当然,保持主题专家(在这种情况下,是数据科学家)在流程中是至关重要的,因为我们不仅需要验证输出,还需要验证推理过程。

我们将要求我们的 GPT 做的最后一件事是将代码推送到我们的仓库。让我们看看它是如何工作的:

图 9.29:DataScience 助手利用操作将代码推送到 GitHub 的示例

如果我们点击链接,我们可以看到文件已成功上传:

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

图 9.30:通过 DataScience 助手操作上传的文件

它成功了!这再次是 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:Copywriting Companion 利用 Web 浏览插件进行竞争分析的示例

如您所见,我们的伴侣正确地利用了 Web 浏览插件来检索所需信息。此外,它还为我们提供了关于两家竞争对手公司在哪些领域投资的强大见解,这样我们就可以思考(或询问我们的伴侣)可能帮助我们的品牌在竞争市场中脱颖而出的独特差异化因素。

我们还可以更进一步,通过利用代码解释器与数据分析插件来获取更多关于竞争的具体见解。比如说,我们创建了一个具有以下结构的 Excel 表格:

图 9.38:Excel 表格上的竞争分析

现在我们想从这些内容中生成一些视觉元素。让我们请我们的文案伴侣来完成这项任务:

图表的截图  自动生成的描述

图 9.39:Copywriting Companion 生成的柱状图和散点图示例

这里有一些更多视觉元素:

图表的屏幕截图  自动生成的描述

图 9.40:Copywriting Companion 生成的折线图示例

如请求,执行报告也已生成:

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

图 9.41:Copywriting Companion 生成的执行报告示例

总体而言,当涉及到生成新内容、设计营销策略和进行网络竞争分析时,为营销活动定制 ChatGPT 可以非常有用。

研究助理

在这种情况下,我们将再次专注于研究,但这次特别关注论文检索。更具体地说,我们希望我们的助手能够做到以下:

  • 从我们提供的自定义知识库中检索信息。

  • 仅将自定义文档与 arXiv 上的论文集成,为此任务启用网络插件。

  • 从数据库(在我们的案例中,它将在 Notion 托管)检索其他研究人员现有的正在进行的工作,这样我们就不会冒险覆盖已经被其他人覆盖的内容。

让我们看看所有步骤:

  1. 上传自定义文档。为此,我将使用两篇关于机器学习图像分类的论文:J. Bird 等人撰写的“CIFAKE:图像分类和可解释的 ai 生成合成图像识别”以及 Khalis 等人撰写的“图像分类任务中视觉 Transformer 的全面研究”

  2. 您可以在配置面板的相关部分上传它们:

图 9.42:在配置面板中上传自定义文档

  1. 将自定义文档与网络参考集成。为此,我们需要启用网络插件:

图 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 的巨大影响,以及涌现出的哪些趋势模式和应用程序。

在本章中,我们将讨论以下主题:

  • 各个行业(包括医疗保健、金融服务、零售等)的最新进展,这些进展是由强大的 LLM 的卓越能力驱动的,突出了最热门的应用案例

  • 由 OpenAI 模型驱动的自定义应用程序背后的架构框架,揭示了模型 API 的多功能性和采用情况

  • Azure OpenAI 简介,这是微软基于云的服务,它反映了 OpenAI 的游乐场,并在 Azure 订阅范围内直接提供 OpenAI 的模型

到本章结束时,你将了解各个行业中主要的 GenAI 模式,以及如何在你的应用程序中利用 OpenAI 模型的 API。此外,你将更清楚地了解 Azure OpenAI 的云规模服务以及如何在开发基于 AI 的解决方案时考虑道德因素。

技术要求

以下是本章的技术要求:

  • OpenAI 账户、聊天模型和嵌入模型部署

  • [可选] Azure 订阅和 Azure OpenAI 实例,包括聊天模型和嵌入模型部署

  • Python 3.7.1 或更高版本

你可以参考以下存储库以获取 OpenAI Python SDK:https://github.com/openai/openai-python。

通用人工智能(GenAI)如何颠覆行业

LLMs 和 GenAI 在一般意义上通过引入前所未有的自动化、创造力和效率,正在革命性地改变各个行业。近年来,我们见证了不同行业创新浪潮的巨大浪潮,所有这些行业都认为,如果不抓住 GenAI 的机会,就会在竞争激烈的市场中落后。

让我们看看一些例子。

医疗保健

在医疗保健领域,GenAI 和 LLMs 正在增强诊断、个性化医疗和行政任务:

  • 诊断:LLMs 如 GPT-4 正在被用于分析医学图像、预测疾病和提出治疗方案。例如,AI 驱动的工具现在可以以高精度分析放射学图像,识别癌症或心脏病等疾病的早期迹象,通常在速度和一致性方面优于人类放射科医生。计算机视觉领域的最新进展的绝佳例子可以在 Tyler J. Bradshaw 等人发表在 《核医学杂志》(你可以在 https://jnm.snmjournals.org/content/early/2025/01/16/jnumed.124.268072 找到)的文章中找到。

  • 个性化医疗:通过分析患者数据,包括遗传信息,GenAI 正帮助开发个性化治疗方案。这导致了定制疗法,从而改善了治疗效果。

  • 行政效率:LLMs 正在简化如患者记录管理和预约安排等行政任务。AI 聊天机器人可以处理患者查询,减轻医疗人员的工作负担。

案例研究

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)正在提升客户体验、库存管理和个性化营销:

  • 客户体验:人工智能驱动的聊天机器人提供个性化的客户服务,帮助购物者找到产品、解决问题并完成购买。

  • 库存管理:大型语言模型(LLMs)通过分析销售数据、季节性趋势和客户行为,帮助零售商预测需求并优化库存水平。

  • 个性化营销:生成式人工智能(GenAI)正在实现高度个性化的营销活动。通过分析客户数据,AI 可以创建针对性的广告和产品推荐。

案例研究

可口可乐公司推出了一项创新计划,邀请数字艺术家使用与谷歌云平台GCP)合作开发的新人工智能平台创作独特的艺术品。该平台允许艺术家通过结合可口可乐标志性的品牌元素和他们的创造力来生成数字内容。这一名为“创造真实魔法”的计划利用先进的 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)用于实时监控生产过程,识别缺陷或低效。人工智能系统可以分析传感器和摄像头数据,以检测产品中的异常,确保更高的质量。

  • 供应链优化:人工智能模型通过预测需求、管理库存和选择供应商,帮助制造商优化其供应链。

案例研究

Iveco 集团,作为全球领先的商用车制造商,已与微软合作,将 Azure OpenAI 服务整合到其业务流程中。客户开发了一个名为“Chat IVG”的内部智能聊天机器人,可用于问答以及从组织自己的数据和文档中提取信息。此外,正在开发和部署大量用例和自主项目,这些项目要么利用 Chat IVG 的特定定制,要么以它的架构为基础。Chat IVG 通过提升内部业务用户的使用体验、提高各个业务单元的生产力以及实现更快、更高效的客户支持产生了重大影响。

来源:https://www.microsoft.com/en/customers/story/1706380538888475836-iveco-group-azure-openai-service-manufacturing-italy

媒体和娱乐

在媒体和娱乐领域,GenAI 和 LLMs 正在革命性地改变内容创作、受众参与和媒体分发:

  • 内容创作:GenAI 正被用于生成内容,从撰写文章到创作音乐。例如,《华盛顿邮报》使用 AI 撰写简短的新闻文章和报道,从而让记者能够专注于更复杂的故事。在音乐领域,像 OpenAI 的 MuseNet 这样的 AI 平台可以创作各种风格的原声音乐曲目,帮助音乐家在创作过程中提高效率。

  • 受众参与:LLMs 通过分析用户数据来提供个性化的内容推荐,保持受众的参与度。Netflix 使用 AI 根据观众的偏好推荐电影和电视剧,显著提高了观众的留存率。

  • 媒体分发:AI 通过分析受众人口统计和消费模式,也在优化媒体分发。Spotify 使用 AI 来创建个性化的播放列表,确保用户发现符合他们口味的全新音乐。

案例研究

微软的 Xbox 部门宣布与 Inworld AI 签订多年合作协议,以开发用于游戏开发的先进 GenAI 工具。这次合作旨在通过整合 Inworld 在 GenAI 方面的专业知识与微软的 Azure OpenAI 服务和微软研究部门的见解,来提升角色对话和叙事创作的效果。目标是赋予游戏开发者创造更动态和沉浸式游戏体验的能力。

来源:https://developer.microsoft.com/en-us/games/articles/2023/11/xbox-and-inworld-ai-partnership-announcement/

法律服务

在法律行业,GenAI 和 LLMs 正在改变研究、合同分析和案例预测:

  • 法律研究:人工智能工具通过分析大量法律文件、案例法和法规,加速了法律研究。例如,ROSS Intelligence 使用人工智能在几秒钟内为律师提供相关的案例法和法律先例,这通常需要手动查找数*时。

  • 合同分析:大型语言模型(LLMs)被用于审查和分析合同,识别关键条款、风险和合规问题。这有助于加快谈判并确保合同无懈可击。Kira Systems 就是这样一个例子,它使用人工智能审查合同以进行尽职调查,识别条款和潜在风险。

  • 案例预测:基于历史数据,人工智能正在被用于预测法律案件的结果。通过分析过往案例,人工智能可以为律师提供可能的判决见解,帮助他们更好地制定策略。例如,Lex Machina 就使用人工智能预测法官在知识产权纠纷中可能做出的裁决。

案例研究

铁甲,一家领先的数字合同平台,已与 OpenAI 合作,将其高级人工智能功能集成到其法律工作流程中。通过利用 OpenAI 的语言模型,Ironclad 提升了其平台自动化合同分析、生成和审查法律文件以及更高效地为法律团队提供见解的能力。

这种集成使得合同处理更快、更准确,减少了手动审查的时间,并使法律团队能够专注于更高价值的工作。这次合作强调了人工智能在通过提高合同管理中的准确性和生产力来转型法律行业中所日益增长的作用。

教育

在教育领域,通用人工智能(GenAI)和大型语言模型(LLMs)正在改变学习体验、个性化教育和行政任务:

  • 学习经验:由人工智能驱动的平台正在根据学生的优势和劣势创建个性化的学习路径。例如,Coursera 等平台利用人工智能推荐适合每个学习者进度和偏好的课程和资源。

  • 个性化教育:大型语言模型(LLMs)可以通过回答问题、解释概念和提供作业反馈来辅导学生。Khan Academy 的 AI 驱动辅导员就是一个例子,为在特定主题上遇到困难的学生提供个性化帮助。

  • 行政任务:人工智能还被用于自动化诸如评分和排程等行政任务。例如,Turnitin 利用人工智能评分论文并检测剽窃,节省了教育者的时间并确保了学术诚信。

案例研究

可汗学院与 OpenAI 合作,将其先进的人工智能能力融入其教育平台。通过整合 OpenAI 的语言模型,可汗学院能够提供个性化的辅导、回答学生的问题,并以更互动和动态的方式协助学习。这次合作旨在通过提供实时帮助和定制支持来增强教育体验,使学习更加便捷和有效。AI 驱动的工具帮助学生掌握复杂的概念,提供即时反馈,并适应个人的学习风格,进一步通过技术民主化教育。可汗学院与 OpenAI 合作

来源

上述例子只是 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是一种基于 Web 的 API,遵循 REST 原则,使用 GET、POST、PUT 和 DELETE 等 HTTP 方法通过 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 个字符)。为了估计您的令牌消耗——因此您的成本——您可以参考这篇文章:help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them

每个 API 请求都会根据输入(提示)和输出(响应)消耗令牌。价格因模型而异,更强大的模型每令牌成本更高

您可以在 https://openai.com/api/pricing/ 找到 OpenAI 的定价模型。

要做到这一点,您可以按照以下步骤操作:

  1. 导航至 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)和大型语言模型(LLM)的兴起为软件开发领域的革命铺平了道路。事实上,从“现代应用”——指的是基于微服务架构和 CI/CD 的快速创新——我们现在谈论的是“智能应用”,这些应用被自然语言交互、数据驱动经验和适应新模型发布的速度所增强。

可以用以下插图来描述一个智能应用程序:

计算机网络图  描述由中等置信度自动生成

图 10.3:由 LLM 驱动的智能应用程序的解剖结构

在上述架构中,我们展示了具有以下特征的智能应用程序的解剖结构:

  • 它具有自然语言界面(可能是基于文本或语音的)。

  • 它由一个 LLM 驱动,作为应用程序的“大脑”。

  • 它有一个模型可以查询的知识库,通常使用检索增强生成RAG)技术。

  • 它有一套可以用来与外部环境交互的工具或插件。

这种新的软件开发范式带来了一组典型的 AI 驱动应用程序的新应用程序组件。让我们更详细地探讨这些新组件。

新的应用程序组件

在人工智能开发方面的主要转变是指我们与模型合作的方式:从生产模型,现在的趋势是消费模型,正如我们多次提到的,这些模型不过是 API。

这种转变导致了一系列新的软件开发组件(或现有组件的调整)在开发领域的出现:

  • 模型:模型就是我们决定嵌入到我们应用程序中的 LLM 类型。模型主要分为两大类:

    • 专有大型语言模型(Proprietary LLMs):指由特定公司或组织拥有的模型。例如,由 OpenAI 开发的 GPT-4o 或由 Google 开发的 Gemini。由于它们的源代码和架构不可用,这些模型不能从零开始使用自定义数据进行重新训练,但在需要时可以进行微调。

    • 开源(Open-source):具有代码和架构自由可用和分发的模型,因此它们也可以从零开始使用自定义数据进行训练。例如,由阿布扎比的技术创新研究所(Technology Innovation Institute,简称 TII)开发的 Falcon LLM 和由 Meta 开发的 Llama。

  • 系统消息(System message):这是我们提供给模型的一组指令,它影响我们 AI 应用的风格和行为。我们可以在元提示中直接塑造许多功能,包括:

    • 通过指定模型仅参考提供的知识库来减少幻觉(这个过程称为“扎根”)

    • 通过指定,例如,不响应恶意查询或不要生成可能有害的响应来实施负责任的 AI 实践

    • 指导模型在回答之前始终提出额外问题以巩固上下文

  • 记忆与向量数据库(Memory and VectorDB):当我们谈论 AI 应用程序中的记忆时,我们需要区分两种类型的记忆:

    • 短期记忆(Short-term memory):这是应用程序保持用户与 LLM 之间交互在上下文窗口中的能力。这意味着每条消息都会为模型的现有元提示提供信息,而无需用户重复已经提到的内容。

    • 长期记忆(Long-term memory):这种类型的记忆指的是我们通过嵌入提供给模型的外部知识库。在这种情况下,我们通常利用向量数据库,这是一种新型数据库(或现有数据库的新功能),用于存储提供的文档的数值表示。

      定义(Definition)

      向量数据库(VectorDB)是一种基于向量嵌入存储和检索信息的数据库,这些嵌入是捕获文本意义和上下文的数值表示。通过使用向量数据库,你可以根据意义的相似性而不是关键词进行语义搜索和检索。向量数据库的例子包括 Chroma、FAISS、Elasticsearch、Milvus、Pinecone、Qdrant 和 Weaviate。

  • 工具/插件(Tools/plugins):这些可以被视为可以集成到 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 中的矢量嵌入。

  • : 这些是预定的一系列动作和对 LLMs 的调用,这使得构建需要将 LLMs 相互连接或与其他组件连接的复杂应用程序变得更容易。一个链的例子可能是:获取用户查询,将其分成更*的部分,嵌入这些部分,在向量数据库中搜索相似的嵌入,使用向量数据库中最相似的三个部分作为上下文来提供答案,生成答案。

  • 代理: 代理是驱动 LLM 应用程序中决策的实体。它们可以访问一系列工具,并且可以根据用户输入和上下文决定调用哪个工具。代理是动态和自适应的,这意味着它们可以根据情况或目标改变或调整其行为。

Haystack

Haystack 是由 deepset 开发的一个基于 Python 的框架,deepset 是一家成立于 2018 年的初创公司,由 Milos Rusic、Malte Pietsch 和 Timo Möller 在柏林创立。deepset 为开发者提供了构建基于 NLP 的应用程序的工具,并且随着 Haystack 的引入,他们将其提升到了新的水平。

Haystack 包含以下核心组件:

  • 节点: 这些是执行特定任务或功能的组件,例如检索器、阅读器、生成器、摘要器等。节点可以是 LLMs 或其他与 LLMs 或其他资源交互的实用工具。在 LLMs 中,Haystack 支持专有模型,例如 OpenAI 和 Azure OpenAI 中可用的模型,以及可以从 Hugging Face Hub 获取的开源模型。

  • 管道: 这些是调用执行自然语言任务或与其他资源交互的节点的序列。管道可以是查询管道或索引管道,具体取决于它们是否在文档集上执行搜索或为搜索准备文档。管道是预定的和硬编码的,这意味着它们不会根据用户输入或上下文进行更改或适应。

  • 代理: 这是一个使用 LLMs 生成对复杂查询的准确响应的实体。代理可以访问一系列工具,这些工具可以是管道或节点,并且可以根据用户输入和上下文决定调用哪个工具。代理是动态和自适应的,这意味着它可以根据情况或目标改变或调整其行为。

  • 工具: 代理可以调用的函数用于执行自然语言任务或与其他资源交互。工具可以是代理可用的管道或节点,并且可以分组为工具包,这些工具包是一组可以完成特定目标的工具。

  • 文档存储: 这些是存储和检索用于搜索的文档的后端。文档存储可以基于不同的技术,包括向量数据库(例如 FAISS、Milvus 或 Elasticsearch)。

Haystack 以其简单性和易用性而闻名,具有模块化架构,允许开发者构建用于语义搜索和问答等任务的定制管道。这种设计使其特别适合于RAG应用,其中高效的数据检索至关重要。

语义内核

语义内核是我们将在本章中探索的第三个开源 SDK。它最初由微软开发,最初是用 C#编写的,现在也支持 Python。

这个框架的名字来源于“内核”的概念,通常来说,内核指的是系统的核心或本质。在这个框架的上下文中,内核的作用是作为引擎,通过将一系列组件链接和连接成管道来响应用户的输入,鼓励函数组合

定义

在数学中,函数组合是将两个函数组合成一个新的函数的方法。其思想是使用一个函数的输出作为另一个函数的输入,形成一个函数链。两个函数 f 和 g 的组合表示为,其中函数首先应用,然后是函数

计算机科学中的函数组合是一个强大的概念,它通过将较*的函数组合成较大的函数,从而创建更复杂和可重用的代码。它增强了模块化和代码组织,使程序更容易阅读和*护。

语义内核具有以下主要组件:

  • 模型:这些是 LLM 或大型基础模型,它们将成为应用程序的引擎。语义内核支持专有模型,例如 OpenAI 和 Azure OpenAI 中可用的模型,以及可以从 Hugging Face Hub 消费的开源模型。

  • 记忆:这允许应用程序在短期和长期内保留对用户交互的引用。在语义内核的框架内,记忆可以通过以下三种方式访问:

    • 键值对:这包括保存存储简单信息的环境变量,例如名称或日期。

    • 本地存储:这包括将信息保存到可以按其文件名检索的文件中,例如 CSV 或 JSON 文件。

    • 语义记忆搜索:这与 LangChain 和 Haystack 的记忆类似,因为它使用嵌入来表示和基于其意义搜索文本信息。

  • 函数:函数可以被视为混合 LLM 提示和代码的技能,目的是使用户的请求可解释和可执行。有两种类型的函数:

    • 语义函数:这些基本上是一个模板化的提示,它是一个自然语言查询,指定了 LLM 的输入和输出格式,还结合了提示配置,它设置了 LLM 的参数。

    • 原生函数:这些指的是可以路由语义函数捕获的意图并执行相关任务的本地计算机代码。

以一个示例来说明,一个语义函数可能会要求 LLM 写一段关于人工智能的短段落,而一个原生函数实际上可以在社交媒体如领英上发布。

  • 插件:这些是指向外部来源或系统的连接器,旨在提供额外信息或执行自主操作的能力。Semantic Kernel 提供了现成的插件,例如 Microsoft Graph 连接器套件,但您可以通过利用函数(本地和语义,或两者的组合)来构建自定义插件。

  • 规划者:由于大型语言模型(LLMs)可以被视为推理引擎,因此它们也可以被利用来自动创建链或管道以解决新用户的需求。这个目标是通过一个规划者来实现的,它是一个函数,它接受用户的任务作为输入,并生成实现目标所需的一组动作、插件和函数。

下面是 Semantic Kernel 结构的示意图:

技术视角下的发生情况

图 10.5:Semantic Kernel 的结构。来源:https://learn.microsoft.com/en-us/semantic-kernel/overview/

总体而言,这三个框架提供了更多或更少的类似核心组件,有时被称为不同的分类法,但涵盖了在协同系统概念中所示的所有块。因此,一个自然的问题可能是,“我应该使用哪一个来构建我的 LLM 驱动的应用程序?”

下面是一些您可能想要考虑的标准:

  • 您熟悉或更愿意使用的编程语言。不同的框架可能支持不同的编程语言,或与它们具有不同的兼容性或集成水平。例如,Semantic Kernel 支持 C#、Python 和 Java,而 LangChain 和 Haystack 主要基于 Python(尽管 LangChain 也引入了 JS/TS 支持)。您可能希望选择一个与您的现有技能或偏好相匹配的框架,或者允许您使用最适合您的应用程序领域或环境的语言。

  • 您想要执行或支持的自然语言任务类型和复杂性。不同的框架可能具有不同的能力或功能来处理各种自然语言任务,例如摘要、生成、翻译、推理等。例如,LangChain 和 Haystack 提供了编排和执行自然语言任务的实用工具和组件,而 Semantic Kernel 允许您使用自然语言语义函数来调用 LLM 和服务。您可能希望选择一个提供您所需或期望的功能和灵活性的框架,以适应您的应用程序目标或场景。

  • 您需要或希望对 LLMs 及其参数或选项进行定制和控制的程度。不同的框架可能有不同的方式来访问、配置和微调 LLMs 及其参数或选项,例如模型选择、提示设计、推理速度、输出格式等。例如,Semantic Kernel 提供了连接器,使您能够轻松地将记忆和模型添加到您的 AI 应用中,而 LangChain 和 Haystack 允许您为 DocumentStore、检索器、阅读器、生成器、摘要器和评估器插入不同的组件。您可能希望选择一个框架,它能够提供您对 LLMs 及其参数或选项所需或希望达到的定制和控制水平。

  • 框架的文档、教程、示例和社区支持的可用性和质量。不同的框架可能有不同水平的文档、教程、示例和社区支持,这些可以帮助您学习、使用和调试框架。例如,Semantic Kernel 有一个包含文档、教程、示例和 Discord 社区的网站;LangChain 有一个包含文档、示例和问题的 GitHub 仓库;Haystack 有一个包含文档、教程、演示、博客文章和 Slack 社区的网站。您可能希望选择一个具有可用性和质量的文档、教程、示例和社区支持的框架,这可以帮助您开始使用框架并解决相关问题。

好吧,没有正确或错误答案!上述所有三个编排器都非常有效。然而,某些功能可能更适合特定的用例或开发者的偏好。根据这一点做出您的选择。

介绍公共云:Azure OpenAI

在 2016 年,OpenAI 同意利用微软的 Azure 云基础设施来运行其 AI 实验,这导致了 2019 年科技巨头对萨姆·奥特曼的公司的投资,金额为 10 亿美元。

这标志着两家公司之间战略合作的开始,旨在开发对人类有益的 AI 模型和技术。该合作基于以下三个主要支柱:

  • 微软和 OpenAI 将共同构建新的 Azure 超级计算基础设施来训练 AI 模型。

  • OpenAI 将使其模型和技术可通过 Azure 云进行消费。

  • 微软将成为 OpenAI 在市场上商业化新 AI 解决方案的首选合作伙伴。

从那时起,两家公司一直持续投资和研究,最终,在 2023 年 1 月,OpenAI 模型作为托管服务在 Microsoft Azure 上提供:Azure OpenAI 服务(简称AOAI)。

随着 AOAI 服务的全面可用,一个新的里程碑已经达成,微软的人工智能产品组合已经扩展到 OpenAI 的强大 LLMs。

AOAI 服务

AOAI 服务是微软的一个产品,它提供了一个游乐场和 API,用于与 OpenAI 的所有强大语言模型进行交互和消费。重要的是要强调,模型是完全相同的:唯一的区别是,如果您通过 AOAI 消费它们,您将利用自己的 Azure 订阅并自动继承所有典型的微软公共云的企业功能,包括安全、基于角色的访问控制、数据隐私等。

要创建您的 AOAI 资源,请按照以下说明操作:

  • 导航到您的 Azure 门户 在此处https://ms.portal.azure.com

  • 点击 创建资源

  • 输入 azure openai 并点击 创建

  • 填写所需信息并点击 审查 + 创建

这在下面的屏幕截图中显示:

图 10.6:创建 AOAI 资源步骤

此过程可能需要几分钟。一旦准备就绪,您可以直接跳转到其用户友好的界面 AOAI Studio,在部署之前测试您的模型:

图 10.7:AOAI Studio 和聊天游乐场

要使用 AOAI 模型,您必须启动部署,这是一个可以附加到模型的 serverless 计算实例。

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

图 10.8:通过 Azure OpenAI 门户创建新的 AOAI 部署

最后,就像我们在上一节中为 OpenAI 模型的 API 所做的那样,从 AOAI Studio,您可以通过 API 消费您已部署的模型。为了快速入门,您可以导航到 聊天游乐场 并点击 查看代码 按钮。一个脚本将准备好复制粘贴到您喜欢的编程 IDE 中,以及访问资源所需的秘密密钥:

图 10.9:通过 API 消费已部署的模型

通过这样做,您可以将 Azure OpenAI 的 LLMs 无缝地集成到您自己的应用程序中。

摘要

在本章的开头,我们概述了 GenAI 如何颠覆行业,从提高内部流程的效率到通过个性化体验增强客户的旅程。许多这些应用可以通过高度的定制来实现,而预构建的面向消费者的应用程序,如 ChatGPT,可能不足以满足需求。

正因如此,我们引入了 OpenAI 模型的 API。通过模型 API,您可以在自己的应用程序中利用 ChatGPT 背后模型的力量,针对您自己的行业和场景进行定制。然而,开发 AI 驱动的应用程序需要一套新的组件,这也标志着软件开发的新范式。

最后,我们看到从 2023 年开始,OpenAI 模型(无论是在 Playground 中还是在 API 中)已通过 Microsoft Azure 作为托管服务提供:Azure OpenAI。这为大型企业采用新的一波铺平了道路,这些企业可以从公共云中已有的所有安全和治理层中受益(按设计,企业级就绪)。

在下一章中,我们将回顾本书涵盖的所有内容,包括最新的公告和发布。我们还将关注在短短几个月内生成式人工智能技术的指数级增长以及未来可以期待的内容。

参考文献

加入我们的 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 的 LLM,而且在后端应用程序逻辑和前端 UI 方面提供了极大的灵活性。

这段旅程旨在让您对我们提到的一些流行词汇,如 ChatGPT、OpenAI 和 LLM,有一个更清晰的了解。

然而,在下一节中,我们将看到最近几个月 AI 的快速发展是如何在我们所学的基础上带来全新的技术的。

并非所有都是关于 OpenAI

在整本书中,我们涵盖了“所有关于 OpenAI 的内容”。众所周知,OpenAI 是生成式 AI 领域的第一个进入者。很难否认 ChatGPT 的发布是标志着 AI 领域所谓范式转变的里程碑,从两个角度来看:

  • 从技术角度来看,ChatGPT(或者更准确地说,它背后的模型——GPT-3.5-turbo)在它上线时(2022 年 11 月)是最强大的 LLM。这给了 OpenAI 一个竞争对手难以衡量的竞争优势。

  • 从行为角度来看,ChatGPT“打破了互联网”,因为几乎每个人都对其易用性和非凡的能力感到震惊。这导致了一波新的用户,尽管他们不是 AI 专家,但对这个问题产生了兴趣,并开始探索产品的无限能力,在几个月内不断提高期望值。

然而,在 2022 年 11 月之后不久,许多其他玩家进入了市场,并开始用新的条目填充 LFM(低代码平台)的领域,既有专有技术也有开源技术。

让我们探索一下今天的一些关键玩家。

Mistral AI

这家总部位于法国的公司在生成式 AI 领域取得了显著进展,其开源模型备受赞誉。Mistral AI 以其 Mistral 7B 和 Mixtral 模型而闻名,这些模型因其性能和效率而受到好评。该公司专注于创建对更广泛的 AI 社区可访问的高性能模型,通过开源贡献促进创新。他们的模型旨在处理各种任务,从文本生成到代码补全,成为 AI 工具箱中的多用途工具。

Meta

Meta 在推进 LLM 的发展中扮演了关键角色,特别是其大型语言模型 Meta AILLaMA)系列。这些模型在推动 LLM 所能达到的边界方面发挥了重要作用,特别是在可扩展性和效率方面。Meta 的研究集中在优化训练这些大型模型所需的基础设施上,确保它们可以有效地部署在各种应用中。他们的工作也强调了开源模型的重要性,允许全球开发者在其创新的基础上进行构建。

Microsoft

正如我们在第十章中提到的,Microsoft 通过多年的合作,利用其 Azure 平台支持 OpenAI 的开发和部署。Microsoft 还将其 Azure 平台上提供的整个 LLM 目录通过 API(包括专有和开源)公开,以支持其他 LLM 的开发和部署。

除了其合作伙伴关系外,Microsoft 还开发了其自己的 Phi 系列模型。Phi-3 系列模型,包括 Phi-3-mini、Phi-3-small 和 Phi-3-medium,旨在高度高效和成本效益。这些模型在各种基准测试中表现出色,在语言理解、推理、编码和数学等任务上优于更大的模型。例如,Phi-3-mini 支持高达 128K 个 token 的上下文窗口,使其适用于不同的应用场景。Microsoft 专注于优化这些模型,以便在各种平台上部署,包括 Azure AI、Hugging Face 和本地环境,确保它们对广泛的用户既可访问又实用。这种致力于开发稳健、可扩展和高效的模型,突显了 Microsoft 在 GenAI 领域的重大贡献。

Google

Google 凭借其 Gemini 模型在多模态应用领域处于 GenAI 的前沿,这些模型能够处理和生成各种格式的内容,包括文本、图像和视频。Google 在检索增强生成RAG)方面的创新,通过整合来自云数据库的实时数据,提高了 LLM 输出的准确性和可靠性。这种方法有助于缓解诸如幻觉等问题,确保生成的内容既相关又准确。

Anthropic

Anthropic 开发了 Claude 系列 LLM,这些模型以其安全性和伦理考量而闻名。Claude 模型旨在最*化偏见并促进公平,使其适用于广泛的用途。

Anthropic 公司对负责任的人工智能发展的关注在业界树立了高标准,确保其模型不仅强大,而且符合伦理指导原则。对安全性和透明度的承诺使得 Claude 在通用人工智能社区中成为一个值得信赖的品牌。

在通用人工智能市场中,LLM 的激增正在呈指数级增长。然而,重要的是要认识到,我们选择“最适合我们应用的‘最佳 LLM’”不应仅仅基于平均性能最高的模型。截至写作时,有许多在特定领域或专业知识(如数学推理、代码生成、特定语言等)上受过训练的 LLM,它们的平均性能远低于像 OpenAI 的 o1 这样的通用模型。尽管如此,在开发我们的应用程序时,我们可能需要考虑不同的变量。

例如,我们可能对具有特定行业分类法深刻理解的模型感兴趣。如果是这样,我们可能希望利用为这一目的训练和微调过的 LLM,比如微软的 BioGPT。或者,我们可能需要在断开连接的场景下本地运行我们的模型(比如想一下位于海洋中的离岸工厂);如果是这种情况,我们无法运行,比如说,GPT-4o——首先,因为它是一个专有模型,不能被“下载”;其次,我们是否拥有能够托管超过 100 万亿参数的超级计算机?

在许多场景中,需要除了“最先进”的模型之外的模型,评估特定用例所需的模型类型是新一代与通用人工智能相关工作的部分职责。

生成人工智能的伦理影响以及为什么我们需要负责任的人工智能

前一节强调了随着生成人工智能技术的广泛知识和采用,普遍的担忧正在上升。

人工智能技术的快速进步带来了众多伦理考量与挑战,这些都需要我们谨慎应对,以确保它们能够负责任且公平地部署。以下是一些例子:

  • 数据隐私和安全:由于人工智能系统严重依赖数据用于其学习和决策过程,确保数据隐私和安全变得至关重要。在生成人工智能的背景下,这是一个影响用于训练模型的数据的话题。尽管 ChatGPT 用于生成响应的知识库是公开的,但使用这些信息生成响应的涉及用户的信息同意的阈值在哪里?

  • 偏见与公平性:人工智能模型通常从历史数据中学习,这可能会无意中引入偏见。解决人工智能系统中的偏见和公平性问题涉及以下方面:

    • 多样化的数据集:确保训练数据多样化且能代表各种人口群体可以帮助减少人工智能模型中的偏见。

    • 算法公平性:开发优先考虑公平性且不对特定人口群体进行歧视的算法至关重要。

    • 监控和审计:定期监控和审计人工智能系统可以帮助识别和纠正偏见,确保结果公平。

  • 透明度和问责制:随着人工智能系统变得更加复杂,理解其决策过程可能具有挑战性。这涉及到以下两个重要方面:

    • 可解释人工智能:开发能够为他们的决策提供清晰解释的人工智能模型可以帮助用户理解和信任该系统。

    • 责任与义务:明确人工智能系统的责任和义务界限对于确保开发者、组织和用户对人工智能驱动决策的后果负责至关重要。

  • 工作的未来:人工智能驱动的自动化有可能在某些行业取代工作,引发对工作未来的担忧。在这本书中,我们看到了 ChatGPT 和 OpenAI 模型如何能够提高个人和企业的生产力。然而,一些重复性任务也可能被人工智能彻底取代,这将影响一些工人。这是变革和发展过程的一部分,并且拥抱变化而不是与之抗争是至关重要的。

在这个方向上的一些行动可能是再培训和技能提升项目——政府、组织和教育机构应投资于再培训和技能提升项目,以帮助工人适应不断变化的就业市场并获得新兴角色所需的新技能。

最重要的是,应鼓励人机协作。开发能够补充和增强人类能力的人工智能系统可以帮助创造新的就业机会并促进协作工作环境。

通过解决这些伦理考虑和挑战,我们可以朝着正确的方向努力,确保人工智能技术得到负责任地开发和部署,为所有人创造一个更好、更公平的未来。

现在,下一个合乎逻辑的问题可能是:鉴于最近几个月人工智能技术的巨大加速,我们应该期待什么?

近期可以期待什么

近几个月来,人工智能研究和发展的加速令人难以置信。从 2022 年 11 月到撰写本文时(2025 年 2 月),我们看到了以下情况发生:

  • 2022 年 11 月:OpenAI 发布了 ChatGPT,这是一个基于 GPT-3.5 的对话式人工智能模型,因其类似人类的文本生成能力而迅速获得广泛关注。

  • 2022 年 12 月:ChatGPT 在发布后的五天内用户数量超过一百万,突显了公众对 AI 驱动对话工具的快速接受。

  • 2023 年 1 月:微软宣布对 OpenAI 进行数十亿美元的投资,旨在将其产品和服务中的先进 AI 技术整合,这是 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 月,一项新的突破性计划被宣布:星门项目。该项目是一个大规模的倡议,旨在在美国开发下一代 AI 基础设施。由 OpenAI、软银、甲骨文和 MGX 支持,该项目预计在未来四年内获得高达 5000 亿美元的投资。第一阶段涉及 1000 亿美元的初始投资,并计划随着需求的增长而扩大。

这个倡议旨在建设尖端数据中心和能源设施,确保美国在人工智能发展中保持竞争力。像微软、英伟达和 Arm 这样的主要技术公司正在贡献专业知识和资源。该项目预计将创造数十万个工作岗位并推动经济增长,德克萨斯州被选为首个建筑工地,其他地点正在审查中。除了经济影响之外,Stargate 被定位为加强人工智能基础设施和增强国家安全的战略努力。

这种令人难以置信的速度使得预测接下来会发生什么变得困难。正如我们所看到的,这种速度也因这些新技术缺乏监管而引起了机构、公司和公众人物的关注。同时,公司和机构不可避免地需要适应这个新的格局,以跟上竞争对手。

当我们展望未来时,生成人工智能的轨迹指向越来越自主和协作的系统。人工智能代理——无需人类干预即可执行复杂任务的自主实体——正在快速发展。这些代理预计将管理各个领域的复杂流程,从自动化业务运营到提高个人生产力。多智能体系统的集成,其中多个人工智能代理协作以实现共同目标,有望通过模仿有效的人类团队合作来革新问题解决。

摘要

生成人工智能技术的快速发展正在引领一个创新和变革的新时代。这些进步具有革命性的潜力,可以改变行业并重塑日常生活,正在重新书写人机交互的规则。

随着我们站在这个由人工智能驱动的未来的门槛上,确保这些技术负责任和道德地使用是我们共同的责任。通过拥抱机遇和应对挑战,我们可以培养一个世界,在那里人工智能赋予人类力量,并提升我们的潜力达到新的高度。

通用人工智能(GenAI)时代“仅仅”始于两年前,如果你考虑它在这一时间段内产生的影响,我们不禁想象我们可能会在不久的将来见证的所有伟大成就。

参考文献

加入我们在 Discord 和 Reddit 上的社区

对这本书有疑问或想对生成人工智能(Generative AI)和大型语言模型(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 所示,游乐场提供了一个用户可以开始与模型交互的 UI,你可以在聊天界面的顶部选择该模型。请注意,无论何时通过 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)。您可以提供系统消息——您提供给模型的指令集——全部使用自然语言。

定义

在 LLM 的上下文中,系统消息是在对话开始时提供的指令,用于确定模型的角色、行为和响应指南。此消息设定了总体上下文,指导模型与特定目标或约束保持一致。例如,系统消息可能指定模型应充当友好的旅行顾问或保持正式的语气。此配置可以在 AI 开发者层面设置,这样最终用户将无法访问它,因此无法“强迫”模型以不同的方式行为。

您还可以比较给定相同问题的两个不同模型的输出。以下是如何做到这一点的示例:

自动生成的聊天截图描述

图 2:两个模型之间比较的示例

对于每个模型,您还可以调整一些您可以配置的参数。以下是一个列表:

  • 温度(范围从 0 到 2):这控制着模型响应的随机性。低温度使模型更确定,意味着它倾向于对相同的问题给出相同的输出。例如,如果我将温度设置为 0 多次询问我的模型“什么是 OpenAI?”的话,它大多数时候会给出相同的答案。另一方面,如果我用大于 0 的温度做同样的事情,它将尝试每次修改其答案,从措辞和风格上。

  • 最大标记数: 这控制着模型对用户提示的响应长度(以标记数计)。

  • 停止序列(用户输入):这使响应在期望的点结束,例如句子的结尾或列表的结尾。

  • 最高概率(范围从 0 到 1):这控制了模型在生成响应时将考虑哪些标记。这意味着模型将从累积概率总和达到分布 90%的最*标记集中进行选择。

  • 频率惩罚(范围从 0 到 1):这控制了在生成的响应中相同标记的重复。惩罚越高,同一响应中看到相同标记超过一次的概率越低。惩罚会根据标记到目前为止在文本中出现的频率成比例地减少(这是与以下参数的关键区别)。

  • 存在惩罚(范围从 0 到 2):这与前面的参数类似,但更严格。它减少了重复任何到目前为止已出现在文本中的标记的概率。由于比频率惩罚更严格,存在惩罚也增加了在响应中引入新主题的可能性。

助手

OpenAI 助手可以被视为一种更快、更简单地开发 AI 代理的方法。事实上,助手可以被定义为由 LLM 驱动的实体,具有要遵循的指令和要使用的工具或插件集。

在 OpenAI 助手的例子中,它们附带三个预构建的工具:

  • 文件搜索:这允许用户上传自定义文档,以便助手可以导航这些文档以完成用户的查询。它使用基于 RAG 的框架。

  • 函数调用:这允许用户定义一组自定义函数,助手可以调用这些函数来完成特定任务。

  • 代码解释器:这指的是助手运行代码的能力,无论是针对提供的文档(例如,在需要数学计算的电子表格或分析论文的情况下)还是简单地解决用户提供的复杂任务(例如,复杂的数学问题)。

在下面的截图中,您可以看到一个名为Chat with PDF的助手示例,该助手专门用于响应提供的文档(在我的情况下,我上传了 Hugo Touvron 等人撰写的论文《LLaMA:开放和高效的基座语言模型》)。

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

图 3:OpenAI 助手的示例

如前一个截图所示,助手能够回答我的问题,从提供的文档中检索知识。事实上,我的问题相当模糊,因为“毒性”一词可以指多个领域;尽管如此,助手知道要监督提供的文档作为主要信息来源。

完成项

本节涉及一类称为基础模型的模型,如 GPT-3。它们是所谓“助手模型”(或聊天模型,如我们之前所看到的)的基础。例如,聊天模型 GPT-3.5 Turbo(ChatGPT 背后的模型)是基础模型 GPT-3 的微调版本。

定义

完成任务(基础)模型旨在对提示生成单个响应,这使得它们适合文本生成和摘要等任务,而不需要在多次交互中保持上下文。另一方面,聊天(助手)模型针对交互式对话进行了优化,能够在多个回合中保持上下文,非常适合聊天机器人虚拟助手等应用。

下面你可以看到一个典型的 Playground 中的完成任务示例:

![计算机屏幕截图 自动生成的描述](https://github.com/OpenDocCN/freelearn-dl-zh/raw/master/docs/prac-genai-cgpt/img/附录 _04.png)

图 4:OpenAI Playground 中完成任务的示例

如您所见,使用我的话“今天我去了杂货店和”模型用最可能出现的词完成了句子。

今天,完成任务模型很少被使用,因为它们在性能上被聊天模型超越,但它们可以被进一步微调以适应特定的用例(我们将在本节后面讨论微调)。

文本到语音

除了Whisper这个语音转文本模型之外,OpenAI 还发布了一个文本到语音TTS)模型,可以直接在 Playground 中测试。

让我们来看一个示例:

![视频聊天屏幕截图 自动生成的描述](https://github.com/OpenDocCN/freelearn-dl-zh/raw/master/docs/prac-genai-cgpt/img/附录 _05.png)

图 5:在 Playground 中使用 OpenAI 的 TTS 模型的示例

如上图所示,您可以选择声音、模型、速度和音频格式。

所有的先前模型都是预先构建的,从意义上讲,它们已经在庞大的知识库上进行了预训练。

然而,有一些方法可以使您的模型更加定制化,更适合您的用例。

自定义您的模型

为您的用例定制模型的第一个方法是嵌入在模型设计的方式中,这涉及到在少量样本学习方法中为您的模型提供上下文。

例如,您可以要求模型生成一篇文章,其模板和词汇库回忆起您已经写过的另一篇文章。为此,您可以提供模型生成文章的查询,以及前述文章作为参考或上下文,这样模型就能更好地准备您的请求。

这里有一个示例:

![聊天屏幕截图 自动生成的描述](https://github.com/OpenDocCN/freelearn-dl-zh/raw/master/docs/prac-genai-cgpt/img/附录 _06.png)

图 6:使用少量样本学习方法的 OpenAI Playground 内对话示例

在上一个示例中,我指示模型只输出推文的情感标签,并提供了三个如何做到这一点的示例。

自定义您模型的第二种方法是更复杂一些的,被称为微调。微调是将预训练模型适应新任务的过程。

在微调过程中,预训练模型的参数被调整,要么通过调整现有参数,要么通过添加新参数,以更好地适应新任务的数据。这是通过在一个针对新任务的*型标记数据集上训练模型来实现的。微调背后的关键思想是利用从预训练模型中学到的知识,并将其微调到新任务,而不是从头开始训练模型。看看下面的图:

图 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 生成创意图像

霍莉·皮卡诺

ISBN: 9781835087718

  • 掌握 DALL-E 3 的架构和训练方法

  • 以精确度创建精美的印刷品和其他 AI 生成的艺术作品

  • 无缝地将 AI 与传统艺术融合

  • 解决 AI 艺术中的伦理困境

  • 探索数字创造力的未来

  • 为您的艺术追求实施实用的优化技术

使用 OpenAI API 构建 AI 应用程序

马丁·亚内夫

ISBN: 9781835884003

  • 在使用 OpenAI API 进行 NLP 任务方面打下坚实的基础

  • 构建、部署并将支付集成到各种桌面和 SaaS AI 应用程序中

  • 将 ChatGPT 集成到 Flask、Django 和 Microsoft Office API 等框架中

  • 通过将 DALL-E API 集成到桌面应用程序中,释放您的创造力,生成令人惊叹的 AI 艺术

  • 体验 Whisper API 的语音识别和文本到语音功能

  • 了解如何针对您的特定用例微调 ChatGPT 模型

  • 掌握 AI 嵌入技术以衡量文本字符串的相关性

Packt 正在寻找像您这样的作者

如果您有兴趣成为 Packt 的作者,请访问 authors.packtpub.com 并今天申请。我们已与成千上万的开发人员和科技专业人士合作,就像您一样,帮助他们将见解分享给全球科技社区。您可以提交一般申请,申请我们正在招募作者的特定热门话题,或提交您自己的想法。

分享您的想法

您已完成《实用生成式 AI 与 ChatGPT 第二版》,我们非常乐意听到您的想法!如果您从亚马逊购买了本书,请点击此处直接进入该书的亚马逊评论页面并分享您的反馈或在该购买网站上留下评论。

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

posted @ 2026-03-25 10:26  布客飞龙II  阅读(1)  评论(0)    收藏  举报