Celeste 1.0 brings live voice sessions, transcription and typed decisions to one Python API

3 hours ago

Celeste 1.0 is the first stable release of the Python SDK that puts OpenAI, Anthropic, Google and more than a dozen other providers behind one interface. The headline is live sessions, a realtime voice conversation through the same API you already use for text. Transcription, upscaling and typed decisions come with it, and so do some breaking changes.

Ask about this presentation

Chapters

  1. 0:00Celeste 1.0
  2. 0:24Live sessions
  3. 0:45New operations
  4. 1:11Sources and reasoning
  5. 1:31Retries and tracing
  6. 1:53New providers and models
  7. 2:12Renames
  8. 2:36Behavior changes
  9. 3:01Upgrade
Show transcript
  1. Celeste 1.0 is the first stable release of the Python SDK that puts OpenAI, Anthropic, Google and more than a dozen other providers behind one interface. The headline is live sessions, a realtime voice conversation through the same API you already use for text. Transcription, upscaling and typed decisions come with it, and so do some breaking changes.

    Slide text
    OpenAI
    Claude
    Gemini
    ElevenLabs
    Mistral
    xAI
    Groq
    DeepSeek
    Celeste

    Live voice sessions,
    in the same Python API

    Celeste 1.0, the first stable release, also adds transcription, upscaling, segmentation and typed decisions.

  2. Live is a new modality. You open a session with celeste.live.connect, send it audio, and read chunks that carry the model's audio, a transcript and any tool calls. Gemini Live also takes text and images. It runs on Gemini 3.8 Live, also on Vertex, and on OpenAI's GPT Live 1.

    Slide text
    Celeste
    celeste-ai 1.0.0

    Hold a realtime voice session with celeste.live.connect

    async with celeste.live.connect( model="gemini-3.8-live", ) as livestream: await livestream.send( "Say hello in one short sentence." ) async for chunk in livestream: if chunk.finish_reason: await livestream.end() output = livestream.output # audio, usage, transcript
    Google
    gemini-3.8-live
    gemini-3.8-live-extended-thinking
    Also on Vertex through GoogleADC
    OpenAI
    gpt-live-1
  3. Beyond live sessions, 1.0 adds new operations. Transcribe speech with Whisper on Groq, OpenAI's models, ElevenLabs Scribe or Mistral's Voxtral. Generate music with Google's Lyria, upscale images through Topaz Labs, segment them with SAM 3, and edit video with Gemini Omni. And decide answers typed questions about text or an image, with probabilities, using TypeSafe's Jev models.

    Slide text
    Celeste
    celeste-ai 1.0.0

    Transcribe, upscale, segment and decide, one call each

    Transcribe
    celeste.audio.transcribe
    Groq Whisper, OpenAI, ElevenLabs Scribe, Mistral Voxtral
    Generate music
    celeste.audio.generate
    Google Lyria
    Upscale
    celeste.images.upscale
    Topaz Labs Gigapixel
    Segment
    celeste.images.segment
    SAM 3 on fal.ai
    Edit video
    celeste.videos.edit
    Gemini Omni
    Decide
    celeste.text.decide
    Typed yes/no, choice, score and box answers from TypeSafe Jev
  4. Answers now carry their evidence. Pass the WebSearch tool, and the response's grounding field lists the queries, sources and citations, on OpenAI, Anthropic, Google, xAI and Groq. Reasoning models return their thinking in a reasoning field, and one message can now mix text, images, audio, video and documents.

    Slide text
    Celeste
    celeste-ai 1.0.0

    Answers now show their sources and their reasoning

    from celeste import WebSearch response = await celeste.text.generate( "What changed in the latest uv release?", model="...", tools=[WebSearch()], ) response.grounding.sources response.grounding.citations response.reasoning
    grounding
    Queries, sources and citations, streamed or not
    reasoning
    The model's thinking, with a signature to send back next turn
    list[MessagePart]
    Text, image, audio, video and document parts in one message
    tool_choice
    AUTO, REQUIRED, NONE or one named function
  5. Two changes matter in production. Ordinary requests now retry by themselves, twice, with exponential backoff, on timeouts, rate limits and server errors. Streams are not retried. And with the new otel extra and a tracer provider, every call emits OpenTelemetry spans with the model, the provider and token usage.

    Slide text
    Celeste
    celeste-ai 1.0.0

    Requests retry on their own and show up in your traces

    Retried
    408 429 500 502 503 504
    Plus timeouts and network errors
    2 retries, exponential backoff
    Streams are not retried
    Traced
    gen_ai.request.model
    gen_ai.provider.name
    gen_ai.usage.*
    gen_ai.client.token.usage
    OpenTelemetry, with the otel extra and a tracer provider
  6. Five providers join. Meta's Muse models, OpenRouter, fal, Topaz Labs and TypeSafe. The catalog adds Claude Opus, Sonnet and Haiku 5.5, GPT 6.1 Sol, Gemini 4 Argon and Grok 4.7, and models the providers retired are gone from it.

    Slide text
    Celeste
    celeste-ai 1.0.0

    Five providers join, and the model catalog is current

    Meta
    Muse models
    OpenRouter
    Any model slug
    fal.ai
    SAM 3 segmentation
    Topaz Labs
    Image upscaling
    TypeSafe
    Jev decisions
    New in the catalog
    claude-opus-5-5 claude-sonnet-5-5 claude-haiku-5-5 gpt-6.1-sol gemini-4-argon grok-4.7 flux-3-image eleven_v4
  7. Now the breaking changes. The legacy capability argument is gone, so create clients with a modality and an operation. The web search flag becomes a WebSearch tool. On OpenAI and xAI, named efforts move from thinking budget to thinking level, and the old form only logs a warning, so search for it. APIKey is now AuthHeader, and Topaz reads a renamed environment variable.

    Slide text
    Celeste
    celeste-ai 1.0.0

    Rename these before you upgrade

    capability=Capability.TEXT_GENERATION
    →
    modality=Modality.TEXT,
    operation=Operation.GENERATE
    create_client, list_models, register_models
    web_search=True
    →
    tools=[WebSearch()]
    Same for x_search and code_execution
    thinking_budget="high"
    →
    thinking_level="high"
    OpenAI and xAI. The old form is ignored with a warning.
    APIKey
    TOPAZLABS_API_KEY
    →
    AuthHeader
    TOPAZ_API_KEY
  8. A few more changes to check. On Anthropic, max tokens now defaults to the model's ceiling instead of 1,024, so cap it yourself if you relied on short replies. Every earlier ElevenLabs voice fails validation, and the default is now Janet. OpenAI's video provider is gone, along with Sora 2. And specific exceptions now import from celeste dot exceptions.

    Slide text
    Celeste
    celeste-ai 1.0.0

    More to check after the upgrade

    1,024
    → the ceiling
    Anthropic default max_tokens
    Up to 128,000 tokens per model. Pass max_tokens= to cap replies.
    Rachel
    → Janet
    ElevenLabs default voice
    All 52 earlier ElevenLabs voices, Adam and George too, now fail validation.
    Sora 2
    removed
    OpenAI videos provider
    OpenAI shut down its Videos API. Google, BytePlus and xAI still generate video.
    Specific exceptions and internal types left the top-level celeste import. Import them from celeste.exceptions, celeste.core and the other modules.
  9. To upgrade, pin 1.0.0 with uv add. If you maintain a custom provider, set aside time first, because the header and stream hooks on APIMixin became async. The full list of breaking changes is in section 10 of the changelog. That's Celeste 1.0, live voice sessions in the same Python API.

    Slide text
    celeste-ai 1.0.0
    Celeste

    Upgrade with one line

    uv add "celeste-ai==1.0.0"
    Maintain a custom provider? Plan time first: APIMixin header and stream hooks are async now.
    Every breaking change: CHANGELOG.md, section 10
    github.com/withceleste/celeste-python

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built in New York with ❤️