跳到主要内容

导言:使用 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 实现部署我们的模型,并对一组示例短信进行预测。这将展示我们模型在实际场景中的实际应用。

短信天使应用程序

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

为什么选择 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 风格中听错歌词的幽默世界之后,我们现在将重点转移到一个更复杂的应用程序,涉及 GPT-4 和聊天补全功能。本教程介绍了“短信天使”,这是一个创新应用程序,旨在预筛选短信,确保它们是适当和对关系友好的,特别是对于那些倾向于讽刺的人。

设置短信天使实验

我们首先设置一个新的 MLflow 实验,名为“短信天使”。此实验旨在创建一个服务,分析短信并在发送前提供其适当性的指导。目标是在保持积极沟通的同时允许 playful 的语气。

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 集成到我们的“短信天使”应用程序中。此过程涉及在 MLflow 运行中设置模型,记录其配置,并准备其用于实际使用。

启动 MLflow 运行

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

在 MLflow 中记录 GPT-4 模型

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

  • 模型选择:我们指定 gpt-4,表明我们正在使用比上一个示例更先进的 OpenAI 模型版本。
  • 任务规范:选择 openai.chat.completions 任务,与我们创建能够分析和回复短信的对话式 AI 的目标保持一致。
  • 工件路径:我们定义一个 MLflow 将存储模型相关数据的工件路径。
  • 消息:将包含我们预定义提示和评估短信标准的 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 的 ChatCompletions:本教程让我们亲身体验了 GPT-4 的 ChatCompletions 功能,展示了其理解上下文、维持对话流程和生成类人响应的能力。“短信天使”应用程序示例说明了如何使用此类模型来改进和完善日常沟通。

  • 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 风味的更多高级教程