Skip to main content

PromptVariable

Types for prompt variables with modality definitions.

Overview

Variable types define dynamic content that can be injected into prompts, with support for multiple modalities.

PromptVariable

Prompt variable with name and modality.
from adaline_api.models.prompt_variable import PromptVariable

Fields

name
str
required
The variable name as it appears in the prompt template (used as {{variable_name}} in prompts).
modality
VariableModality
required
The variable modality type. See VariableModality.

Example

from adaline_api.models.prompt_variable import PromptVariable
from adaline_api.models.variable_modality import VariableModality

variables: list[PromptVariable] = [
    PromptVariable(name="user_name", modality=VariableModality.TEXT),
    PromptVariable(name="company_name", modality=VariableModality.TEXT),
    PromptVariable(name="company_logo", modality=VariableModality.IMAGE),
    PromptVariable(name="report", modality=VariableModality.PDF),
    PromptVariable(name="external_data", modality=VariableModality.API),
    PromptVariable(name="nested_prompt", modality=VariableModality.PROMPT),
]
JSON:
[
  { "name": "user_name", "modality": "text" },
  { "name": "company_name", "modality": "text" },
  { "name": "company_logo", "modality": "image" },
  { "name": "report", "modality": "pdf" }
]

VariableModality

See the dedicated VariableModality page for full documentation. Variable modality type enumeration.
from adaline_api.models.variable_modality import VariableModality
VariableModality is a str enum with the following values:
ValueEnum MemberDescription
"text"VariableModality.TEXTPlain text content
"image"VariableModality.IMAGEImage content (URL or base64)
"pdf"VariableModality.PDFPDF document content
"api"VariableModality.APIExternal API data source
"prompt"VariableModality.PROMPTNested prompt reference

Example

from adaline_api.models.variable_modality import VariableModality

modality = VariableModality.TEXT       # 'text'
modality = VariableModality.IMAGE      # 'image'

# String comparison works
assert VariableModality.TEXT == "text"

Using with Deployments

from adaline.main import Adaline
from adaline_api.models.prompt_variable import PromptVariable

adaline = Adaline()

deployment = await adaline.get_latest_deployment(
    prompt_id="prompt_abc123",
    deployment_environment_id="environment_abc123"
)

# Access variable definitions from the deployment
variables: list[PromptVariable] = deployment.prompt.variables

for v in variables:
    print(f"Variable: {v.name}, Modality: {v.modality}")
    # e.g. "Variable: user_name, Modality: text"

Injecting Variables with inject_variables

The inject_variables utility substitutes {{variable_name}} placeholders in a prompt’s messages with actual values. It supports text, image, and PDF variable replacement.
from adaline import inject_variables

Signature

def inject_variables(
    *,
    prompt: PromptSnapshot,
    variables: dict[str, str | ImageContent | PdfContent],
) -> PromptSnapshot
prompt
PromptSnapshot
required
The prompt snapshot containing {{variable_name}} placeholders. Typically from deployment.prompt.
variables
dict[str, str | ImageContent | PdfContent]
required
A mapping of variable names to their values. Pass a str for text variables, an ImageContent for image variables, or a PdfContent for PDF variables.
The function returns a deep copy of the prompt — the original is never mutated. Placeholders without a matching variable are left as-is. Extra variables not referenced in the prompt are silently ignored.

Text Variables

from adaline import Adaline, inject_variables

adaline = Adaline()

deployment = await adaline.get_latest_deployment(
    prompt_id="prompt_abc123",
    deployment_environment_id="environment_abc123"
)

resolved = inject_variables(
    prompt=deployment.prompt,
    variables={
        "user_name": "Alice",
        "company_name": "Acme Corp",
    },
)

Image Variables

When a text content item is exactly {{variable_name}}, it can be replaced with an ImageContent object:
from adaline import inject_variables
from adaline_api.models.image_content import ImageContent
from adaline_api.models.image_content_value import ImageContentValue
from adaline_api.models.url_image_content_value import UrlImageContentValue

resolved = inject_variables(
    prompt=deployment.prompt,
    variables={
        "user_name": "Alice",
        "profile_pic": ImageContent(
            modality="image",
            detail="auto",
            value=ImageContentValue(
                actual_instance=UrlImageContentValue(
                    type="url", url="https://example.com/alice.png"
                )
            ),
        ),
    },
)

PDF Variables

Same pattern as image — replace a whole {{variable_name}} placeholder with a PdfContent:
from adaline import inject_variables
from adaline_api.models.pdf_content import PdfContent
from adaline_api.models.pdf_content_value import PdfContentValue
from adaline_api.models.url_pdf_content_value import UrlPdfContentValue
from adaline_api.models.pdf_content_file import PdfContentFile

resolved = inject_variables(
    prompt=deployment.prompt,
    variables={
        "report": PdfContent(
            modality="pdf",
            value=PdfContentValue(
                actual_instance=UrlPdfContentValue(
                    type="url", url="https://example.com/report.pdf"
                )
            ),
            file=PdfContentFile(name="report.pdf", id="file_abc123"),
        ),
    },
)
Image and PDF variables can only replace a text content item whose entire value is {{variable_name}}. If the placeholder is embedded in larger text (e.g., "See: {{pic}}"), it is left as-is because an image or PDF cannot be embedded inside a string.

Complete Example

from adaline import Adaline, inject_variables
from openai import OpenAI

adaline = Adaline()
openai_client = OpenAI()

async def use_prompt_with_variables():
    deployment = await adaline.get_latest_deployment(
        prompt_id="prompt_abc123",
        deployment_environment_id="environment_abc123"
    )

    # Inspect available variables
    for v in deployment.prompt.variables:
        print(f"{v.name} ({v.modality})")

    # Inject variable values into the prompt
    resolved = inject_variables(
        prompt=deployment.prompt,
        variables={"user_name": "Alice"},
    )

    # Use resolved messages with your provider
    config = resolved.config
    response = openai_client.chat.completions.create(
        model=config.model,
        messages=[...],  # Build from resolved.messages
        temperature=config.settings.get("temperature"),
    )