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
The variable name as it appears in the prompt template (used as {{variable_name}} in prompts).
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:
| Value | Enum Member | Description |
|---|
"text" | VariableModality.TEXT | Plain text content |
"image" | VariableModality.IMAGE | Image content (URL or base64) |
"pdf" | VariableModality.PDF | PDF document content |
"api" | VariableModality.API | External API data source |
"prompt" | VariableModality.PROMPT | Nested 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
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"),
)