# format_document

> **Function** in `langchain_core`

📖 [View in docs](https://reference.langchain.com/python/langchain-core/prompts/base/format_document)

Format a document into a string based on a prompt template.

First, this pulls information from the document from two sources:

1. `page_content`: This takes the information from the `document.page_content` and
    assigns it to a variable named `page_content`.
2. `metadata`: This takes information from `document.metadata` and assigns it to
    variables of the same name.

Those variables are then passed into the `prompt` to produce a formatted string.

## Signature

```python
format_document(
    doc: Document,
    prompt: BasePromptTemplate[str],
) -> str
```

## Description

**Example:**

```python
from langchain_core.documents import Document
from langchain_core.prompts import PromptTemplate

doc = Document(page_content="This is a joke", metadata={"page": "1"})
prompt = PromptTemplate.from_template("Page {page}: {page_content}")
format_document(doc, prompt)
# -> "Page 1: This is a joke"
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `doc` | `Document` | Yes | `Document`, the `page_content` and `metadata` will be used to create the final string. |
| `prompt` | `BasePromptTemplate[str]` | Yes | `BasePromptTemplate`, will be used to format the `page_content` and `metadata` into the final string. |

## Returns

`str`

String of the document formatted.

---

[View source on GitHub](https://github.com/langchain-ai/langchain/blob/fb6ab993a73180538f6cca876b3c85d46c08845f/libs/core/langchain_core/prompts/base.py#L422)