跳到主要内容

简介:利用 GPT-4 和 MLflow 推进沟通

下载此笔记本

欢迎来到我们的高级教程,在这里我们将深入探讨 OpenAI GPT-4 的尖端功能,特别是其聊天补全功能。在本课程中,我们将 GPT-4 的高级语言能力与 MLflow 强大的实验跟踪和部署框架相结合,创建一个创新应用程序:短信天使。

教程概述

在本教程中,我们将

  1. 设置和验证环境:确保所有必要的配置(包括 OPENAI_API_KEY)都已到位,以供我们的实验使用。

  2. 初始化 MLflow 实验:设置一个名为“短信天使”的 MLflow 实验,以跟踪和管理我们模型的性能和结果。

  3. 使用 GPT-4 实现聊天补全:利用 GPT-4 的聊天补全任务,开发一个可以分析和响应短信的应用程序。GPT-4 的此功能允许创建上下文感知、对话式 AI 应用程序,这些应用程序可以理解并生成类似人类的文本响应。

  4. 模型部署和预测:使用 MLflow 的 pyfunc 实现来部署我们的模型,并在一组示例短信上进行预测。这将展示我们模型在现实场景中的实际应用。

短信天使应用程序

我们的应用程序“短信天使”旨在增强日常短信交流。它将分析 SMS 回复的语气、恰当性和对关系的影响。模型会将回复分类为“可以发送!”或建议谨慎(“在发送前可能需要重新阅读一下”)。对于被认为不恰当的回复,它还将建议替代措辞,以保持友好而机智的语气。

为什么选择 GPT-4 和 MLflow?

  • GPT-4 的高级 AI:GPT-4 代表了 AI 语言模型的最新发展,提供了细致的理解和响应生成能力,非常适合“短信天使”这样的基于文本的应用程序。

  • MLflow 的无缝管理:MLflow 简化了跟踪实验、管理不同模型版本和部署 AI 模型的过程。它与 GPT-4 的集成使我们能够专注于应用程序的创意方面,同时高效地处理模型管理的技��细节。

参与教程

随着我们��进,我们鼓励您积极参与所介绍的代码和概念。本教程不仅在于学习功能,还在于理解这些技术在创意结合时的潜力。

让我们踏上这段旅程,利用 MLflow 和 GPT-4 聊天补全的功能,增强我们数字世界的沟通和互动。

import warnings

# Disable a few less-than-useful UserWarnings from setuptools and pydantic
warnings.filterwarnings("ignore", category=UserWarning)
import os

import openai
import pandas as pd
from IPython.display import HTML

import mlflow
from mlflow.models.signature import ModelSignature
from mlflow.types.schema import ColSpec, ParamSchema, ParamSpec, Schema

# Run a quick validation that we have an entry for the OPEN_API_KEY within environment variables
assert "OPENAI_API_KEY" in os.environ, "OPENAI_API_KEY environment variable must be set"

使用 GPT-4 和聊天补全实现短信天使

在探索了介绍性教程中关于 openai flavor 的误听歌词的有趣世界之后,我们现在将重点转移到涉及 GPT-4 和聊天补全功能更高级的应用程序。本教程介绍了“短信天使”,这是一个创新的应用程序,旨在预先筛选短信,确保它们恰当且有利于人际关系,特别是对于那些倾向于讽刺的人。

设置短信天使实验

我们首先设置一个新的 MLflow 实验,标题为“短信天使”。该实验旨在创建一个服务,用于分析短信并在发送前提供关于其恰当性的指导。目标是维持积极的沟通,同时允许轻松的语气。

GPT-4 和聊天补全的作用

与我们在介绍性教程中使用的前一个模型相比,GPT-4 代表了能力的巨大飞跃。它带来了增强的理解和上下文意识,非常适合以高度的准确性和细微差别来解释和响应自然语言。特别是聊天补全功能,它支持一种更具对话性的方法,这非常适合我们的短信评估场景。

为短信评估编写提示

