Skip to content

Provider Families

A provider key names a provider registration. A provider family names the kind of client HPD Agent asks that provider to create.

The same key can support more than one family. For example, openai can resolve chat clients from the OpenAI provider package and audio clients from the OpenAI audio provider package when those packages are referenced. A key can also support only one family. onnx-runtime is a chat provider key; it does not provide speech, image, embedding, or hosted-file clients.

Families

HPD Agent uses family-specific provider contracts:

FamilyContractCommon config slot
ChatIChatClientProviderClients.Chat
Text to speechITextToSpeechClientProviderClients.TextToSpeech
Speech to textISpeechToTextClientProviderClients.SpeechToText
RealtimeIRealtimeClientProviderClients.Realtime
Image generationIImageGenerationClientProviderClients.ImageGeneration
EmbeddingsIEmbeddingGeneratorProviderClients.Embeddings
Hosted filesIHostedFileClientProviderClients.HostedFiles
Voice activity detectionIVoiceActivityDetectorProviderfamily-specific runtime options
End-of-turn detectionIEndOfTurnDetectorProviderfamily-specific runtime options

Resolve A Family

Provider resolution is typed. A key must exist for the requested family:

csharp
using HPD.Agent.Providers;

IProviderRegistry registry = new ProviderRegistry();

var chatProvider =
    registry.GetRequiredProvider<IChatClientProvider>("openai");

var ttsProvider =
    registry.GetRequiredProvider<ITextToSpeechClientProvider>("openai");

Both calls require the relevant provider implementations to be registered. If openai is registered only for chat, the text-to-speech lookup fails with a family-specific provider error.

Application code usually does not create a bare registry. AgentBuilder loads provider modules from referenced provider assemblies and exposes the populated registry through builder.ProviderRegistry.

Composite Providers

When multiple provider implementations use the same key for different families, HPD Agent combines them into a composite provider. The composite lets Clients.Chat, Clients.TextToSpeech, Clients.SpeechToText, and other slots use the same provider key while still resolving different client contracts.

That is why this configuration is meaningful when the corresponding provider packages are referenced:

json
{
  "Clients": {
    "Chat": {
      "ProviderKey": "openai",
      "ModelName": "gpt-5-mini"
    },
    "TextToSpeech": {
      "ProviderKey": "openai",
      "ModelName": "gpt-4o-mini-tts"
    }
  }
}

The key is shared. The family is selected by the config slot.

Known Provider Family Boundaries

Provider keySource-confirmed familiesNotes
openaiChat, image generation, embeddings, hosted files, text to speech, speech to text, realtimeChat/image/embedding/hosted-file families require the OpenAI provider package. Audio families require the OpenAI audio provider package. See OpenAI And Azure OpenAI and OpenAI Audio.
azure-openaiChat, image generation, embeddings, hosted filesTraditional Azure OpenAI resource path. Model names are deployment names. See OpenAI And Azure OpenAI.
azure-aiChatAzure AI Projects / Foundry path with OAuth-sensitive endpoint behavior.
elevenlabsSpeech to text, text to speechRealtime Scribe uses the speech-to-text streaming path; it is not the Realtime provider family. See ElevenLabs Audio.
onnx-runtimeChatRequires an existing local model path. Compatible ONNX Runtime GenAI instruct models can opt into structured tool calling. See ONNX Runtime.
anthropicChatChat provider package.
cohereChat, embeddingsNet10-only provider package. Chat streaming currently yields a single final update. See Cohere.
dashscopeChat, embeddingsNet10-only provider package. Chat supports streaming, function tools, reasoning content, and multimodal models through the Cnblogs DashScope adapter. See DashScope.
cerebrasChatProvider package. Chat uses Cerebras' OpenAI-compatible chat completions API. See Cerebras.
deepseekChatProvider package. Chat uses DeepSeek's OpenAI-compatible chat completions API. See DeepSeek.
deepinfraChatChat provider package backed by the shared OpenAI-compatible chat-completions client. See DeepInfra.
fireworksChatNet10-only provider package. Chat uses the shared OpenAI-compatible chat-completions base. See Fireworks AI.
sambanovaChatProvider package. Chat uses SambaNova's OpenAI-compatible chat completions API. See SambaNova.
hyperbolicChatProvider package. Chat uses Hyperbolic's OpenAI-compatible chat completions API. See Hyperbolic.
ovhcloudChatProvider package. Chat uses OVHcloud AI Endpoints' OpenAI-compatible chat completions API. See OVHcloud AI Endpoints.
nscaleChatProvider package. Chat uses Nscale's OpenAI-compatible chat completions API. See Nscale.
veniceChatProvider package. Chat uses Venice.ai's OpenAI-compatible chat completions API. See Venice.ai.
perplexityChatProvider package. Chat uses Perplexity's OpenAI-compatible Sonar API. See Perplexity.
lmstudioChatLocal provider package. Chat uses LM Studio's OpenAI-compatible local server and does not require an API key by default. See LM Studio.
nebiusChatProvider package. Chat uses Nebius Token Factory's OpenAI-compatible API. See Nebius Token Factory.
nvidia-nimChatProvider package. Chat uses NVIDIA NIM's OpenAI-compatible API. See NVIDIA NIM.
siliconflowChatProvider package. Chat uses SiliconFlow's OpenAI-compatible API. See SiliconFlow.
scalewayChatProvider package. Chat uses Scaleway Generative APIs' OpenAI-compatible API. See Scaleway Generative APIs.
zaiChatProvider package. Chat uses Z.AI's OpenAI-compatible API. See Z.AI.
minimaxChatProvider package. Chat uses MiniMax's OpenAI-compatible API. See MiniMax.
togetherChat, embeddingsNet10-only provider package. Chat supports token streaming, function tools, reasoning content, and JSON object responses. See Together AI.
xaiChatChat provider package backed by the shared OpenAI-compatible chat-completions client. Images, embeddings, audio, files, batches, and deferred completions are not registered yet. See xAI.
groqChatNet10-only provider package. Chat uses Groq's OpenAI-compatible chat completions API and supports token streaming, function tools, and JSON object responses. See Groq.
moonshotChatNet10-only provider package. Chat uses Moonshot/Kimi's OpenAI-compatible chat completions API and supports token streaming, function tools, JSON object responses, seed, and optional Kimi thinking fields. See Moonshot.
replicateImage generationNet10-only provider package. Exposes bounded Replicate model predictions that return image URLs through IImageGenerator; it does not register a general prediction/model-run family. See Replicate.
google-aiChatChat provider package.
huggingfaceChatChat provider package.
mistralChatChat provider package.
bedrockChatUses AWS SDK credential behavior.
ollamaChatLocal/server-backed chat provider.

Do not assume a provider key supports every family. Choose the config slot for the client you need, then use a provider key that is registered for that family.

Built for production .NET agent applications.