# QAGenerationChain

> **Class** in `langchain_classic`

📖 [View in docs](https://reference.langchain.com/python/langchain-classic/chains/qa_generation/base/QAGenerationChain)

Base class for question-answer generation chains.

This class is deprecated. See below for an alternative implementation.

Advantages of this implementation include:

- Supports async and streaming;
- Surfaces prompt and text splitter for easier customization;
- Use of JsonOutputParser supports JSONPatch operations in streaming mode,
    as well as robustness to markdown.

    ```python
    from langchain_classic.chains.qa_generation.prompt import (
        CHAT_PROMPT as prompt,
    )

    # Note: import PROMPT if using a legacy non-chat model.
    from langchain_core.output_parsers import JsonOutputParser
    from langchain_core.runnables import (
        RunnableLambda,
        RunnableParallel,
        RunnablePassthrough,
    )
    from langchain_core.runnables.base import RunnableEach
    from langchain_openai import ChatOpenAI
    from langchain_text_splitters import RecursiveCharacterTextSplitter

    model = ChatOpenAI()
    text_splitter = RecursiveCharacterTextSplitter(chunk_overlap=500)
    split_text = RunnableLambda(lambda x: text_splitter.create_documents([x]))

    chain = RunnableParallel(
        text=RunnablePassthrough(),
        questions=(
            split_text | RunnableEach(bound=prompt | model | JsonOutputParser())
        ),
    )
    ```

## Signature

```python
QAGenerationChain()
```

## Extends

- `Chain`

## Properties

- `llm_chain`
- `text_splitter`
- `input_key`
- `output_key`
- `k`
- `input_keys`
- `output_keys`

## Methods

- [`from_llm()`](https://reference.langchain.com/python/langchain-classic/chains/qa_generation/base/QAGenerationChain/from_llm)

## ⚠️ Deprecated

Deprecated since version 0.2.7.

---

[View source on GitHub](https://github.com/langchain-ai/langchain/blob/02991cb4cf2063d51a07268edafb05fe53de1826/libs/langchain/langchain_classic/chains/qa_generation/base.py#L19)