Skip to main content
prompt = client.prompts.create(options)
# Async
prompt = await client.prompts.acreate(options)
Create a new prompt with the specified content. The prompt is created at version 1.

Parameters

Pass a CreatePromptOptions object:
ParameterTypeRequiredDescription
slugstrYesURL-friendly identifier
namestrYesDisplay name for the prompt
messageslist[PromptMessage]YesArray of messages
modelstrYesDefault model (e.g., gpt-4o)
providerLLMProviderYesProvider ("openai", "anthropic", "google")
descriptionstrNoDescription of the prompt
temperaturefloatNoDefault temperature
max_output_tokensintNoDefault max output tokens
top_pfloatNoDefault top-p value
stop_sequenceslist[str]NoDefault stop sequences

PromptMessage

FieldTypeRequiredDescription
rolestrYessystem, developer, user, or assistant
contentstrYesMessage content (supports {{variables}})

Response

Returns the created Prompt object.

Examples

Basic Usage

from tracia import CreatePromptOptions, PromptMessage

prompt = client.prompts.create(CreatePromptOptions(
    slug="welcome-email",
    name="Welcome Email",
    model="gpt-4o",
    provider="openai",
    messages=[
        PromptMessage(role="system", content="You are a helpful assistant."),
        PromptMessage(role="user", content="Write a welcome email for {{name}}."),
    ],
))

print(prompt.slug)  # "welcome-email"

With Description and Options

prompt = client.prompts.create(CreatePromptOptions(
    slug="onboarding-welcome",
    name="Welcome Email",
    description="Sent to new users after signup",
    model="gpt-4o",
    provider="openai",
    temperature=0.7,
    messages=[
        PromptMessage(role="system", content="You write professional emails."),
        PromptMessage(role="user", content="Write a welcome email for {{name}} at {{company}}."),
    ],
))

Multi-Turn Conversation

prompt = client.prompts.create(CreatePromptOptions(
    slug="code-review",
    name="Code Review Assistant",
    model="claude-sonnet-4-20250514",
    provider="anthropic",
    messages=[
        PromptMessage(
            role="system",
            content="You are a senior software engineer conducting code reviews.",
        ),
        PromptMessage(
            role="user",
            content="Please review this {{language}} code:\n\n{{code}}",
        ),
        PromptMessage(
            role="assistant",
            content="I'll review this code for correctness, performance, and best practices.",
        ),
        PromptMessage(
            role="user",
            content="Focus especially on {{focus_area}}.",
        ),
    ],
))
Slugs must be lowercase with hyphens only (e.g., welcome-email).

Error Handling

from tracia import TraciaError, TraciaErrorCode

try:
    prompt = client.prompts.create(CreatePromptOptions(
        slug="welcome-email",
        name="Welcome Email",
        model="gpt-4o",
        provider="openai",
        messages=[...],
    ))
except TraciaError as error:
    if error.code == TraciaErrorCode.CONFLICT:
        print("A prompt with this slug already exists")
    elif error.code == TraciaErrorCode.INVALID_REQUEST:
        print(f"Invalid request: {error.message}")