// Docs

Generate text

Use generate_text inside Refiner async transforms

generate_text turns a function that receives a row and a model-call helper into an async transform.

from pydantic import BaseModel


class EpisodeLabel(BaseModel):
    label: str
    confidence: float


async def label_episode(row, generate_text):
    response = await generate_text(
        messages=[
            {
                "role": "user",
                "content": f"Label this task: {row.task}",
            }
        ],
        schema=EpisodeLabel,
    )
    return row.update(response.object.model_dump())


pipeline = pipeline.map_async(
    mdr.inference.generate_text(
        fn=label_episode,
        provider=mdr.inference.OpenAIResponsesProvider(model="gpt-4.1"),
        max_concurrent_requests=64,
    ),
    max_in_flight=64,
)

Function shape

Your function receives:

ArgumentMeaning
rowThe current Refiner row.
generate_textAsync helper used to call the configured provider.

The function returns an updated row.

Generation parameters

await generate_text(
    messages=[{"role": "user", "content": "Summarize the episode."}],
    temperature=0.1,
    max_tokens=200,
)

Default parameters can be attached when creating the transform:

mdr.inference.generate_text(
    fn=label_episode,
    provider=provider,
    default_generation_params={"temperature": 0.1},
)