---
title: Integrate Opik
---


### What is Opik

Opik is an open-source platform designed for evaluating, testing, and monitoring large language model (LLM) applications. Developed by Comet, it aims to facilitate more intuitive collaboration, testing, and monitoring of LLM-based applications.

<Info>
For more details, please refer to [Opik](https://www.comet.com/site/products/opik/).
</Info>

---

### How to Configure Opik

#### 1. Register/Login to [Opik](https://www.comet.com/signup?from=llm)

#### 2. Get your Opik API Key

Retrieve your Opik API Key from the user menu at the top-right. Click on **API Key**, then on the API Key to copy it:

![Opik API Key](https://assets-docs.dify.ai/2025/01/a66603f01e4ffaa593a8b78fcf3f8204.png)

#### 3. Integrating Opik with Dify

Configure Opik in the Dify application. Open the application you need to monitor, open **Monitoring** in the side menu, and select **Tracing app performance** on the page.

![Tracing app performance](https://assets-docs.dify.ai/2025/01/9d52a244e3b6cef1874ee838cd976111.png)

After clicking configure, paste the **API Key** and **project name** created in Opik into the configuration and save.

![Configure Opik](https://assets-docs.dify.ai/2025/01/7f4c436e2dc9fe94a3ed49219bb3360c.png)

Once successfully saved, you can view the monitoring status on the current page.

### Viewing Monitoring Data in Opik

Once configured, you can debug or use the Dify application as usual. All usage history can be monitored in Opik. 

![Viewing application data in Opik](https://assets-docs.dify.ai/2025/01/a1c5aa80325e6d0223d48a178393baec.png)

When you switch to Opik, you can view detailed operation logs of Dify applications in the dashboard.

![Viewing application data in Opik](https://assets-docs.dify.ai/2025/01/09601d45eaf8ed90a4dfb07c34de36ff.png)

Detailed LLM operation logs through Opik will help you optimize the performance of your Dify application.

![Viewing application data in Opik](https://assets-docs.dify.ai/2025/01/708533b4fc616f852b5601fe602e3ef5.png)

### Monitoring Data List

#### **Workflow/Chatflow Trace Information**

**Used to track workflows and chatflows**

<table>
  <thead>
    <tr>
      <th>Workflow</th>
      <th>Opik Trace</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>workflow_app_log_id/workflow_run_id</td>
      <td>id</td>
    </tr>
    <tr>
      <td>user_session_id</td>
      <td>- placed in metadata</td>
    </tr>
    <tr>
      <td>workflow\_{id}</td>
      <td>name</td>
    </tr>
    <tr>
      <td>start_time</td>
      <td>start_time</td>
    </tr>
    <tr>
      <td>end_time</td>
      <td>end_time</td>
    </tr>
    <tr>
      <td>inputs</td>
      <td>inputs</td>
    </tr>
    <tr>
      <td>outputs</td>
      <td>outputs</td>
    </tr>
    <tr>
      <td>Model token consumption</td>
      <td>usage_metadata</td>
    </tr>
    <tr>
      <td>metadata</td>
      <td>metadata</td>
    </tr>
    <tr>
      <td>error</td>
      <td>error</td>
    </tr>
    <tr>
      <td>\[workflow]</td>
      <td>tags</td>
    </tr>
    <tr>
      <td>"conversation_id/none for workflow"</td>
      <td>conversation_id in metadata</td>
    </tr>
  </tbody>
</table>
**Workflow Trace Info**

- workflow_id - Unique identifier of the workflow
- conversation_id - Conversation ID
- workflow_run_id - ID of the current run
- tenant_id - Tenant ID
- elapsed_time - Time taken for the current run
- status - Run status
- version - Workflow version
- total_tokens - Total tokens used in the current run
- file_list - List of processed files
- triggered_from - Source that triggered the current run
- workflow_run_inputs - Input data for the current run
- workflow_run_outputs - Output data for the current run
- error - Errors encountered during the current run
- query - Query used during the run
- workflow_app_log_id - Workflow application log ID
- message_id - Associated message ID
- start_time - Start time of the run
- end_time - End time of the run
- workflow node executions - Information about workflow node executions
- Metadata
  - workflow_id - Unique identifier of the workflow
  - conversation_id - Conversation ID
  - workflow_run_id - ID of the current run
  - tenant_id - Tenant ID
  - elapsed_time - Time taken for the current run
  - status - Run status
  - version - Workflow version
  - total_tokens - Total tokens used in the current run
  - file_list - List of processed files
  - triggered_from - Source that triggered the current run

#### **Message Trace Information**

**Used to track LLM-related conversations**

<table>
  <thead>
    <tr>
      <th>Chat</th>
      <th>Opik LLM</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>message_id</td>
      <td>id</td>
    </tr>
    <tr>
      <td>user_session_id</td>
      <td>- placed in metadata</td>
    </tr>
    <tr>
      <td>"llm"</td>
      <td>name</td>
    </tr>
    <tr>
      <td>start_time</td>
      <td>start_time</td>
    </tr>
    <tr>
      <td>end_time</td>
      <td>end_time</td>
    </tr>
    <tr>
      <td>inputs</td>
      <td>inputs</td>
    </tr>
    <tr>
      <td>outputs</td>
      <td>outputs</td>
    </tr>
    <tr>
      <td>Model token consumption</td>
      <td>usage_metadata</td>
    </tr>
    <tr>
      <td>metadata</td>
      <td>metadata</td>
    </tr>
    <tr>
      <td>\["message", conversation_mode]</td>
      <td>tags</td>
    </tr>
    <tr>
      <td>conversation_id</td>
      <td>conversation_id in metadata</td>
    </tr>
  </tbody>
</table>
**Message Trace Info**

- message_id - Message ID
- message_data - Message data
- user_session_id - User session ID
- conversation_model - Conversation mode
- message_tokens - Number of tokens in the message
- answer_tokens - Number of tokens in the answer
- total_tokens - Total number of tokens in the message and answer
- error - Error information
- inputs - Input data
- outputs - Output data
- file_list - List of processed files
- start_time - Start time
- end_time - End time
- message_file_data - File data associated with the message
- conversation_mode - Conversation mode
- Metadata
  - conversation_id - Conversation ID
  - ls_provider - Model provider
  - ls_model_name - Model ID
  - status - Message status
  - from_end_user_id - ID of the sending user
  - from_account_id - ID of the sending account
  - agent_based - Whether the message is agent-based
  - workflow_run_id - Workflow run ID
  - from_source - Message source

#### **Moderation Trace Information**

**Used to track conversation moderation**

<table>
  <thead>
    <tr>
      <th>Moderation</th>
      <th>Opik Tool</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>user_id</td>
      <td>- placed in metadata</td>
    </tr>
    <tr>
      <td>“moderation"</td>
      <td>name</td>
    </tr>
    <tr>
      <td>start_time</td>
      <td>start_time</td>
    </tr>
    <tr>
      <td>end_time</td>
      <td>end_time</td>
    </tr>
    <tr>
      <td>inputs</td>
      <td>inputs</td>
    </tr>
    <tr>
      <td>outputs</td>
      <td>outputs</td>
    </tr>
    <tr>
      <td>metadata</td>
      <td>metadata</td>
    </tr>
    <tr>
      <td>\["moderation"]</td>
      <td>tags</td>
    </tr>
  </tbody>
</table>
**Moderation Trace Info**

- message_id - Message ID
- user_id: User ID
- workflow_app_log_id - Workflow application log ID
- inputs - Moderation input data
- message_data - Message data
- flagged - Whether the content is flagged for attention
- action - Specific actions taken
- preset_response - Preset response
- start_time - Moderation start time
- end_time - Moderation end time
- Metadata
  - message_id - Message ID
  - action - Specific actions taken
  - preset_response - Preset response

#### **Suggested Question Trace Information**

**Used to track suggested questions**

<table>
  <thead>
    <tr>
      <th>Suggested Question</th>
      <th>Opik LLM</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>user_id</td>
      <td>- placed in metadata</td>
    </tr>
    <tr>
      <td>"suggested_question"</td>
      <td>name</td>
    </tr>
    <tr>
      <td>start_time</td>
      <td>start_time</td>
    </tr>
    <tr>
      <td>end_time</td>
      <td>end_time</td>
    </tr>
    <tr>
      <td>inputs</td>
      <td>inputs</td>
    </tr>
    <tr>
      <td>outputs</td>
      <td>outputs</td>
    </tr>
    <tr>
      <td>metadata</td>
      <td>metadata</td>
    </tr>
    <tr>
      <td>\["suggested_question"]</td>
      <td>tags</td>
    </tr>
  </tbody>
</table>
**Message Trace Info**

- message_id - Message ID
- message_data - Message data
- inputs - Input content
- outputs - Output content
- start_time - Start time
- end_time - End time
- total_tokens - Number of tokens
- status - Message status
- error - Error information
- from_account_id - ID of the sending account
- agent_based - Whether the message is agent-based
- from_source - Message source
- model_provider - Model provider
- model_id - Model ID
- suggested_question - Suggested question
- level - Status level
- status_message - Status message
- Metadata
  - message_id - Message ID
  - ls_provider - Model provider
  - ls_model_name - Model ID
  - status - Message status
  - from_end_user_id - ID of the sending user
  - from_account_id - ID of the sending account
  - workflow_run_id - Workflow run ID
  - from_source - Message source

#### **Dataset Retrieval Trace Information**

**Used to track knowledge base retrieval**

<table>
  <thead>
    <tr>
      <th>Dataset Retrieval</th>
      <th>Opik Retriever</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>user_id</td>
      <td>- placed in metadata</td>
    </tr>
    <tr>
      <td>"dataset_retrieval"</td>
      <td>name</td>
    </tr>
    <tr>
      <td>start_time</td>
      <td>start_time</td>
    </tr>
    <tr>
      <td>end_time</td>
      <td>end_time</td>
    </tr>
    <tr>
      <td>inputs</td>
      <td>inputs</td>
    </tr>
    <tr>
      <td>outputs</td>
      <td>outputs</td>
    </tr>
    <tr>
      <td>metadata</td>
      <td>metadata</td>
    </tr>
    <tr>
      <td>\["dataset_retrieval"]</td>
      <td>tags</td>
    </tr>
    <tr>
      <td>message_id</td>
      <td>parent_run_id</td>
    </tr>
  </tbody>
</table>
**Dataset Retrieval Trace Info**

- message_id - Message ID
- inputs - Input content
- documents - Document data
- start_time - Start time
- end_time - End time
- message_data - Message data
- Metadata
  - message_id - Message ID
  - ls_provider - Model provider
  - ls_model_name - Model ID
  - status - Message status
  - from_end_user_id - ID of the sending user
  - from_account_id - ID of the sending account
  - agent_based - Whether the message is agent-based
  - workflow_run_id - Workflow run ID
  - from_source - Message source

#### **Tool Trace Information**

**Used to track tool invocation**

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Opik Tool</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>user_id</td>
      <td>- placed in metadata</td>
    </tr>
    <tr>
      <td>tool_name</td>
      <td>name</td>
    </tr>
    <tr>
      <td>start_time</td>
      <td>start_time</td>
    </tr>
    <tr>
      <td>end_time</td>
      <td>end_time</td>
    </tr>
    <tr>
      <td>inputs</td>
      <td>inputs</td>
    </tr>
    <tr>
      <td>outputs</td>
      <td>outputs</td>
    </tr>
    <tr>
      <td>metadata</td>
      <td>metadata</td>
    </tr>
    <tr>
      <td>\["tool", tool_name]</td>
      <td>tags</td>
    </tr>
  </tbody>
</table>
#### **Tool Trace Info**

- message_id - Message ID
- tool_name - Tool name
- start_time - Start time
- end_time - End time
- tool_inputs - Tool inputs
- tool_outputs - Tool outputs
- message_data - Message data
- error - Error information, if any
- inputs - Inputs for the message
- outputs - Outputs of the message
- tool_config - Tool configuration
- time_cost - Time cost
- tool_parameters - Tool parameters
- file_url - URL of the associated file
- Metadata
  - message_id - Message ID
  - tool_name - Tool name
  - tool_inputs - Tool inputs
  - tool_outputs - Tool outputs
  - tool_config - Tool configuration
  - time_cost - Time cost
  - error - Error information, if any
  - tool_parameters - Tool parameters
  - message_file_id - Message file ID
  - created_by_role - Role of the creator
  - created_user_id - User ID of the creator

**Generate Name Trace Information**

**Used to track conversation title generation**

<table>
  <thead>
    <tr>
      <th>Generate Name</th>
      <th>Opik Tool</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>user_id</td>
      <td>- placed in metadata</td>
    </tr>
    <tr>
      <td>"generate_conversation_name"</td>
      <td>name</td>
    </tr>
    <tr>
      <td>start_time</td>
      <td>start_time</td>
    </tr>
    <tr>
      <td>end_time</td>
      <td>end_time</td>
    </tr>
    <tr>
      <td>inputs</td>
      <td>inputs</td>
    </tr>
    <tr>
      <td>outputs</td>
      <td>outputs</td>
    </tr>
    <tr>
      <td>metadata</td>
      <td>metadata</td>
    </tr>
    <tr>
      <td>\["generate_name"]</td>
      <td>tags</td>
    </tr>
  </tbody>
</table>
**Generate Name Trace Info**

- conversation_id - Conversation ID
- inputs - Input data
- outputs - Generated conversation name
- start_time - Start time
- end_time - End time
- tenant_id - Tenant ID
- Metadata
  - conversation_id - Conversation ID
  - tenant_id - Tenant ID

{/*
Contributing Section
DO NOT edit this section!
It will be automatically generated by the script.
*/}

---

[Edit this page](https://github.com/langgenius/dify-docs/edit/main/en/guides/monitoring/integrate-external-ops-tools/integrate-opik.mdx) | [Report an issue](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)

