BerriAI/litellm · error · HTTPException
Model is required in dotprompt metadata
Error message
Model is required in dotprompt metadata
What it means
Dotprompt ingestion guard: after parsing the frontmatter of the supplied dotprompt content, the template metadata contains no 'model' field. The model is mandatory because the resulting prompt spec must be routable to a provider; the request is rejected with 400 before any rendering/storage.
Source
Thrown at litellm/proxy/prompts/prompt_endpoints.py:1235
user_api_base,
user_max_tokens,
user_model,
user_request_timeout,
user_temperature,
version,
)
try:
# Parse the dotprompt content and create PromptTemplate
prompt_manager: Final = PromptManager()
frontmatter, template_content = prompt_manager._parse_frontmatter(content=request.dotprompt_content)
# Create PromptTemplate to leverage existing parameter extraction logic
template: Final = PromptTemplate(content=template_content, metadata=frontmatter, template_id="test_prompt")
# Extract model from template
if not template.model:
raise HTTPException(status_code=400, detail="Model is required in dotprompt metadata")
# Always render the template to extract system messages and other metadata
variables: Final = request.prompt_variables or {}
rendered_content: Final = prompt_manager.jinja_env.from_string(template_content).render(**variables)
# Convert rendered content to messages using DotpromptManager's method
dotprompt_manager: Final = DotpromptManager()
rendered_messages: Final = dotprompt_manager._convert_to_messages(rendered_content=rendered_content)
if not rendered_messages:
raise HTTPException(status_code=400, detail="No messages found in rendered prompt")
# If conversation history is provided, use it but preserve system messages
if request.conversation_history:
# Extract system messages from rendered prompt
system_messages: Final = [msg for msg in rendered_messages if msg.get("role") == "system"]
# Use conversation history for user/assistant messages
messages = system_messages + request.conversation_historyView on GitHub (pinned to 77b7c6c40c)
Solutions
- Add a model field to the dotprompt frontmatter/metadata of the .prompt file.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at litellm/proxy/prompts/prompt_endpoints.py:1235 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/d071850110625da6.
Report an issue: GitHub.