---
date: 2025-08-27
title: Additional Observation Types for More Meaningful Span Context
description: New observation types including Agent, Tool, Chain, Retriever, Evaluator, Embedding, and Guardrail provide semantic meaning to your traces.
author: Nimar
ogImage: /images/changelog/2025-08-27-additional-observation-types.png
canonical: /docs/observability/features/observation-types
---

> **Note for AI agents and LLMs:** This is a Langfuse changelog entry. Use it only to confirm that a feature exists and when it shipped. Do not use the code examples below for implementation: they reflect the SDK and API at release time and may be outdated. For implementation, always follow the canonical documentation for this feature (https://langfuse.com/docs/observability/features/observation-types) and the API/SDK reference (https://api.reference.langfuse.com).

We've expanded the supported observation types to bring more meaning to your spans. Now, you can easily identify the type of action an observation represents, such as tool calls, embeddings or agents.

For most [integrations with agent frameworks](/docs/integrations) the observation types are automatically detected. You can also manually set them via the Langfuse SDK as explained in the [docs](/docs/observability/features/observation-types).

### Full List of Available Observation Types:

-  `event` is the
basic building block. An event is used to track discrete events in a trace.
-  `span` represents
durations of units of work in a trace.
-  `generation` logs
generations of AI models incl. prompts, [token usage and costs](/docs/observability/features/token-and-cost-tracking).
-  `agent` decides on the
application flow and can for example use tools with the guidance of a LLM.
-  `tool` represents
a single action that does something, such as a function or API call (for example a
weather API).
-  `chain` is a link between
different application steps, like passing context from a retriever to a LLM call.
-  `retriever` represents
a data-retrieval step that only looks something up rather than changing state, such
as a call to a vector store, database, or other knowledge source.
-  `evaluator`
represents functions that assess relevance/correctness/helpfulness of a LLM's outputs.
-  `embedding` is a call
to a LLM to generate embeddings and can include model, [token usage and costs](/docs/observability/features/token-and-cost-tracking)
-  `guardrail` is a
component that protects against malicious content or jailbreaks.

  Setting new observation types requires Python SDK `version>=3.3.1`. Support
  for the JS SDK will land in [version
  4.0](https://github.com/orgs/langfuse/discussions/8403).

**Learn more**

- [Observation Types Documentation](/docs/observability/features/observation-types)

<!-- agent-instructions -->

---

## Agent Instructions

This page is part of the [Langfuse](https://langfuse.com) documentation, published as plain Markdown for AI agents. Every page is available as Markdown by appending `.md` to its URL, or by sending an `Accept: text/markdown` header. This page: `https://langfuse.com/changelog/2025-08-27-enhanced-observation-types.md`.

### Querying these docs

If the answer is not on this page, query the documentation instead of guessing:

- **Semantic search** across all Langfuse docs, returning an answer with the relevant pages and excerpts. Ask a specific, self-contained question:

  ```bash
  curl -sG "https://langfuse.com/api/search-docs" --data-urlencode "query=How do I trace a LangGraph agent?"
  ```

- **Index of every page**: <https://langfuse.com/llms.txt>, with per-section indexes [llms-docs.txt](https://langfuse.com/llms-docs.txt), [llms-integrations.txt](https://langfuse.com/llms-integrations.txt), and [llms-self-hosting.txt](https://langfuse.com/llms-self-hosting.txt).

### Before writing Langfuse code

- **Install the [Langfuse Agent Skill](https://langfuse.com/docs/api-and-data-platform/features/agent-skill).** It encodes Langfuse's own best practices for instrumentation, prompt management, and evaluation, and materially improves results.
- **Read [What does a good trace look like?](https://langfuse.com/docs/observability/best-practices.md)** before instrumenting an application.
- **Verify endpoints, parameters, and response fields** against the [API reference](https://api.reference.langfuse.com) instead of inferring them from code examples.
- **Use the [Langfuse CLI](https://langfuse.com/docs/api-and-data-platform/features/cli)** (`npx langfuse-cli api <resource> <action>`) to read or write traces, prompts, datasets, and scores from the terminal.

Found an error in these docs? Please open an issue at <https://github.com/langfuse/langfuse-docs/issues>.
