用于快速工程和可解释性研究的 IDE

宣布 PromptIDE
用于快速工程和可解释性研究的集成开发环境。

xAI PromptIDE 是一个用于即时工程和可解释性研究的集成开发环境。它通过 SDK 加速提示工程,该 SDK 允许实施复杂的提示技术和丰富的分析,以可视化网络的输出。我们在Grok™的持续开发中大量使用它。

我们开发了 PromptIDE,为社区中的工程师和研究人员提供对 Grok-1(为Grok™提供支持的模型)的透明访问。该 IDE 旨在增强用户能力并帮助他们快速探索我们的大型语言模型 (LLM) 的功能。IDE 的核心是一个 Python 代码编辑器,它与新的 SDK相结合,可以实现复杂的提示技术。在 IDE 中执行提示时,用户会看到有用的分析,例如精确标记化、采样概率、替代标记和聚合注意力掩码。

IDE 还提供生活质量功能。它会自动保存所有提示并具有内置版本控制。通过运行提示生成的分析可以永久存储,允许用户比较不同提示技术的输出。最后,用户可以上传 CSV 文件等小文件,并使用 SDK 中的单个 Python 函数读取它们。结合SDK的并发特性,即使是稍大的文件也能快速处理。

我们还希望围绕 PromptIDE 建立一个社区。单击按钮即可公开共享任何提示。用户可以决定是否只想共享提示的单个版本或整个树。共享提示时还可以包含任何存储的分析。

PromptIDE 可供我们早期访问计划的成员使用。下面是 IDE 主要功能的演练。

谢谢
xAI 团队

代码编辑器和SDK
PromptIDE 中的采样概率
PromptIDE 的核心是代码编辑器和Python SDK。SDK 提供了一种新的编程范例,可以优雅地实现复杂的提示技术。所有 Python 函数都在隐式上下文中执行,该上下文是一个标记序列。您可以使用该函数手动将令牌添加到上下文prompt(),也可以使用我们的模型使用该函数根据上下文生成令牌sample()。

代码使用在单独的 Web Worker 中运行的浏览器内 Python 解释器在本地执行。多个 Web Worker 可以同时运行,这意味着您可以并行执行多个提示。

PromptIDE 中的采样概率
可以使用同一程序中的多个上下文来实现复杂的提示技术。如果一个函数用装饰器注释@prompt_fn,它将在它自己的、新鲜的上下文中执行。该函数可以独立于其父上下文执行一些操作,并使用该return 语句将结果传递回调用者。这种编程范式支持具有任意嵌套子上下文的递归和迭代提示。

并发性
SDK 使用 Python 协程,可以@prompt_fn同时处理多个带注释的 Python 函数。这可以显着加快完成时间 - 特别是在处理 CSV 文件时。

PromptIDE 中的采样概率
用户输入
提示可以通过该函数进行交互user_input(),该函数会阻止执行,直到用户在 UI 中的文本框中输入字符串。该user_input()函数返回用户输入的字符串,然后可以通过该prompt()函数将其添加到上下文中。使用这些 API,只需四行代码即可实现聊天机器人:

await prompt(PREAMBLE)
while text := await user_input("Write a message"):
await prompt(f"<|separator|>\n\nHuman: {text}<|separator|>\n\nAssistant:")
await sample(max_len=1024, stop_tokens=["<|separator|>"], return_attention=True)
文件
开发人员可以将小文件上传到 PromptIDE(每个文件最多 5 MiB。总共最多 50 MiB),并在提示中使用他们上传的文件。该read_file()函数以字节数组的形式返回任何上传的文件。与上面提到的并发特性结合起来,可以用来实现批处理提示,以评估各种问题的提示技术。下面的屏幕截图显示了计算 MMLU 评估分数的提示。

PromptIDE 中的采样概率
分析
在执行提示时,用户会看到详细的每个令牌分析,以帮助他们更好地理解模型的输出。完成窗口显示上下文的精确标记化以及每个标记的数字标识符。单击某个令牌时,用户还会在应用 top-P 阈值处理后看到前 K 个令牌以及令牌上的聚合注意力掩码。

PromptIDE 中的采样概率 PromptIDE 中的采样概率
使用该user_input()功能时,在提示运行时,窗口中会显示一个文本框,用户可以在其中输入响应。下面的屏幕截图显示了执行上面列出的聊天机器人代码片段的结果。

PromptIDE 中的采样概率
最后,当不需要令牌可视化功能时,还可以以 Markdown 形式呈现上下文,以提高易读性。