如何使用Weights & Biases Weave监控OpenAI API调用

在数字化时代,人工智能和深度学习技术正迅速发展,而OpenAI一直是这一领域的领先者之一。但是,随着项目和团队的增长,对OpenAI API的使用情况的监控变得越来越重要。本教程将向您展示如何使用Weights & Biases Weave来监控OpenAI API调用,了解项目和团队如何使用语言模型(LLMs),并可视化这些数据以便更好地管理您的项目。

开篇故事

想象一下,您正在领导一个人工智能团队,团队成员在多个项目中使用OpenAI的语言模型。您关心的不仅是项目的进展,还包括如何优化API调用、控制成本、降低延迟和提高吞吐量。然而,要了解这些关键指标,需要大量的数据和分析工作。这时,Weights & Biases Weave登场了。它为您提供了一个强大的工具,可以自动跟踪LLM的使用情况,记录有关成本、延迟和吞吐量的关键指标,并为您提供交互式的仪表板,以便更轻松地与团队共享进展。

步骤0:设置

在开始之前,您需要进行一些设置。首先,安装所需的依赖项,然后登录到Weights & Biases(W&B)以保存和分享您的工作,并与OpenAI进行身份验证。

# 如果尚未安装
!pip install -qqq weave openai tiktoken wandb

import wandb
wandb.login()

import weave
import os
WANDB_BASE_URL = "https://api.wandb.ai"
os.environ["WANDB_BASE_URL"] = WANDB_BASE_URL

# 与OpenAI进行身份验证
from getpass import getpass

if os.getenv("OPENAI_API_KEY") is None:
  os.environ["OPENAI_API_KEY"] = getpass("从 https://platform.openai.com/account/api-keys 复制粘贴您的OpenAI密钥\n")
assert os.getenv("OPENAI_API_KEY", "").startswith("sk-"), "这似乎不是一个有效的OpenAI API密钥"
print("OpenAI API密钥已配置")

步骤1:配置数据流和存储在W&B中

在W&B中,您需要配置数据流和存储,以便记录OpenAI API调用的日志。设置WB_ENTITY为您的W&B用户名或团队名称,WB_PROJECT为项目名称,STREAM_NAME为记录表的名称。

WB_ENTITY = # 设置为您的W&B用户名或团队名称
WB_PROJECT = "weave"  # 为此工作创建顶级目录
STREAM_NAME = "openai_logs"  # 记录表,用于存储OpenAI API调用的日志

步骤2:调用init_monitor()

要开始监控OpenAI API的使用情况,请调用init_monitor(<stream>),其中<stream>的格式为<wandb_team_or_user>/<wandb_project>/<stream_name>。该流会记录并存储所有OpenAI API调用的日志。

from weave.monitoring import openai, init_monitor
m = init_monitor(f"{WB_ENTITY}/{WB_PROJECT}/{STREAM_NAME}")

# 为简单起见,指定一个模型
OPENAI_MODEL = 'gpt-3.5-turbo'

# 使用一些示例日志进行预填充
r = openai.ChatCompletion.create(model=OPENAI_MODEL, messages=[{"role": "user", "content": "hello world!"}])
r = openai.ChatCompletion.create(model=OPENAI_MODEL, messages=[{"role": "user", "content": "what is 2+2?"}])

步骤3:预览监控仪表板

点击上面的链接预览数据流,然后在右侧边栏中点击“OpenAI Monitor Board”以为此数据流创建Weave Board。

步骤4:探索和了解您的LLM使用情况

要保存您的工作,请单击页面顶部的自动生成名称以重命名面板。要分享您的面板,请单击右上角的“发布”。

通过以下方式,您可以实时可视化您的工作:

  • 将面板保持在单独的选项卡中,并刷新以查看最新数据。
  • 随时重命名面板以更容易参考,并“发布”该版本以与他人共享链接。
  • 通过从weave.wandb.ai导航到相关的W&B实体和W&B项目名称,找到以前保存的面板。
  • 或者打开一个新的面板模板的实例,以从迄今为止积累的所有数据开始。

