MLflow 中的 OpenAI Flavor 使用入门
欢迎来到本教程,我们将通过 MLflow 的 openai flavor 来学习如何利用 OpenAI 的 GPT 模型。在本节中,我们将踏上一段探索 AI 驱动的文本分析和修改的奇妙旅程。随着我们深入了解 GPT 模型的功能,您将发现其 API 的细微之处,并理解从旧的 Completions API 到更先进的 ChatCompletions 的演变,后者提供了对话式的交互方式。
您将学到什么:
- 与 GPT 模型交互:了解如何与 GPT-3.5 和 GPT-4 等不同模型系列进行交互。
- MLflow 集成:学习如何将这些模型无缝集成到 MLflow 中,从而构建一个目的明确、能够以可预测且可重复的方式执行单一特定任务的模型实例。
- 模型定义:您将学习如何使用
Completions端点定义一个简单的、单一用途的提示,以定义一个您可以与之交互的函数。
背景:OpenAI 和 GPT 模型
OpenAI 以其生成式预训练 Transformer (GPT) 模型彻底改变了自然语言处理领域。这些模型在各种互联网文本上进行了训练,并且具有生成类人文本、回答问题、总结段落等惊人的能力。从 GPT-3 到 GPT-4 的演进标志着在理解上下文和生成更准确的响应方面取得了显著的进步。
Completions API
这个遗留 API 用于基于提示生成文本。它简单、直接,除了需要一些创造力来构建有用的提示指令集之外,实现起来并不需要太大的努力。
探索教程
在本教程中,我们将使用 MLflow 部署一个与 Completions API 交互的模型,提交一个提示,该提示将用于对模型的任何调用。在本教程中,您将学习创建提示的过程,如何保存具有可调用参数的模型,最后如何加载已保存的模型以供交互使用。
让我们一起进入 AI 增强通信的世界,探索 GPT 模型在日常场景中的潜力。
先决条件
为了开始使用 OpenAI flavor,我们首先需要准备一些东西。
- 一个 OpenAI API 账户。您可以在此处注册以获得访问权限,从而开始以编程方式访问地球上最先进的 LLM 服务之一。
- 一个 OpenAI API 密钥。创建账户后,您可以通过导航到API 密钥页面来访问它。
- OpenAI SDK。它在 PyPI 上可用。在本教程中,我们将使用版本 0.28.1(1.0 版本之前的最后一个发布版本)。
要安装与此笔记本兼容的 openai SDK 库以便您自己尝试,以及 MLflow 与 openai 集成所需的额外 tiktoken 依赖项,只需运行
pip install 'openai<1' tiktoken
API 密钥安全概述
API 密钥,特别是对于 SaaS 大型语言模型 (LLM),由于与计费相关,因此与财务信息一样敏感。
基本实践:
- 保密性:始终将 API 密钥保密。
- 安全存储:优先使用环境变量或安全服务。
- 定期轮换:定期更新密钥以避免未经授权的访问。
配置 API 密钥
为确保安全使用,请将 API 密钥设置为环境变量。
macOS/Linux:有关在终端中使用环境变量的详细说明,请参阅 Apple 关于在终端中使用环境变量的指南。
Windows:请遵循 Microsoft 关于环境变量的文档中概述的步骤。
导入和快速的环境验证步骤
除了运行本教程所需的常规导入外,我们还将验证我们的 API 密钥是否已设置并且可访问。
运行以下单元格后,如果引发了异常,请重新检查步骤,确保您的 API 密钥已正确注册到您系统的环境变量中。
故障排除技巧
如果您遇到声明必须设置 OPENAI_API_KEY 环境变量的异常,请考虑以下常见问题和补救措施:
- 内核重启:如果您使用的是 Jupyter Notebook,请确保在设置环境变量后重启内核。这对于内核识别环境变量的更改是必需的。
- 正确的配置文件脚本:在 macOS 和 Linux 上,请确保您已编辑了正确的配置文件脚本(Bash 为 .bashrc,Zsh 为 .zshrc),并且使用了正确的语法。
- 系统重启:有时,尤其是在 Windows 上,您可能需要重启系统才能使环境变量的更改生效。
- 检查拼写和语法:验证变量
OPENAI_API_KEY在您的环境设置和脚本中的拼写是否正确。另外,请确保您的配置文件脚本或环境变量设置中没有多余的空格或语法错误。
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"
理解提示及其工程
什么是提示?
提示是提供给 AI 模型(特别是像 GPT-3 和 GPT-4 这样的语言模型)的文本输入,以引发特定类型的响应或输出。它指导模型期望的信息或响应格式,为 AI 的“思考过程”奠定基础,并将其导向期望的结果。
提示工程
提示工程涉及精心设计这些输入,以最大化 AI 的响应效果和准确性。它涉及微调提示的语言和结构以适应特定任务,通过减少歧义并引导模型的响应以实现预期应用,从而提高 AI 输出的质量和相关性。
一个有趣而简单的例子:歌词纠错器
想象一下,一群喜欢流行音乐的朋友,经常因为记错的歌词而激烈但友好的争论。为了增加这些聚会的乐趣,我们决定创建一个游戏,由一个公正的裁判——一个 AI 模型——在有人提出并尝试根据富有创意的解释猜测正确的歌曲和歌词后,裁定正确的歌词。
为什么不用搜索引擎?
通常,人们可能会求助于互联网搜索引擎来解决这些歌词纠纷。然而,这种方法有其缺点。根据输入的不同,搜索结果可能不精确,导致需要花费大量时间在各种网页上查找实际歌词。由于某些歌词内容的性质,找到的搜索结果的真实性可能非常可疑。搜索引擎并非为此类用例而设计。
为什么 LLM 非常适合这项任务
这就是像 GPT-4 这样强大的语言模型 (LLM) 成为游戏规则改变者的原因。LLM 在海量数据集上进行训练,擅长理解和生成类人文本。它们处理自然语言输入并提供相关、准确响应的能力,使其非常适合这项歌词挑战。
我们的解决方案:歌词纠错器提示
为了有效地利用 LLM,我们为我们的歌词纠错器应用程序精心设计了一个专门的提示。此提示旨在实现两个目标:
- 纠正误听的歌词:它指示 AI 识别歌曲的实际歌词,替换掉常见的误听版本。
- 添加幽默的解释:除了纠正,AI 还提供一个有趣的解释,说明为什么误听的歌词会错误得如此有趣,为任务增添了引人入胜的、类人的元素。
"Here's a misheard lyric: {lyric}. What's the actual lyric, which song does it come from, which artist performed it, and can you give a funny explanation as to why the misheard version doesn't make sense? Also, rate the creativity of the lyric on a scale of 1 to 3, where 3 is good."
在这个提示中,{lyric} 是各种误听歌词的占位符。这种设置不仅展示了模型处理和纠正信息的能力,还展示了以更具创意、更像人类的方式进行交互的能力。
通过这个有趣而简单的例子,我们探索了 LLM 在现实世界应用中的潜力,展示了它们通过准确性和创造力的结合来增强日常体验的能力。
lyrics_prompt = (
"Here's a misheard lyric: {lyric}. What's the actual lyric, which song does it come from, which artist performed it, and can you give a funny "
"explanation as to why the misheard version doesn't make sense? Also, rate the creativity of the lyric on a scale of 1 to 3, where 3 is good."
)
在 MLflow 中设置和记录模型
在本节中,我们将定义我们的模型并将其记录到 MLflow。这会将我们定义了所需响应性质的模型提示与 MLflow 如何与 OpenAI SDK 交互以选择具有所需参数的正确模型的配置参数集成在一起。
-
MLflow 实验:我们的第一步是创建一个名为“Lyrics Corrector”的 MLflow 实验,或重用一个现有的。MLflow 中的实验对于组织和跟踪不同的模型运行及其相关数据和参数至关重要。
-
模型记录:在 MLflow 运行中,我们记录模型,指定模型类型(
gpt-4o-mini)、其预期用途(openai.completions)以及我们设计的自定义提示等详细信息。此操作确保 MLflow 准确地捕获我们模型的本质和操作上下文。 -
模型签名:在这里,我们定义了模型的输入和输出模式。我们期望输入为字符串(误听的歌词),输出为字符串(带有幽默解释的已纠正歌词)。
max_tokens、temperature和best_of等附加参数设置为控制模型的文本生成过程。 -
模型加载:最后,我们将记录的模型加载为 MLflow 中的通用 Python 函数。这使得模型可以立即用于预测和进一步的交互,允许我们像普通 Python 函数一样使用指定的输入来调用它。
此设置不仅建立了我们的歌词纠错器模型,还演示了 MLflow 如何有效地用于管理复杂的 AI 模型,确保在实际应用中进行高效的跟踪、管理和部署。
# Create a new experiment (or reuse the existing one if we've run this cell more than once)
mlflow.set_experiment("Lyrics Corrector")
# Start our run and log our model
with mlflow.start_run():
model_info = mlflow.openai.log_model(
model="gpt-4o-mini",
task=openai.completions,
name="model",
prompt=lyrics_prompt,
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"),
ParamSpec(name="best_of", default=1, dtype="long"),
]
),
),
)
# Load the model as a generic python function that can be used for completions
model = mlflow.pyfunc.load_model(model_info.model_uri)
生成和纠正误听的歌词
让我们用一套有趣的误听歌词来测试我们的歌词纠错器模型,看看效果如何。这些短语因其有趣的误解而广为人知,将是了解模型如何幽默地处理的好方法。
生成可疑的歌词
我们准备了一系列标志性的歌曲歌词,这些歌词经常被误听得很搞笑:
- “我们把这座城市建在香肠卷上”(“摇滚乐”的变体)
- “抱紧我,托尼·丹扎”(而不是“小舞者”)
- “甜蜜的梦是由奶酪制成的。我怎么会不同意一块布里?我征服了世界和七大洋。每个人都在寻找一些东西”(对原歌词的俗气演绎)
- “打扰一下,我要亲吻这家伙”(而不是“天空”)
- “我想通宵摇滚,并每天都要派对”(将“每天”改为不那么固定的时间表)
- “今晚不要四处闲逛,它注定会让你失明,右边有个厕所。”(对《恶月袭来》的创意改编)
- “我想你会明白,当我告诉你某事时,我想占领你的土地”(对一首经典的披头士情歌的黑暗演绎)
这些误听的版本为原句增添了一层幽默和怪诞感,使其成为我们歌词纠错器的理想选择。
提交歌词给模型
现在,是时候看看我们的模型如何解读这些富有创意的演绎了。我们将误听的歌词提交给歌词纠错器,它将利用其 AI 能力来确定实际歌词,并提供一个机智的解释,说明为什么误听的版本可能不准确。
查看模型的响应
处理后,模型的响应会被格式化并以易于阅读的方式显示。此步骤将突出模型对歌词的理解以及它以幽默方式处理内容的 P能力。这是 AI 的语言准确性与幽默感相结合的展示,带来了有趣且富有洞察力的体验。
让我们看看我们的歌词纠错器会为这些经典的误听歌词带来哪些有趣的纠正和解释!
# Generate some questionable lyrics
bad_lyrics = pd.DataFrame(
{
"lyric": [
"We built this city on sausage rolls",
"Hold me closer, Tony Danza",
"Sweet dreams are made of cheese. Who am I to dis a brie? I cheddar the world and a feta cheese",
"Excuse me while I kiss this guy",
"I want to rock and roll all night and part of every day",
"Don't roam out tonight, it's bound to take your sight, there's a bathroom on the right.",
"I think you'll understand, when I say that somethin', I want to take your land",
]
}
)
# Submit our faulty lyrics to the model
fix_my_lyrics = model.predict(bad_lyrics, params={"max_tokens": 500, "temperature": 0})
# See what the response is
formatted_output = "<br>".join(
[f"<p><strong>{line.strip()}</strong></p>" for line in fix_my_lyrics]
)
display(HTML(formatted_output))
实际歌词是 Starship 的歌曲《We Built This City》中的“We built this city on rock and roll”。误听的版本没有意义,因为香肠卷是一种食物,而不是建筑材料。也许有人误听了“rock”的发音,听成了“roll”,然后就联想到了食物。误听歌词的创造力得分为 2,因为混淆发音相似的词是很常见的错误。
实际歌词是 Elton John 的歌曲《Tiny Dancer》中的“Hold me closer, tiny dancer”。这个误听的版本很常见,很多人认为这句歌词是关于演员托尼·丹扎 (Tony Danza) 而不是小舞者。艺术家埃尔顿·约翰 (Elton John) 以其浮华而夸张的表演而闻名,所以想象他唱着被托尼·丹扎拥抱的情景并非牵强。然而,这与歌曲的意境并不太符合,歌曲是关于一个梦想成为著名舞者的年轻女孩。在 1 到 3 的等级中,我会给这个误听歌词的创造力打 2 分。这是一个常见的错误,并不特别聪明,但确实为歌曲增添了幽默的转折。
实际歌词是 Eurythmics 的歌曲《Sweet Dreams (Are Made of This)》中的“Sweet dreams are made of this. Who am I to disagree? I travel the world and the seven seas. Everybody's looking for something.”。误听的版本没有意义,因为它将“this”替换为“cheese”,并将其余歌词改为关于不同种类的奶酪。它还将歌曲的含义从对追求满足感和目标的思考变成了对奶酪的愚蠢颂歌。我会给这个误听歌词的创造力打 2 分。它巧妙地利用了文字游戏,但与原曲并不太匹配,也没有太大意义。
实际歌词是 Jimi Hendrix 的歌曲《Purple Haze》中的“Excuse me while I kiss the sky”。误听的版本没有意义,因为它暗示歌手要亲吻一个随机的男人,而这首歌并不是关于这个的。也许歌手感到有些困惑和迷失方向,因为“紫色迷雾”,并错误地认为面前有一个男人。我会给这个误听歌词的创造力打 2 分,因为它利用了发音相似的词,但与歌曲的语境不太符合。
实际歌词是 Kiss 的歌曲《Rock and Roll All Nite》中的“I want to rock and roll all night and party every day”。误听的版本没有意义,因为它暗示这个人只在白天摇滚,而不是晚上,这违背了歌曲的精神。它还意味着他们只在白天派对,而不是全天候派对。我会给这个误听歌词的创造力打 2 分,因为它仍然保持了歌曲的整体主题,但带有幽默的转折。
实际歌词是 Creedence Clearwater Revival 的歌曲《Bad Moon Rising》中的“Don't go 'round tonight, it's bound to take your life, there's a bad moon on the rise”。误听的版本没有意义,因为右边的厕所不会对一个人的视力或生命造成任何危险。也许误听的版本是对晚上不要去厕所的警告,因为它闹鬼或被诅咒了。我会给这个误听歌词的创造力打 2 分。
实际歌词是 The Beatles 的歌曲《I Want to Hold Your Hand》中的“I think you'll understand, when I say that somethin', I want to hold your hand.”。误听的版本没有意义,因为想要占领某人的土地在情歌中是非常有攻击性和奇怪的。它也不符合歌曲的整体主题,即希望靠近某人并牵着他们的手。我会给这个误听歌词的创造力打 1 分,因为它确实没有意义,也没有增加任何新颖或有趣的东西。
通过提示工程完善我们的方法
在审查了我们歌词纠错器模型的初步结果后,我们发现响应虽然很有趣,但在创造力评分方面并未达到预期。评分似乎集中在量表的中间,缺乏我们追求的区分度。这一观察结果引导我们进入提示工程的迭代和细致过程,这是微调 AI 模型响应的关键步骤。
提示工程的迭代过程
提示工程不是一蹴而就的;它是一个迭代的过程。它包括根据模型的响应来优化提示,并对其进行调整以更精确地符合我们的目标。在处理像 GPT-3 和 GPT-4 这样的先进语言模型时,这个过程至关重要,尽管它们功能强大,但通常需要详细的指导才能产生特定类型的输出。
实现精细响应
我们最初的提示为任务提供了一个基本结构,但在如何有效评估误听歌词的创造力方面缺乏详细指导。为了解决这个问题,我们需要:
- 提供更清晰的指示:通过更明确的指示来增强提示,说明什么构成了不同程度的创造力。
- 包含示例:在提示中包含说明低、中、高创造力评分的示例。
- 澄清期望:明确评分不仅要考虑幽默感,还要考虑原创性以及与原歌词的偏差。
我们改进后的提示
在下一个单元格中,您将看到一个改进后的提示,该提示旨在从模型中获得更细致、更多样化的响应,为评估误听歌词的创造力提供一个更清晰的框架。通过提示工程来完善我们的方法,我们的目标是获得更准确、更多样的评分,以更好地符合我们对歌词纠错器的预期目标。
# Define our prompt
improved_lyrics_prompt = (
"Here's a misheard lyric: {lyric}. What's the actual lyric, which song does it come from, which artist performed it, and can "
"you give a funny explanation as to why the misheard version doesn't make sense? Additionally, please provide an objective rating to the "
"misheard lyric on a scale of 1 to 3, where 1 is 'not particularly creative' (minimal humor, closely resembles the "
"original lyrics and the intent of the song) and 3 is 'hilariously creative' (highly original, very humorous, significantly different from "
"the original). Explain your rating briefly. For example, 'I left my heart in San Francisco' misheard as 'I left my hat in San Francisco' "
"might be a 1, as it's a simple word swap with minimal humor. Conversely, 'I want to hold your hand' misheard as 'I want to steal your land' "
"could be a 3, as it significantly changes the meaning in a humorous and unexpected way."
)
# Create a new experiment for the Improved Version (or reuse the existing one if we've run this cell more than once)
mlflow.set_experiment("Improved Lyrics Corrector")
# Start our run and log our model
with mlflow.start_run():
model_info = mlflow.openai.log_model(
model="gpt-4o-mini",
task=openai.completions,
name="model",
prompt=improved_lyrics_prompt,
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"),
ParamSpec(name="best_of", default=1, dtype="long"),
]
),
),
)
# Load the model as a generic python function that can be used for completions
improved_model = mlflow.pyfunc.load_model(model_info.model_uri)
# Submit our faulty lyrics to the model
fix_my_lyrics_improved = improved_model.predict(
bad_lyrics, params={"max_tokens": 500, "temperature": 0.1}
)
# See what the response is
formatted_output = "<br>".join(
[f"<p><strong>{line.strip()}</strong></p>" for line in fix_my_lyrics_improved]
)
display(HTML(formatted_output))
实际歌词是 Starship 的歌曲《We Built This City》中的“We built this city on rock and roll”。误听的版本在该量表中得分为 3 分,因为它完全改变了歌曲的含义并增加了幽默感。误听的版本没有意义,因为它将标志性的摇滚乐类型替换为一种食物,即香肠卷。这可以被解释为对当前音乐行业的评论,其中流行歌曲经常因其浅薄和缺乏实质而被批评。误听的版本也可以看作是对英国文化的一种致敬,因为香肠卷是流行的零食。总的来说,误听的歌词为歌曲增添了俏皮而出人意料的元素。
实际歌词是 Elton John 的歌曲《Tiny Dancer》中的“Hold me closer, tiny dancer”。这个误听的版本很常见,很多人认为这句歌词是关于演员托尼·丹扎 (Tony Danza) 而不是舞者。这个误听的版本在该量表中得分为 2 分,因为它对原歌词的解释既幽默又出人意料,但仍然与原曲和歌曲的意图非常接近。误听的版本没有意义,因为托尼·丹扎 (Tony Danza) 并不以其舞蹈技巧而闻名,所以有人想被他拥抱而不是舞者是很奇怪的。它还改变了歌曲的含义,因为原歌词是关于一个娇小精致的舞者,而误听的版本是关于一个著名的演员。
实际歌词是 Eurythmics 的歌曲《Sweet Dreams (Are Made of This)》中的“Sweet dreams are made of this. Who am I to disagree? I travel the world and the seven seas. Everybody's looking for something.”。误听的版本是一种文字游戏,将“this”替换为“cheese”,并使用不同种类的奶酪代替“seven seas”。它没有意义,因为奶酪通常不与梦境或环游世界相关。它还将歌曲的含义从对欲望和目标的哲学探索转变为对奶酪的愚蠢颂歌。我会给这个误听歌词打 2 分。它很有创意和幽默感,但仍然与原歌词非常相似,并没有偏离歌曲的意图太远。
实际歌词是 Jimi Hendrix 的歌曲《Purple Haze》中的“Excuse me while I kiss the sky”。这个误听的版本很常见,很多人认为 Hendrix 唱的是亲吻一个男人而不是天空。有趣的解释:也许误听的版本出现是因为 Hendrix 以其狂野而不可预测的表演而闻名,所以人们认为他可能会随机亲吻舞台上的一个男人。或者他们认为他唱的是在天空中与男性恋人的浪漫时刻。客观评分:2。虽然误听的版本很常见并且带有幽默感,但它并不特别有创意或出人意料。它是一个简单的词语替换,在歌曲的语境下仍然有点道理。
实际歌词是 Kiss 的歌曲《Rock and Roll All Nite》中的“I want to rock and roll all night and party every day”。误听的歌词“I want to rock and roll all night and part of every day”没有意义,因为它暗示这个人只在每天的一部分时间摇滚,而不是全夜和每天。它还改变了歌词的含义,从想要全天候派对变为只想要在一天的一部分时间派对。我会给这个误听歌词打 2 分。虽然它确实带有一些幽默感并改变了原歌词的含义,但它仍然与原歌词非常相似,并没有完全改变歌曲的意图。
实际歌词是 Creedence Clearwater Revival 的歌曲《Bad Moon Rising》中的“There's a bad moon on the rise”。这个误听的版本很常见,许多人听到的不是“There's a bathroom on the right”。这个误听的版本没有意义,因为它将歌曲的语气和含义从关于危险情况的警告改变为关于浴室位置的日常提醒。客观评分:2。虽然误听的歌词并不特别有创意,但它确实为歌曲增添了幽默的转折,并且是一种常见的误解。
实际歌词是 The Beatles 的歌曲《I Want to Hold Your Hand》中的“I think you'll understand, when I say that somethin', I want to hold your hand”。误听的歌词在该量表中得分为 3 分。原歌词是对爱的甜蜜而纯真的表达,而误听的版本将其变成了一种奇怪而有攻击性的占有欲。它完全偏离了原意,并为歌曲增添了幽默的转折。它还利用了误听歌词通常荒谬且脱离语境的观念。
结论:MLflow 在管理 AI 模型实验中的 P力
随着我们结束本教程,让我们回顾一下我们获得的重大见解,特别是关注 MLflow 如何增强 OpenAI 高级语言模型的实验和部署。
主要收获
-
提示工程和实验:本教程强调了提示工程的迭代性质,展示了提示中的细微变化如何导致 AI 模型产生截然不同的结果。MLflow 在此发挥着关键作用,使我们能够有效地跟踪这些变化,比较结果,并迭代以达到最佳的提示配置。
-
使用 MLflow 简化 AI 模型管理:MLflow 记录模型、管理实验和处理机器学习生命周期细微之处的能力是不可或缺的。它简化了管理和部署 AI 模型的复杂过程,使开发人员和数据科学家都能更轻松地完成这些任务。
-
利用 OpenAI 的高级模型:将 OpenAI 的 GPT 模型无缝集成到 MLflow 中,展示了如何将最先进的 AI 技术应用于现实场景。我们基于 GPT-3.5-turbo 模型构建的歌词纠错器示例,仅说明了融合创造力、幽默感和高级语言理解的众多潜在应用之一。
-
MLflow 的 pyfunc 实现的优势:MLflow 中的 pyfunc 实现允许灵活且直接地访问 OpenAI 的 GPT 等高级模型。它使用户能够将这些模型部署为通用的 Python 函数,大大增强了它们在各种应用程序中的可用性和集成性。
展望未来
MLflow 与 OpenAI 的 GPT 模型集成,为创新应用打开了无限的可能性。随着 AI 技术的不断发展,MLflow 的多功能性和健壮性将是在将这些进步转化为实际且有影响力的解决方案的关键。
鼓励进一步探索
我们邀请您继续探索将 MLflow 强大的模型管理功能与 OpenAI 模型先进的语言 P力相结合的巨大潜力。无论您是增强沟通、自动化任务还是创建新的 AI 驱动服务,这种组合都为您的创造力和技术专长提供了丰富的平台。
感谢您加入我们对 AI 模型实验和管理的探索。我们很期待看到您在未来的项目和创新中如何利用这些强大的工具!
要继续学习 MLflow 和 OpenAI 的协作能力,我们鼓励您通过一个更高级的示例继续学习,MLflow OpenAI flavor 的自定义 Python 模型示例。