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

# Monitoring your LLMs with Langfuse

Observability refers to the ability to monitor and understand the internal state of an LLM application, including its inputs and outputs.

watsonx Orchestrate provides observability through a native integration with an open-source project known as [Langfuse](https://langfuse.com/).

To enable IBM's native observability framework, start watsonx Orchestrate Developer Edition server with the `--with-ibm-telemetry` or `-i` flag, then go to [https://localhost:8765](https://localhost:8765) in your browser.

## Enabling Langfuse on SaaS

<Note>
  **Availability**

  This experience is currently only available on AWS SaaS Commercial and IBM Cloud Trial, Essential and Standard (non-isolated) instances.
</Note>

You can configure your own hosted Langfuse instance for observability.

You can configure it directly in the CLI:

```bash BASH [expandable] theme={null}
orchestrate settings observability langfuse configure \
--url "https://cloud.langfuse.com/api/public/otel" \
--api-key "sk-lf-0000-0000-0000-0000-0000" \
--health-uri "https://cloud.langfuse.com" \
--config-json '{"public_key": "pk-lf-0000-0000-0000-0000-0000"}'
```

<Expandable title="command flags">
  <ResponseField name="--url / -u" type="string">
    The URL of the Langfuse instance (required if not specified in `--config`).
  </ResponseField>

  <ResponseField name="--health-uri" type="string">
    The Health URI of the Langfuse instance (required if not specified in `--config`).
  </ResponseField>

  <ResponseField name="--project-id / -p" type="string">
    The Langfuse project ID (required if not specified in `--config`).
  </ResponseField>

  <ResponseField name="--api-key" type="string">
    The Langfuse API key (required if not specified in `--config`).
  </ResponseField>

  <ResponseField name="--config" type="string">
    A config file for the Langfuse integration (can be fetched using orchestrate settings).
  </ResponseField>

  <ResponseField name="--config-json" type="string">
    A config JSON object for the Langfuse integration, this object should contain your Langfuse `public_key`.
  </ResponseField>
</Expandable>

Or using an external file in YAML format:

```yaml YAML [expandable] theme={null}
spec_version: v1
kind: langfuse
project_id: default
api_key: sk-lf-00000-00000-00000-00000-00000
url: https://cloud.langfuse.com/api/public/otel
host_health_uri: https://cloud.langfuse.com
config_json: 
   public_key: pk-lf-00000-00000-00000-00000-00000
mask_pii: true
```

```bash BASH theme={null}
orchestrate settings observability langfuse configure --config-file=path_to_file.yml
```

## Getting configuration settings

To retrieve details of your current Langfuse configuration, run the following command:

```bash BASH theme={null}
orchestrate settings observability langfuse get --output <output file path>
```

<Expandable title="command flags">
  <ResponseField name="--output / -o" type="string">
    Specify a file to store the results. Use one of these extensions: `.yml`, `.yaml`, or `.json`.\
    When you set this flag, the command writes the Langfuse configuration to the file. Without this flag, the command prints the configuration to standard output.
  </ResponseField>
</Expandable>

## Removing configuration settings

To remove your current Langfuse configuration, run the following command:

```bash BASH theme={null}
orchestrate settings observability langfuse remove
```