接下来,我们将举例说明一些您可以跟踪OpenAI API调用的方式。根据您的用例,还有许多其他可能性,我们迫不及待地期待您从这些起始模板中创建的内容。

示例

示例0:记录提示及其完成

监视ChatCompletion请求并打印相应的响应,仅提取完成的文本。

response = openai.ChatCompletion.create(model=OPENAI_MODEL, messages=[
        {"role": "user", "content": f"生命、宇宙和一切的意义是什么?"},
    ])
print(response['choices'][0]['message']['content'])

示例1:将相关参数作为属性进行跟踪

将感兴趣的参数分解并将其作为日志记录的属性进行跟踪。在这里,我们将“系统提示”与“提示模板”和“方程”参数分开跟踪。这次我们将打印ChatCompletion调用的完整结构化响应。

system_prompt = "你总是写成要点"
prompt_template = '逐步解决以下方程:{equation}'
params = {'equation': '4 * (3 - 1)'}
openai.ChatCompletion.create(model=OPENAI_MODEL,
                             messages=[
                                    {"role": "system", "content": system_prompt},
                                    {"role": "user", "content": prompt_template.format(**params)},
                                ],
                             # 您可以在日志记录中添加其他属性
                             # 有关更多示例,请参见monitor_api笔记本
                             monitor_attributes={
                                 'system_prompt': system_prompt,
                                 'prompt_template': prompt_template,
                                 'params': params
                             })

示例2:记录一系列消息的实时流

监视消息流并将结果记录为单个记录。请注意:此格式不计算标记数。

from weave.monitoring.openai import message_from_stream
r = openai.ChatCompletion.create(model=OPENAI_MODEL, messages=[
        {"role": "system", "content": "你是一个机器人,只说像机器人一样的话,比如滴滴滴。"},
        {"role": "user", "content": "给我讲一个50字的故事。"},
    ], stream=True)
for s in message_from_stream(r):
    print(s, end='')

示例3:结构化提示工程实验

在这里,我们比较了一些系统提示、用户问题和目标受众的玩具选项。尝试您自己的实验,看看在探索Board并按不同参数分组时是否会出现有趣的见解。

def explain_math(system_prompt, prompt_template, params):
    openai.ChatCompletion.create(model=OPENAI_MODEL,
                             messages=[
                                    {"role": "system", "content": system_prompt},
                                    {"role": "user", "content": prompt_template.format(**params)},
                                ],
                             # 您可以在日志记录中添加其他属性
                             # 有关更多示例,请参见monitor_api笔记本
                             monitor_attributes={
                                 'system_prompt': system_prompt,
                                 'prompt_template': prompt_template,
                                 'params': params
                             })

# 随时替换您自己的提示 :)
system_prompts = ["你写得非常花哨和诗意", "你非常直接和准确", "平衡简洁和见解"]
prompt_template = '解释以下方程的解给{audience}听:{equation}'
equations = ['x^2 + 4x + 9 = 0', '15 * (2 - 6) / 4']
audience = ["新生", "数学天才"]

for system_prompt in system_prompts:
    for equation in equations:
        for person in audience:
            params = {"equation" : equation, "audience" : person}
            explain_math(system_prompt, prompt_template, params)

总结

通过Weights & Biases Weave,您可以轻松监控OpenAI API的使用情况,了解项目和团队如何使用LLMs,并可视化这些数据以便更好地管理您的项目。这种实时监控和数据分析工具将有助于您更好地掌握AI项目的进展,优化API调用,并降低成本。

希望这个教程对您有所帮助,让您更好地利用Weights & Biases Weave来管理和优化您的OpenAI API项目。如果您有任何问题或需要进一步的帮助,请随时联系我们。

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:如何使用Weights & Biases Weave监控OpenAI API调用

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年10月14日
下一篇 2023年10月14日