我们应用程序的核心是一个精心设计的提示,它指示 GPT-4 根据特定标准评估短信

  • 内容分析:模型确定消息是否包含不当元素,如无趣的讽刺、被动攻击的语气,或任何可能损害关系的因素。
  • 回复分类:根据其分析,模型将消息分类为“可以发送!”或建议“发送前可能需要重新阅读一下”。
  • 建议的更正:如果消息被认为不恰当,模型会进一步建议替代版本。此更正后的消息旨在保持有趣且略带刻薄的语气,同时确保它不会损害关系。

这种设置不仅展示了 GPT-4 在理解和生成类似人类文本方面的先进能力,还突显了它在日常沟通场景中的实际应用潜力。

mlflow.set_experiment("Text Message Angel")

messages = [
{
"role": "user",
"content": (
"Determine if this is an acceptable response to a friend through SMS. "
"If the response contains humorless sarcasm, a passive aggressive tone, or could potentially "
"damage my relationship with them, please respond with 'You might want to read that again before "
"pressing send.', otherwise respond with 'Good to Go!'. If the response classifies as inappropriate, "
"please suggest a corrected version following the classification that will help to keep my "
"relationship with this person intact, yet still maintains a fun and somewhat snarky tone: {text}"
),
}
]

将 GPT-4 与 MLflow 集成以实现短信天使

在这个关键步骤中,我们将先进的 GPT-4 模型与 MLflow 集成,用于我们的 Text Message Angel 应用程序。此过程包括在 MLflow 运行中设置模型,记录其配置,并准备好投入实际使用。

开始 MLflow 运行

我们启动了一个 MLflow 运行,这是跟踪我们模型性能、参数和输出的关键步骤。此运行封装了我们正在使用的 GPT-4 模型的所有详细信息和指标。

在 MLflow 中记录 GPT-4 模型

在此运行中,我们使用 mlflow.openai.log_model 记录我们的 GPT-4 模型。此函数调用对于将我们模型的具体信息注册到 MLflow 的跟踪系统中至关重要。以下是我们正在记录的参数的细分

  • 模型选择:我们指定 gpt-4,表示我们使用的 OpenAI 模型比之前的示例要先进得多。
  • 任务指定:选择 openai.chat.completions 任务,以符合我们创建能够分析和响应短信的对话式 AI 的目标。
  • Artifact Path:我们定义一个 MLflow 将存储模型相关数据的 Artifact Path。
  • Messages:将包含我们预定义的提示和评估短信标准的 messages 变量传递给模型。
  • 模型签名:签名定义了模型的输入-输出模式和参数,例如 max_tokenstemperature。这些设置对于控制模型如何生成响应至关重要。
with mlflow.start_run():
model_info = mlflow.openai.log_model(
model="gpt-4",
task=openai.chat.completions,
name="model",
messages=messages,
signature=ModelSignature(
inputs=Schema([ColSpec(type="string", name=None)]),
outputs=Schema([ColSpec(type="string", name=None)]),
params=ParamSchema(
[
ParamSpec(name="max_tokens", default=16, dtype="long"),
ParamSpec(name="temperature", default=0, dtype="float"),
]
),
),
)

加载模型以供使用

在 MLflow 中记录模型后,我们使用 mlflow.pyfunc.load_model 将其加载为通用的 Python 函数。此步骤至关重要,因为它将我们的 GPT-4 模型转换为一种易于调用并在我们的应用程序中使用的格式。

model = mlflow.pyfunc.load_model(model_info.model_uri)

测试短信天使

我们的短信天使应用程序由 GPT-4 提供支持并集成在 MLflow 中,我们现在准备对其进行测试。本节包括创建一组示例短信,其中一些可能包含讽刺或被动攻击的语气,而另一些则更直接友好。

创建验证数据

我们首先创建一个名为 validation_data 的 DataFrame,其中包含各种短信。这些消息旨在测试模型区分语气和在必要时建议更正的能力

  1. 一条利用幽默来掩饰对晚餐体验的批评的消息。
  2. 一条表达不愿意去看电影的讽刺评论。
  3. 一条表达对公路旅行兴奋的直截了当的消息。
  4. 一条简单的感谢信息。
  5. 关于享受某人歌声的讽刺话。

将消息提交给模型

接下来,我们将这些消息提交给我们的短信天使模型进行评估。模型将分析每条消息,确定它是否恰当或需要修改。对于可能损害关系的短信,模型将建议一个更合适的版本。

