> ## Documentation Index
> Fetch the complete documentation index at: https://docs.molesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 函数

> 创建可复用转换，用样例事件进行测试，并在数据管道中使用。

函数用于封装可复用的事件转换。打开**函数**可以独立于数据管道创建、测试和维护转换逻辑。

## 语言

| 语言         | 可用条件                                   | 适用场景                      |
| ---------- | -------------------------------------- | ------------------------- |
| VRL        | 始终可用                                   | 解析、标准化、过滤、脱敏与数据扩展。        |
| JavaScript | 构建时启用 `js-runtime`                     | 更适合使用 JavaScript 表达的处理逻辑。 |
| LLM        | 通过 API 配置；需要 `llm_eval_enabled` 与模型供应商 | 用模型输出完成低吞吐分类或数据扩展。        |

保存函数时，MoleSignal 会验证并编译源代码。无效代码不会成为当前生效版本。

当前函数工作台提供 VRL 与 JavaScript。LLM 函数属于高级 API 工作流：函数源码是系统指令，事件是模型
输入，`params_schema.output_field` 决定输出字段（默认 `_llm_eval`）。

## 保存前测试

函数工作台包含源码编辑器和 JSON 样例运行器。当前 `POST /api/v1/functions/run` 执行路径只运行 VRL
样例。JavaScript 在 runtime 编入后会进行保存时语法校验，但该端点暂不支持运行未保存的 JavaScript
样例。LLM 函数只作为流水线步骤执行。

VRL 示例：

```vrl theme={null}
.service = downcase!(string!(.service))
.severity = upcase(string(.level) ?? "INFO")
if exists(.customer_id) {
  .customer = lookup("customers", .customer_id)
}
```

## 使用函数

在数据管道中将函数添加为转换节点。数据管道保存有序步骤，并依次将事件传给每个函数。

删除或修改函数可能影响所有引用该函数的数据管道。进行不兼容变更前，请先检查使用情况。

## 权限

* `functions.read` 用于列出和打开函数。
* `functions.create` 和 `functions.edit` 用于管理函数定义。
* `functions.run` 用于执行 VRL 样例运行器。
* `functions.delete` 用于删除函数定义。

<CardGroup cols={2}>
  <Card title="数据管道" icon="diagram-project" href="/zh-Hans/pipelines">
    构建数据源 → 转换 → 目标端工作流。
  </Card>

  <Card title="扩展表" icon="table" href="/zh-Hans/extend-tables">
    维护用于数据扩展的查询表。
  </Card>
</CardGroup>
