Liking cljdoc? Tell your friends :D

LiteLLM Provider Parity

This is the parity ledger for the providers currently registered by clojure-llm-sdk. It is intentionally not a LiteLLM provider-count target. The SDK should not add unrelated providers just because LiteLLM has them.

Baseline:

  • LiteLLM clone: /tmp/litellm
  • Endpoint matrix: /tmp/litellm/provider_endpoints_support.json
  • Scope: providers registered by llm.sdk/list-providers

SDK Surface Mapping

SDK surfaceLiteLLM endpoint family
complete, streaming, tools, json-schema, reasoningchat_completions
embeddingembeddings
rerankrerank
image-generationimage_generations
transcriptionaudio_transcriptions
ttsaudio_speech
moderationmoderations

LiteLLM endpoint families with no public SDK surface today are not counted as implemented parity: raw provider-native messages/responses pass-through, a2a, interactions, batches, file lifecycle APIs, count_tokens, search, ocr, realtime, vector_stores, assistants, fine_tuning, rag, containers, image edits, and image variations. If those become SDK goals, they need first-class public functions, transports, schemas, fixtures, and live probes.

File/document attachment is different from file lifecycle management. The canonical :part/type :file message part is an SDK surface and is serialized for transports with provider-native file/document input support:

  • OpenAI Responses / Codex: input_file
  • Anthropic Messages: document content block
  • Gemini / Vertex Gemini: fileData or inlineData
  • Bedrock Converse: document content block

OpenAI Chat Completions and Cohere chat reject :file parts explicitly rather than stringifying maps into prompts.

Current Provider Ledger

SDK providerLiteLLM providerConstructor-backed SDK parityRemaining LiteLLM gap for this provider family
:openaiopenaichat, streaming, tools, JSON schema, reasoning, file attachments on Chat Completions, embeddings, moderation, image generation, transcription, TTSgeneral Responses public surface, text completions, image edits/variations, realtime, assistants, vector stores, batches, fine tuning, containers, RAG
:anthropicanthropicmessages-backed chat, streaming, tools, JSON schema, thinking, OAuth/OAT, file/document attachments, native cache markerscount tokens, batches, file lifecycle APIs, skills, public raw messages/responses pass-through
:bedrockbedrockConverse chat, streaming eventstream, tools, guardrails, cachePoint, file/document attachments, image generation, rerankembeddings, count tokens, invoke-model variants, vector search/RAG, provider-specific invoke transforms
:coherecoherenative chat, streaming, tools, citations, textual file/document attachments via documents, embeddings, rerankresponses/messages wrappers and a2a/interactions are not SDK surfaces; keep v1/v2 embed/rerank variants fixture-backed
:gemini-nativegemininative chat, streaming, tools, multimodal, file/document attachments, reasoning, cachedContent handlingcount tokens, file lifecycle APIs, vector search/RAG, realtime, public generateContent pass-through
:vertex-geminivertex_aiVertex Gemini chat, streaming, tools, multimodal, file/document attachments, reasoningembeddings, TTS, OCR, count tokens, fine tuning, RAG/vector stores, realtime, public generateContent pass-through
:vertex-imagenvertex_aiimage generationimage edits/videos and other Vertex AI endpoint families
:openrouteropenrouterchat, streaming, tools, JSON schema, reasoning, provider routing, embeddings, image generation, live model/pricing lookupresponses, image edit, messages/a2a/interactions
:perplexityperplexitychat, streaming, JSON schema, web-search-shaped response/citationsdedicated search endpoint, responses/messages/a2a/interactions
:codexopenaiOpenAI Responses-shaped Codex chat, streaming, tools, file attachments, reasoning, encrypted reasoningnot a general OpenAI Responses API surface
:codex-backendchatgptChatGPT backend Responses/SSE path, OAuth auth-json cache, tools, file attachments, reasoningnot a general ChatGPT automation surface
:ollama-nativeollamanative chat, streaming, tools, multimodal, embeddingsresponses/messages/a2a/interactions wrappers
:voyagevoyageembeddings, rerankcontextual embedding variants need fixture/live coverage
:jinajina_aiembeddings, rerankLiteLLM only declares embeddings in endpoint matrix; rerank is kept because Jina exposes it and fixtures cover it
:elevenlabselevenlabsTTSLiteLLM also declares chat/messages/responses; this SDK currently treats ElevenLabs as a voice provider only
:mistralmistralOpenAI-compatible chat, streaming, tools, JSON schema, embeddingsOCR and audio transcription
:groqgroqOpenAI-compatible chat, streaming, tools, JSON schema, reasoning, transcriptionresponses/messages/a2a/interactions
:deepseekdeepseekOpenAI-compatible chat, streaming, tools, reasoningresponses/messages/a2a/interactions
:kimimoonshotOpenAI-compatible chat, streaming, tools, reasoningresponses/messages/a2a/interactions
:kimi-codeanthropicKimi Code OpenAI-compatible coding endpoint, streaming, tools, reasoning, CLI identity headersAnthropic endpoint families are not implied by Kimi Code
:cerebrascerebrasOpenAI-compatible chat, streaming, tools, reasoningresponses/messages/a2a/interactions
:togethertogether_aiOpenAI-compatible chat, streaming, tools, JSON schema, embeddingsresponses/messages/a2a/interactions
:xaixaiOpenAI-compatible chat, streaming, tools, JSON schema, reasoningrealtime and responses/messages/a2a/interactions
:huggingfacehuggingfaceOpenAI-compatible chat, streaming, tools, JSON schemaembeddings and rerank
:sambanovasambanovaOpenAI-compatible chat, streaming, tools, JSON schemaresponses/messages/a2a/interactions
:deepinfradeepinfraOpenAI-compatible chat, streaming, tools, JSON schemaresponses/messages/a2a/interactions
:lambdalambda_aiOpenAI-compatible chat, streaming, JSON schemaresponses/messages/a2a/interactions
:nebiusnebiusOpenAI-compatible chat, streaming, tools, JSON schema, embeddingsresponses/messages/a2a/interactions
:hyperbolichyperbolicOpenAI-compatible chat, streaming, JSON schemaresponses/messages/a2a/interactions
:novitanovitaOpenAI-compatible chat, streaming, tools, JSON schemaresponses/messages/a2a/interactions
:friendliaifriendliaiOpenAI-compatible chat, streaming, JSON schemaresponses/messages/a2a/interactions
:featherlessfeatherless_aiOpenAI-compatible chat, streaming, JSON schemaresponses/messages/a2a/interactions
:cloudflarecloudflareOpenAI-compatible chat, streaming, JSON schema with caller-supplied account base URLresponses/messages/a2a/interactions; account-scoped model listing
:dashscopedashscopeOpenAI-compatible chat, streaming, tools, JSON schemaresponses/messages/a2a/interactions
:volcenginevolcengineOpenAI-compatible chat, streaming, tools, JSON schemaresponses/messages/a2a/interactions
:fakenonedeterministic test transport onlyexcluded from LiteLLM parity

Hard Rule

Provider coverage must stay constructor-backed. A provider row may not claim an SDK surface unless the profile has the matching transport constructor and the request can be built offline by llm.sdk.provider-coverage-test.

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close