# 集成 Langfuse

### Langfuse 简介

Langfuse 是一个开源的 LLM 工程平台，可以帮助团队协作调试、分析和迭代他们的应用程序。

{% hint style="info" %}
Langfuse 官网介绍：<https://langfuse.com/>
{% endhint %}

***

### 配置 Langfuse

1. 在[官网注册](https://langfuse.com/)并登录 Langfuse
2. 在 Langfuse 内创建项目，登录后在主页点击 **New** ，创建一个自己的项目，**项目**将用于与 Dify 内的**应用**关联进行数据监测。

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2FAqTa6D26QgUWn3B3T1OF%2Fimage.png?alt=media&#x26;token=22eef50a-76f7-49e0-a41b-ccbcf991527a" alt=""><figcaption><p>在 Langfuse 内创建项目</p></figcaption></figure>

为项目编辑一个名称。

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2FZeR2YNJLF429TLNR4Amn%2Fimage.png?alt=media&#x26;token=c8ceac0c-3124-4b0e-ac15-4a9bae545be1" alt=""><figcaption><p>在 Langfuse 内创建项目</p></figcaption></figure>

3. 创建项目 API 凭据，在项目内左侧边栏中点击 **Settings** 打开设置

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2Fa6APpA3F1tKuYNalMufY%2Fimage.png?alt=media&#x26;token=a139ad8c-f417-4ded-9618-e11017a734cb" alt=""><figcaption><p>创建一个项目 API 凭据</p></figcaption></figure>

在 Settings 内点击 **Create API Keys** 创建一个项目 API 凭据。

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2FXKkxF0ya4nOZ6HUWWDwc%2Fimage.png?alt=media&#x26;token=fed1ef3e-301a-4df9-8898-7e6d4b4a5792" alt=""><figcaption><p>创建一个项目 API 凭据</p></figcaption></figure>

复制并保存 **Secret Key** ，**Public Key，Host**

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2FnUTDUHw6L8f1vkzhqjaK%2Fimage.png?alt=media&#x26;token=a2b013bb-b9cd-46ac-a30f-4fdd70fb3e2e" alt=""><figcaption><p>获取 API Key 配置</p></figcaption></figure>

4. 在 Dify 内配置 Langfuse，打开需要监测的应用，在侧边菜单打开**监测**，在页面中选择**配置。**

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2FgCunaZYBWagwpiWYZcC4%2Fimage.png?alt=media&#x26;token=c788ebc5-9c7a-4f98-8cf8-32660cb6355b" alt=""><figcaption><p>配置 Langfuse</p></figcaption></figure>

点击配置后，将在 Langfuse 内创建的 **Secret Key, Public Key, Host** 粘贴到配置内并保存。

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2F7qh7PtyHLg66ZsyRT2c4%2Fimage.png?alt=media&#x26;token=8849f931-e77d-4647-acc1-3ea88bb221d4" alt=""><figcaption><p>配置 Langfuse</p></figcaption></figure>

成功保存后可以在当前页面查看到状态，显示已启动即正在监测。

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2FFUQCQg3ZdQBpTGfFU54t%2Fimage.png?alt=media&#x26;token=02fbb1ff-9655-4a81-b253-d2ab96f57b3d" alt=""><figcaption><p>查看配置状态</p></figcaption></figure>

***

### 在 Langfuse 内查看监测数据

配置完成后， Dify 内应用的调试或生产数据可以在 Langfuse 查看监测数据。

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2FeIWW5i7qbNA0wlB5Fka9%2Fimage.png?alt=media&#x26;token=a684dd17-453e-47de-ba09-da895ba5d878" alt=""><figcaption><p>在 Dify 内调试应用</p></figcaption></figure>

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2FMZdmvypzbJbnHnV0nn4Q%2Fimage.png?alt=media&#x26;token=03b94221-e1bd-410b-94eb-17edd95c9c6b" alt=""><figcaption><p>在 Langfuse 内查看应用数据</p></figcaption></figure>

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2F68CkShtETPOPX7cBWF7l%2Fimage.png?alt=media&#x26;token=91641eda-1b6a-4b4f-9229-e2823a676517" alt=""><figcaption><p>在 Langfuse 内查看应用数据</p></figcaption></figure>

### 监测数据清单

#### Workflow /Chatflow Trace信息

**用于追踪workflow以及chatflow**

| Workflow                                 | LangFuse Trace          |
| ---------------------------------------- | ----------------------- |
| workflow\_app\_log\_id/workflow\_run\_id | id                      |
| user\_session\_id                        | user\_id                |
| workflow\_{id}                           | name                    |
| start\_time                              | start\_time             |
| end\_time                                | end\_time               |
| inputs                                   | input                   |
| outputs                                  | output                  |
| 模型token消耗相关                              | usage                   |
| metadata                                 | metadata                |
| error                                    | level                   |
| error                                    | status\_message         |
| \[workflow]                              | tags                    |
| conversation\_id/workflow时无              | session\_id             |
| conversion\_id                           | parent\_observation\_id |

**Workflow Trace Info**

* workflow\_id - Workflow的唯一标识
* conversation\_id - 对话ID
* workflow\_run\_id - 此次运行的ID
* tenant\_id - 租户ID
* elapsed\_time - 此次运行耗时
* status - 运行状态
* version - Workflow版本
* total\_tokens - 此次运行使用的token总数
* file\_list - 处理的文件列表
* triggered\_from - 触发此次运行的来源
* workflow\_run\_inputs - 此次运行的输入数据
* workflow\_run\_outputs - 此次运行的输出数据
* error - 此次运行中发生的错误
* query - 运行时使用的查询
* workflow\_app\_log\_id - Workflow应用日志ID
* message\_id - 关联的消息ID
* start\_time - 运行开始时间
* end\_time - 运行结束时间
* workflow node executions - workflow节点运行信息
* Metadata
  * workflow\_id - Workflow的唯一标识
  * conversation\_id - 对话ID
  * workflow\_run\_id - 此次运行的ID
  * tenant\_id - 租户ID
  * elapsed\_time - 此次运行耗时
  * status - 运行状态
  * version - Workflow版本
  * total\_tokens - 此次运行使用的token总数
  * file\_list - 处理的文件列表
  * triggered\_from - 触发来源

#### Message Trace信息

**用于追踪llm对话相关**

| Message                          | LangFuse Generation/Trace |
| -------------------------------- | ------------------------- |
| message\_id                      | id                        |
| user\_session\_id                | user\_id                  |
| message\_{id}                    | name                      |
| start\_time                      | start\_time               |
| end\_time                        | end\_time                 |
| inputs                           | input                     |
| outputs                          | output                    |
| 模型token消耗相关                      | usage                     |
| metadata                         | metadata                  |
| error                            | level                     |
| error                            | status\_message           |
| \["message", conversation\_mode] | tags                      |
| conversation\_id                 | session\_id               |
| conversion\_id                   | parent\_observation\_id   |

**Message Trace Info**

* message\_id - 消息ID
* message\_data - 消息数据
* user\_session\_id - 用户的session\_id
* conversation\_model - 对话模式
* message\_tokens - 消息中的令牌数
* answer\_tokens - 回答中的令牌数
* total\_tokens - 消息和回答中的总令牌数
* error - 错误信息
* inputs - 输入数据
* outputs - 输出数据
* file\_list - 处理的文件列表
* start\_time - 开始时间
* end\_time - 结束时间
* message\_file\_data - 消息关联的文件数据
* conversation\_mode - 对话模式
* Metadata
  * conversation\_id - 消息所属对话的ID
  * ls\_provider - 模型提供者
  * ls\_model\_name - 模型ID
  * status - 消息状态
  * from\_end\_user\_id - 发送用户的ID
  * from\_account\_id - 发送账户的ID
  * agent\_based - 是否基于代理
  * workflow\_run\_id - 工作流运行ID
  * from\_source - 消息来源
  * message\_id - 消息ID

#### Moderation Trace信息

**用于追踪对话审查**

| Moderation    | LangFuse Generation/Trace |
| ------------- | ------------------------- |
| user\_id      | user\_id                  |
| moderation    | name                      |
| start\_time   | start\_time               |
| end\_time     | end\_time                 |
| inputs        | input                     |
| outputs       | output                    |
| metadata      | metadata                  |
| \[moderation] | tags                      |
| message\_id   | parent\_observation\_id   |

**Message Trace Info**

* message\_id - 消息ID
* user\_id: 用户id
* workflow\_app\_log\_id workflow\_app\_log\_id
* inputs - 审查的输入数据
* message\_data - 消息数据
* flagged - 是否被标记为需要注意的内容
* action - 执行的具体行动
* preset\_response - 预设响应
* start\_time - 审查开始时间
* end\_time - 审查结束时间
* Metadata
  * message\_id - 消息ID
  * action - 执行的具体行动
  * preset\_response - 预设响应

#### Suggested Question Trace信息

**用于追踪建议问题**

| Suggested Question     | LangFuse Generation/Trace |
| ---------------------- | ------------------------- |
| user\_id               | user\_id                  |
| suggested\_question    | name                      |
| start\_time            | start\_time               |
| end\_time              | end\_time                 |
| inputs                 | input                     |
| outputs                | output                    |
| metadata               | metadata                  |
| \[suggested\_question] | tags                      |
| message\_id            | parent\_observation\_id   |

**Message Trace Info**

* message\_id - 消息ID
* message\_data - 消息数据
* inputs - 输入的内容
* outputs - 输出的内容
* start\_time - 开始时间
* end\_time - 结束时间
* total\_tokens - 令牌数量
* status - 消息状态
* error - 错误信息
* from\_account\_id - 发送账户的ID
* agent\_based - 是否基于代理
* from\_source - 消息来源
* model\_provider - 模型提供者
* model\_id - 模型ID
* suggested\_question - 建议的问题
* level - 状态级别
* status\_message - 状态信息
* Metadata
  * message\_id - 消息ID
  * ls\_provider - 模型提供者
  * ls\_model\_name - 模型ID
  * status - 消息状态
  * from\_end\_user\_id - 发送用户的ID
  * from\_account\_id - 发送账户的ID
  * workflow\_run\_id - 工作流运行ID
  * from\_source - 消息来源

#### Dataset Retrieval Trace信息

**用于追踪知识库检索**

| Dataset Retrieval     | LangFuse Generation/Trace |
| --------------------- | ------------------------- |
| user\_id              | user\_id                  |
| dataset\_retrieval    | name                      |
| start\_time           | start\_time               |
| end\_time             | end\_time                 |
| inputs                | input                     |
| outputs               | output                    |
| metadata              | metadata                  |
| \[dataset\_retrieval] | tags                      |
| message\_id           | parent\_observation\_id   |

**Dataset Retrieval Trace Info**

* message\_id - 消息ID
* inputs - 输入内容
* documents - 文档数据
* start\_time - 开始时间
* end\_time - 结束时间
* message\_data - 消息数据
* Metadata
  * message\_id消息ID
  * ls\_provider模型提供者
  * ls\_model\_name模型ID
  * status消息状态
  * from\_end\_user\_id发送用户的ID
  * from\_account\_id发送账户的ID
  * agent\_based是否基于代理
  * workflow\_run\_id工作流运行ID
  * from\_source消息来源

#### Tool Trace信息

**用于追踪工具调用**

| Tool                  | LangFuse Generation/Trace |
| --------------------- | ------------------------- |
| user\_id              | user\_id                  |
| tool\_name            | name                      |
| start\_time           | start\_time               |
| end\_time             | end\_time                 |
| inputs                | input                     |
| outputs               | output                    |
| metadata              | metadata                  |
| \["tool", tool\_name] | tags                      |
| message\_id           | parent\_observation\_id   |

**Tool Trace Info**

* message\_id消息ID
* tool\_name工具名称
* start\_time开始时间
* end\_time结束时间
* tool\_inputs工具输入
* tool\_outputs工具输出
* message\_data消息数据
* error错误信息，如果存在
* inputs消息的输入内容
* outputs消息的回答内容
* tool\_config工具配置
* time\_cost时间成本
* tool\_parameters工具参数
* file\_url关联文件的URL
* Metadata
  * message\_id消息ID
  * tool\_name工具名称
  * tool\_inputs工具输入
  * tool\_outputs工具输出
  * tool\_config工具配置
  * time\_cost时间成本
  * error错误信息
  * tool\_parameters工具参数
  * message\_file\_id消息文件ID
  * created\_by\_role创建者角色
  * created\_user\_id创建者用户ID

#### Generate Name Trace信息

**用于追踪会话标题生成**

| Generate Name     | LangFuse Generation/Trace |
| ----------------- | ------------------------- |
| user\_id          | user\_id                  |
| generate\_name    | name                      |
| start\_time       | start\_time               |
| end\_time         | end\_time                 |
| inputs            | input                     |
| outputs           | output                    |
| metadata          | metadata                  |
| \[generate\_name] | tags                      |

**Generate Name Trace Info**

* conversation\_id对话ID
* inputs输入数据
* outputs生成的会话名称
* start\_time开始时间
* end\_time结束时间
* tenant\_id租户ID
* Metadata
  * conversation\_id对话ID
  * tenant\_id租户ID
