> For the complete documentation index, see [llms.txt](https://unsloth.ai/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://unsloth.ai/docs/zh/xin/studio/data-recipe.md).

# Unsloth 数据配方

Unsloth Studio 的 Data Recipes 允许你上传 PDF 或 CSV 等文档文件，并将其转换为可用/合成数据集。你可以通过图节点工作流以可视化方式创建和编辑数据集。在深入了解 Unsloth Data Recipes 之前，本指南会先带你了解基础知识。

<div data-with-frame="true"><figure><img src="/files/d7a623c1009dd96e330afd7e279e05a2e03ae91b" alt=""><figcaption></figcaption></figure></div>

### Data Recipes 如何工作

Data Recipes 遵循相同的基本流程。你打开 recipes 页面，创建或选择一个 recipe，在编辑器中构建工作流，验证并运行预览，然后在输出看起来正确后运行完整数据集。添加种子数据和生成块，验证工作流，预览示例输出，然后运行完整的数据集构建。Unsloth Data Recipes 由 **NVIDIA Nemo** [**Data Designer**](https://github.com/NVIDIA-NeMo/DataDesigner).

<div data-with-frame="true"><figure><img src="/files/1a3a53c44a59a493bdab62f046b2394ef4c81b59" alt=""><figcaption><p>生成数据集并微调模型的示例</p></figcaption></figure></div>

一眼看去，常见的工作流应如下所示：

1. 打开 recipes 页面。
2. 创建一个新 recipe 或打开一个已有 recipe。
3. 添加块来定义你的数据集工作流。
4. 点击 **验证** 以便尽早发现配置问题。
5. 运行预览以快速检查示例行。
6. 当 recipe 准备好后，运行完整的数据集构建。
7. 在图中或在 **执行记录** 视图中查看更多详细信息。
8. 在 **Unsloth** 中选择生成的数据集并微调模型。

### 开始使用

recipes 页面是主要入口。Recipes 会本地存储在浏览器中，因此你之后可以返回并继续已保存的工作。从这里，你可以创建一个空白 recipe，或者打开一个引导式学习 recipe。

{% hint style="info" %}
Recipes 可以导出和导入，因此很容易与其他 Unsloth 用户共享工作流 :tada:。如果你想构建特定的数据集模式，可以在 Unsloth Discord 中提问。也许有人已经有可以分享的 recipe。
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/93d865e1fd9db417fb274e07e115a05dde2834e7" alt="" width="563"><figcaption><p>Recipes 主页</p></figcaption></figure></div>

如果你刚接触工作流的概念，学习型 recipes 是最快了解种子数据、提示词、表达式和验证器如何在一个可运行示例中协同工作的方式。如果你已经知道想要的数据集形状，从空白开始通常更快。

#### 选择起始路径

<table><thead><tr><th>如果你想要：</th><th>从以下开始：</th><th data-hidden></th></tr></thead><tbody><tr><td><sub><strong>快速构建自定义工作流</strong></sub></td><td><sub><strong>从空白开始</strong></sub></td><td></td></tr><tr><td><sub><strong>通过示例了解产品</strong></sub></td><td><sub><strong>从学习型 recipe 开始</strong></sub></td><td></td></tr><tr><td><sub><strong>继续之前的工作</strong></sub></td><td><sub><strong>打开已保存的 recipe</strong></sub></td><td></td></tr></tbody></table>

### 你在编辑器中构建的内容

编辑器是 recipe 成形的地方。你可以从块面板添加块，在对话框中进行配置，在画布上连接它们，然后验证或运行工作流。

<div data-with-frame="true"><figure><img src="/files/d717680dce538e114d9534e5c62895753457b2e1" alt="" width="563"><figcaption><p>构建产品描述工作流的示例</p></figcaption></figure></div>

{% columns %}
{% column %}
编辑器有几个核心部分：

* recipe 标题栏，你可以在这里重命名 recipe 并在以下内容之间切换： **编辑器** 和 **执行记录**
* 画布，recipe 图在这里显示
* 块面板，你可以在这里添加新块
* 配置对话框，你可以在这里定义提示词、引用、模型别名、验证器和种子设置。
* 悬浮 **运行** 和 **验证** 控件
* 这里还需要补充更多内容

{% endcolumn %}

{% column %}
recipe 中最常见的块有：

* **种子** 用于来自 Hugging Face、本地结构化文件的输入数据，或将非结构化文档切分成行。
* **LLM + 模型** 用于提供方、模型配置、LLM 生成块以及共享工具配置文件。
* **表达式** 用于基于 Jinja2 的转换，不需要调用 LLM。
* **验证器** 用于使用内置的 Python、SQL 和 JavaScript/TypeScript 代码检查器过滤不良生成代码。
* **采样器** 用于类别和子类别等确定性列。
  {% endcolumn %}
  {% endcolumns %}

### 引用如何工作

大多数生成数据的块（有少数例外）都会成为后续块的引用。这是 Data Recipes 背后的核心思想之一。你只创建一次值，然后在提示词、表达式、结构化输出和验证步骤中重复使用它。

{% hint style="info" %}
Jinja 表达式可帮助你处理 recipe 中已经存在的值。你可以引用嵌套字段，例如 `{{customer.first_name}}` ，还可以拼接值，例如 `{{customer.first_name}} {{customer.last_name}}` 并使用如下模式添加条件逻辑： `{% if condition %}...{% endif %}`&#x20;
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/13e6b1a88cd92950f1439783b8d036cb437a5010" alt="" width="563"><figcaption><p>编辑器中显示引用的示例</p></figcaption></figure></div>

例如：

* 一个名为 `domain` 的类别块可以引用为 `{{ domain }}`
* 种子列可以直接用于 LLM 提示词，你的种子数据中的列（例如 HF 数据集列、CSV）
* 结构化 LLM 输出可以为后续提示词暴露字段
* 表达式块可以在不再次调用模型的情况下组合先前的值

### 接下来会发生什么？

预览运行适合快速迭代。它们会在编辑器中返回示例行和分析结果，这样你就可以在提交完整运行之前检查生成的数据。

完整运行会创建一个持久化的本地数据集工件。该输出随后会出现在 Unsloth 的本地数据集选择器中，你可以再次检查它并将其用于微调。你也可以选择将数据集发布到你的 Hugging Face 仓库。

### 核心构建块

{% columns %}
{% column %}

<div data-with-frame="true"><figure><img src="/files/7d47a7c1cd8d7e9c2ab295e69e860ee3038fb301" alt="" width="188"><figcaption><p>核心构建块</p></figcaption></figure></div>
{% endcolumn %}

{% column %}

<div data-with-frame="true"><figure><img src="/files/abb6c49167598288483b89fb01c26fb97b9de2d9" alt="" width="188"><figcaption><p>模型和 LLM 块</p></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

#### 模型设置分为两个可用层：

* **模型提供方** 定义端点和身份验证
* **模型配置** 定义模型名称和推理设置

此设置适用于托管提供方、自托管端点， `vLLM` , `llama.cpp` 或你在 Unsloth 之外运行的任何兼容 OpenAI 的 API。

{% hint style="info" %}
Recipes 不限于一个模型。你可以添加多个 **模型提供方** 和 **模型配置** 块，然后在不同步骤中使用不同模型，例如一个用于编程，另一个用于通用文本任务。
{% endhint %}

完成模型设置后，你可以使用四种 LLM 块类型：

| 块       | 输出     | 最适合                             |
| ------- | ------ | ------------------------------- |
| LLM 文本  | 自由形式文本 | 说明、解释、对话和描述                     |
| LLM 结构化 | JSON   | 需要固定字段和可预测结构的输出                 |
| LLM 代码  | 代码     | Python、SQL、TypeScript 及其他代码生成任务 |
| LLM 评审  | 评分评估   | 使用一个或多个用户定义的分数对输出进行评分           |

#### 工具配置文件

{% columns %}
{% column %}
工具配置文件块为一个或多个 LLM 块定义共享的基于 MCP 的工具访问。当生成步骤需要工具时使用它们，例如通过以下方式查找代码文档 `Context7`.

左侧图片显示了在工具配置文件块对话框中添加并配置的 Context7 MCP：
{% endcolumn %}

{% column %}

<div data-with-frame="true"><figure><img src="/files/b72401f164ad92f31ea5d4b6df2218f8e1c7aeaf" alt="" width="375"><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

#### 验证器

{% columns %}
{% column %}
验证器块主要针对 LLM 代码块，通过对生成的代码输出进行 lint 检查和语法验证，这有助于通过过滤掉错误或无效的代码行，将它们排除在最终数据集之外。内置选项覆盖 Python、SQL 和 JavaScript/TypeScript 验证。
{% endcolumn %}

{% column %}

<div data-with-frame="true"><figure><img src="/files/e4c0088cdd270f31a861dafb6af42f80c4bf8b58" alt=""><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

### 验证、预览和运行

一旦 recipe 工作流就绪，下一步就是执行。推荐的模式是：先验证，再预览以快速获取反馈，并在执行视图中检查生成的数据，然后在你觉得输出符合计划时运行完整数据集。

按以下顺序使用执行控制：

{% stepper %}
{% step %}

#### 验证

点击 **验证** 以捕获配置问题。
{% endstep %}

{% step %}

#### 预览

运行预览以检查示例行和分析结果
{% endstep %}

{% step %}

#### 优化

优化提示词、引用、种子设置或验证器。

持续迭代，直到你对生成的数据感到满意
{% endstep %}

{% step %}

#### 运行完整的数据集构建

{% endstep %}
{% endstepper %}

<figure><img src="/files/a134f5650010ae2b3ead2512c422f31a2e6fb2b3" alt="" width="188"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://unsloth.ai/docs/zh/xin/studio/data-recipe.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
