---
date: 2025-06-27
title: Improved JSON Handling in LangChain Prompts
description: Simplified JSON handling in prompts designated for LangChain consumption - no more extra escaping required.
author: Hassieb
---

> **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 current documentation (https://langfuse.com/docs) and the API/SDK reference (https://api.reference.langfuse.com).

We've shipped significant improvements for handling JSON in prompts designed to be consumed via `get_langchain_prompt()` (Python) and `getLangchainPrompt()` (JS/TS).

You no longer need to add extra escaping brackets for JSON content in your prompts, making prompt creation more intuitive and reducing common integration issues.

## What's Changed

Previously, when creating prompts with embedded JSON that were intended for LangChain consumption, you needed to carefully escape JSON braces to avoid conflicts with LangChain's templating system. This often led to confusion and errors when working with complex prompts.

Now, the SDK automatically handles the escaping and unescaping of JSON content, making the process seamless.

## Example

Here's how it works now:

```python
from langchain.prompts import PromptTemplate
from langfuse import Langfuse

# Create a prompt with JSON content and LangChain variables
prompt_string = """
This is my test prompt with a variable {{animal}} and some JSON.
There's also a LangChain variable {country} with single braces.

{
    "answer": "OK",
    "animal": {{animal}},
    "country": {country}
}
"""

# Store the prompt in Langfuse
langfuse = Langfuse()
langfuse.create_prompt(
    name="my_prompt",
    prompt=prompt_string,
    labels=["production"]
)

# Retrieve and convert to LangChain format
prompt = langfuse.get_prompt("my_prompt")
langchain_prompt_string = prompt.get_langchain_prompt()

# Use with LangChain
langchain_prompt = PromptTemplate.from_template(langchain_prompt_string)
formatted_prompt = langchain_prompt.format(
    animal="dog",
    country="France"
)
```

The SDK now automatically:

- Converts `{{animal}}` (Langfuse variables) to `{animal}` (LangChain format)
- Properly escapes the JSON structure to avoid conflicts with LangChain templating
- Maintains the integrity of both your JSON content and variable substitution

## Availability

This improvement is available in:

- **Python SDK**: [v3.0.6](https://github.com/langfuse/langfuse-python/releases/tag/v3.0.6) and later
- **JavaScript/TypeScript SDK**: [v3.37.6](https://github.com/langfuse/langfuse-js/releases/tag/v3.37.6) and later

## Learn More

- [LangChain Integration Documentation](/integrations/frameworks/langchain)
- [Prompt Management](/docs/prompts)
- [GitHub Discussion](https://github.com/orgs/langfuse/discussions/7057)

<!-- 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-06-27-improved-json-handling-langchain-prompts.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>.
