---
title: How to customize the names of observations within a Langchain trace?
seoTitle: "Customize Observation Names in LangChain"
description: "How to rename observations inside a LangChain trace by setting the run name, so Langfuse shows meaningful step names in the UI."
tags: [integration]
---

# How to customize the names of a Langchain class within a trace?

You can update the name of a run within Langchain. Langfuse will pick up the name and display it in the UI.

## Custom `run_name` via `with_config` (Python)

To customize the names of Langchain traces, you can use the `run_name` parameter within the `config` of a run.

Examples (from [Langchain docs](https://python.langchain.com/docs/concepts/runnables/#setting-custom-run-name-tags-and-metadata))

```python
from langchain import chat_models, prompts, callbacks, schema

chain = (
    prompts.ChatPromptTemplate.from_template("Reverse the following string: {text}")
    | chat_models.ChatOpenAI()
).with_config({"run_name": "StringReverse"})
```

```python
from langchain.schema import runnable

configured_lambda_chain = (
    chain
    | StrOutputParser()
    | runnable.RunnableLambda(reverse_and_concat).with_config(
        {"run_name": "LambdaReverse"}
    )
)
```

```python
from langchain import agents, tools


agent_executor = agents.initialize_agent(
    llm=chat_models.ChatOpenAI(),
    tools=[tools.ReadFileTool(), tools.WriteFileTool(), tools.ListDirectoryTool()],
    agent=agents.AgentType.OPENAI_FUNCTIONS,
)
result = agent_executor.with_config({"run_name": "File Agent"}).invoke(
    "What files are in the current directory?"
)
```

## Custom name argument on Langchain classes

You can also pass a custom `name` argument to Langchain classes. This will override the default name of the class when shown in a Langfuse trace.

```python
model = ChatOpenAI(name="generate-rating")
```

<!-- 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/faq/all/custom-langchain-run-names.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>.