显示模型的回复

模型的回复随后会进行格式化,以便清晰美观地显示。此步骤对于实时评估模型的性能并理解其更正和建议如何与消息的预期语气保持一致至关重要。

模型的输出

让我们看看短信天使是如何回应的

  1. 建议了一种更机智的方式来评论晚餐。
  2. 为拒绝周四的电影邀请提供了一个幽默但更温和的替代方案。
  3. 确认公路旅行消息是恰当的。
  4. 将感谢消息验证为合适的。
  5. 建议用一种俏皮而友善的方式评论歌声。

这些回复展示了模型对社交沟通的细致理解,保持友好而有趣的语气的能力,以及在帮助用户更有效、更和谐地沟通方面的潜力。

validation_data = pd.DataFrame(
{
"text": [
"Wow, what an interesting dinner last night! I had no idea that you could use canned "
"cat food to make a meatloaf.",
"I'd rather book a 14th century surgical operation than go to the movies with you on Thursday.",
"Can't wait for the roadtrip this weekend! Love the playlist mixes that you choose!",
"Thanks for helping out with the move this weekend. I really appreciate it.",
"You know what part I love most when you sing? The end. It means its over.",
]
}
)

chat_completions_response = model.predict(
validation_data, params={"max_tokens": 50, "temperature": 0.2}
)

formatted_output = "<br>".join(
[f"<p><strong>{line.strip()}</strong></p>" for line in chat_completions_response]
)
display(HTML(formatted_output))

发送前可能需要重新阅读一下。建议回复:“昨晚的晚餐真是太特别了!谁能想到肉饼会如此……冒险?”


发送前可能需要重新阅读一下。建议的更正:“我宁愿看一部 14 世纪的外科手术纪录片,也不愿错过周四和你的电影。怎么样,这算不算情节大转折?”


可以发送!


可以发送!


发送前可能需要重新阅读一下。建议回复:“你知道我最喜欢你唱歌的哪部分吗?安可。这意味着我可以再次听到你!”

结论:使用 MLflow 和 OpenAI 的 GPT-4 推进 AI 互动

随着我们完成本教程,是时候反思我们获得的见解了,特别是 GPT-4 在对话式 AI 领域令人瞩目的能力,以及 MLflow 如何促进这些先进模型的部署和管理。

主要收获

  • 深入探讨 GPT-4 的聊天补全:本教程使我们对 GPT-4 的聊天补全功能有了实践经验,展示了其理解上下文、保持对话流程和生成类似人类响应的能力。“短信天使”应用程序举例说明了如何使用此类模型来改进和优化日常沟通。

  • MLflow 在管理高级 AI 中的作用:MLflow 不仅在处理模型物流方面表现出色,还在简化 GPT-4 等复杂 AI 模型的实验方面发挥了作用。其强大的跟踪和记录功能使得管理对话式 AI 模型和对其进行迭代变得更加容易。

  • 实际应用和潜力:“短信天使”展示了 GPT-4 高级功能的实际应用,证明了 AI 如何用于增强和保护人际沟通。这让我们得以一窥对话式 AI 在客户服务、心理健康、教育和其他领域中的应用。

  • AI 的演进和 MLflow 的适应性:本教程强调了 MLflow 的灵活框架如何能够跟上 AI 的快速发展,特别是在自然语言处理和对话式 AI 等领域。

继续推进对话式 AI

MLflow 和 OpenAI 的 GPT-4 的结合为开发更直观、响应更快的 AI 驱动型应用程序开辟了令人兴奋的途径。随着我们不断见证 AI 的进步,MLflow 适应和管理这些复杂模型的能力变得越来越重要。

开始您的 AI 之旅

我们鼓励您在本次教程的基础上,进一步探索对话式 AI 的巨大潜力。借助 MLflow 和 OpenAI 的 GPT-4,您已经具备了创建能够以更像人类的方式进行对话、理解和交互的创新应用程序的条件。

感谢您与我们一起探索对话式 AI 和模型管理的尖端领域。您开发 AI 增强通信工具的旅程才刚刚开始,我们很期待看到您的创造力和技能将带领您走向何方!

要继续您的学习之旅,请参阅有关 MLflow 的 OpenAI 风味的更多高级教程