自定义输出渲染允许您使用自己的自定义 HTML 页面可视化运行输出和数据集参考输出。这对以下情况特别有用:
  • 特定领域格式化:以原生格式显示医疗记录、法律文档或其他专业数据类型。
  • 自定义可视化:从数值或结构化输出数据创建图表、图形或图表。
在本页中,您将学习如何:

配置自定义输出渲染

在两个级别配置自定义渲染:
  • 对于数据集:将自定义渲染应用于与该数据集关联的所有运行,无论它们出现在实验、运行详细信息窗格还是注释队列中。
  • 对于注释队列:将自定义渲染应用于特定注释队列中的所有运行,无论它们来自哪个数据集。这优先于数据集级别的配置。

对于数据集

要为数据集配置自定义输出渲染: Dataset page with three-dot menu showing Custom Output Rendering option
  1. Datasets & Experiments 页面中导航到您的数据集。
  2. 单击右上角的 (三点菜单)。
  3. 选择 Custom Output Rendering
  4. 切换 Enable custom output rendering
  5. URL 字段中输入网页 URL。
  6. 单击 Save
Custom Output Rendering modal with fields filled in

对于注释队列

要为注释队列配置自定义输出渲染: Annotation queue settings showing custom output rendering configuration
  1. 导航到 Annotation Queues 页面。
  2. 单击现有注释队列或创建新注释队列。
  3. 在注释队列设置窗格中,滚动到 Custom Output Rendering 部分。
  4. 切换 Enable custom output rendering
  5. URL 字段中输入网页 URL。
  6. 单击 SaveCreate
当在两个级别都配置自定义渲染时,注释队列配置优先于在该队列中查看的运行的数据集配置。

构建自定义渲染器

理解消息格式

您的 HTML 页面将通过 postMessage API 接收输出数据。LangSmith 发送具有以下结构的消息:
{
  type: "output" | "reference",
  data: {
    // 输出(实际输出或参考输出)
    // 结构因您的应用程序而异
  },
  metadata: {
    inputs: {
      // 生成此输出的输入
      // 结构因您的应用程序而异
    }
  }
}
  • type:指示这是实际输出("output")还是参考输出("reference")。
  • data:输出数据本身。
  • metadata.inputs:生成此输出的输入数据,用于提供上下文。
消息传递时间:LangSmith 使用指数退避重试机制来确保即使页面加载缓慢也能接收数据。消息最多发送 6 次,延迟时间递增(100ms、200ms、400ms、800ms、1600ms、3200ms)。

示例实现

此示例侦听传入的 postMessage 事件并在页面上显示它们。每条消息都已编号并格式化为 JSON,使检查 LangSmith 发送到渲染器的数据结构变得容易。
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>PostMessage Echo</title>
    <link rel="stylesheet" href="https://unpkg.com/sakura.css/css/sakura.css" />
  </head>
  <body>
    <h1>PostMessage Messages</h1>
    <div id="messages"></div>
    <script>
      let count = 0;
      window.addEventListener("message", (event) => {
        count++;
        const header = document.createElement("h3");
        header.appendChild(document.createTextNode(`Message ${count}`));
        const code = document.createElement("code");
        code.appendChild(
          document.createTextNode(JSON.stringify(event.data, null, 2))
        );
        const pre = document.createElement("pre");
        pre.appendChild(code);
        document.getElementById("messages").appendChild(header);
        document.getElementById("messages").appendChild(pre);
      });
    </script>
  </body>
</html>

自定义渲染出现的位置

启用后,您的自定义渲染将替换以下位置的默认输出视图:
  • 实验比较视图:在比较多个实验的输出时:
Experiment comparison view showing custom rendering
  • 运行详细信息窗格:在查看与数据集关联的运行时:
Run detail pane showing custom rendering
  • 注释队列:在注释队列中审查运行时:
Annotation queue showing custom rendering
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.