相关推荐

  • AI群雄争霸:GPT4.5圣诞前推出?

    在这个信息爆炸的时代,一场关于人工智能的革命正在悄然发生。随着OpenAI宣布即将推出GPT4.5,整个科技界都在为这一划时代的进展翘首以待。让我们一起走进这个由AI巨头们共同编织的奇幻世界,探索他们的最新动向和…

    2023年12月13日
    00
  • Python生成词云图:从数据到视觉的魔幻旅程

    夏洛是个数据分析师,经常需要处理大量的文本数据。有一天,他被赋予了一个巨大的任务:分析一年的社交媒体内容,找出最常出现的关键词。想象一下,数百万条微博和评论等着他去一一分析。 正当夏洛准备淹没在这片数…

    2023年9月24日
    00
  • ChatGPT新功能震撼发布:Read Aloud让ChatGPT会说话

    随着人工智能技术的不断进步,OpenAI的ChatGPT作为一款领先的智能聊天机器人,一直在不断地创新和进化。从最初的文字聊天到语音聊天,再到如今最新推出的Read Aloud功能,ChatGPT的发展之路无疑令人瞩目。这项新功…

    2024年3月12日
    00
  • AI领域本周重要进展:Runway、DeepMind、OpenAI等亮点

    本周,人工智能领域再次掀起了波澜,各大机构和公司纷纷发布了令人振奋的消息。这些重要进展将进一步推动AI技术的发展,改变我们与人工智能互动的方式。让我们一起来看看本周AI领域的亮点。 Runway开展通用世界模型…

    2023年12月26日
    00
  • GPT-5传言与OpenAI的AI大举动

    在科技领域,有些消息犹如晨风,轻轻拂过,却引起了波澜壮阔的浪潮。最近,关于GPT-5即将到来的传言就是这样一阵风,虽然只是轻声细语,却足以在人工智能的世界里掀起一场风暴。OpenAI的首届开发者大会上,GPT-4的…

    2023年11月10日
    00
  • OpenAI的大手笔:ChatGPT免注册使用,开创AI普及新篇章

    摘要:OpenAI最近的一项创新动作——ChatGPT免注册使用,标志着人工智能应用门槛的进一步降低。本文将从我个人的视角出发,深入探讨这一变革对AI普及和用户体验的潜在影响,以及OpenAI如何通过用户数据来不断优化AI模…

    2024年4月4日
    00
  • 微软与OpenAI的策略博弈:深度解析7.7亿美金签约风波

    在当今科技界,微软和OpenAI之间的动态已成为一个令人瞩目的焦点。近日,一个引人注目的消息传遍了互联网:微软被传出向OpenAI的770名员工提供总计7.7亿美元的签约奖金。这一举措引发了广泛的讨论和猜测,人们对微…

    2023年11月22日
    00
  • 深入了解Weaviate与OpenAI的集成

    在数字时代,数据搜索和查询变得越来越重要。有时,我们需要更智能、更高级的搜索引擎来满足复杂的信息需求。本教程将向您介绍Weaviate和OpenAI的集成,展示如何使用这个组合来进行语义向量搜索、混合搜索和问答,…

    2023年11月4日
    00
  • 人工智能的未来与安全挑战:OpenAI与Anthropic的不同路径

    人工智能(AI)领域的发展一直备受瞩目,但随着其技术日益成熟,伴随而来的是潜在的安全挑战。OpenAI和Anthropic作为两家领先的AI研究机构,各自制定了应对这些挑战的策略。本文将探讨这两家机构的不同路径,以及它…

    2023年12月19日
    00
  • 为什么OpenAI的稀疏自动编码器能够解释大模型的思路?

    OpenAI推出了一种新方法来解释大语言模型(LLM)的内部运作。这种方法利用稀疏自动编码器来揭示模型中的神经活动和特征。本文将详细探讨这种方法的机制、应用和未来发展方向。 引言 大语言模型(LLM)近年来在人工…

    2024年6月24日
    00