# Noizu Labs, GenAI Wrapper v0.3.2 - Table of Contents

Generative AI Wrapper: access multiple apis through single standardized interface.

## Pages

- [Contributing](readme.md)
- [Change Log](changelog.md)
- [Todo](todo.md)
- [CONTRIBUTING](contributing.md)
- [LICENSE](license.md)

## Modules

- [GenAI.Provider.Anthropic](GenAI.Provider.Anthropic.md): This module implements the GenAI provider for Groq AI.

- [GenAI.Provider.Anthropic.Encoder](GenAI.Provider.Anthropic.Encoder.md)
- [GenAI.Provider.Anthropic.EncoderProtocol](GenAI.Provider.Anthropic.EncoderProtocol.md): Encoders use their module's EncoderProtocol to prep messages and tool definitions
To make future extensibility for third parties straight forward. If a new message
type, or tool type is added one simply needs to implement a EncoderProtocol for it
and most cases you can simply cast it to generic known type and then invoke the protocol
again.

- [GenAI.Provider.Anthropic.EncoderProtocolHelper](GenAI.Provider.Anthropic.EncoderProtocolHelper.md)
- [GenAI.Provider.Anthropic.Models](GenAI.Provider.Anthropic.Models.md): Defines some common Anthropic models.

- [GenAI.Provider.Cerebras](GenAI.Provider.Cerebras.md): Module for interacting with the Cerebras inference API.
- [GenAI.Provider.Cerebras.Encoder](GenAI.Provider.Cerebras.Encoder.md)
- [GenAI.Provider.Cerebras.EncoderProtocol](GenAI.Provider.Cerebras.EncoderProtocol.md): Encoders use their module's EncoderProtocol to prep messages and tool definitions
To make future extensibility for third parties straight forward. If a new message
type, or tool type is added one simply needs to implement a EncoderProtocol for it
and most cases you can simply cast it to generic known type and then invoke the protocol
again.

- [GenAI.Provider.Cerebras.Models](GenAI.Provider.Cerebras.Models.md)
- [GenAI.Provider.DeepSeek](GenAI.Provider.DeepSeek.md): Module for interacting with the OpenAI API.

- [GenAI.Provider.DeepSeek.Encoder](GenAI.Provider.DeepSeek.Encoder.md)
- [GenAI.Provider.DeepSeek.EncoderProtocol](GenAI.Provider.DeepSeek.EncoderProtocol.md): Encoders use their module's EncoderProtocol to prep messages and tool definitions
To make future extensibility for third parties straight forward. If a new message
type, or tool type is added one simply needs to implement a EncoderProtocol for it
and most cases you can simply cast it to generic known type and then invoke the protocol
again.

- [GenAI.Provider.DeepSeek.Models](GenAI.Provider.DeepSeek.Models.md)
- [GenAI.Provider.Gemini](GenAI.Provider.Gemini.md): This module implements the GenAI provider for Mistral AI.

- [GenAI.Provider.Gemini.Encoder](GenAI.Provider.Gemini.Encoder.md)
- [GenAI.Provider.Gemini.EncoderProtocol](GenAI.Provider.Gemini.EncoderProtocol.md): Encoders use their module's EncoderProtocol to prep messages and tool definitions
To make future extensibility for third parties straight forward. If a new message
type, or tool type is added one simply needs to implement a EncoderProtocol for it
and most cases you can simply cast it to generic known type and then invoke the protocol
again.

- [GenAI.Provider.Gemini.EncoderProtocolHelper](GenAI.Provider.Gemini.EncoderProtocolHelper.md)
- [GenAI.Provider.Gemini.Image](GenAI.Provider.Gemini.Image.md): Gemini Imagen image-generation provider — a SYNC media provider (ADR-016 / ede43647).
- [GenAI.Provider.Gemini.Models](GenAI.Provider.Gemini.Models.md)
- [GenAI.Provider.Groq](GenAI.Provider.Groq.md): This module implements the GenAI provider for Groq AI.

- [GenAI.Provider.Groq.Encoder](GenAI.Provider.Groq.Encoder.md)
- [GenAI.Provider.Groq.EncoderProtocol](GenAI.Provider.Groq.EncoderProtocol.md): Encoders use their module's EncoderProtocol to prep messages and tool definitions
To make future extensibility for third parties straight forward. If a new message
type, or tool type is added one simply needs to implement a EncoderProtocol for it
and most cases you can simply cast it to generic known type and then invoke the protocol
again.

- [GenAI.Provider.Groq.Models](GenAI.Provider.Groq.Models.md): Defines some common Groq models.

- [GenAI.Provider.LiteLLM](GenAI.Provider.LiteLLM.md): Module for interacting with a LiteLLM proxy.
- [GenAI.Provider.LiteLLM.Encoder](GenAI.Provider.LiteLLM.Encoder.md)
- [GenAI.Provider.LiteLLM.EncoderProtocol](GenAI.Provider.LiteLLM.EncoderProtocol.md): Encoders use their module's EncoderProtocol to prep messages and tool definitions
To make future extensibility for third parties straight forward. If a new message
type, or tool type is added one simply needs to implement a EncoderProtocol for it
and most cases you can simply cast it to generic known type and then invoke the protocol
again.

- [GenAI.Provider.LiteLLM.Media](GenAI.Provider.LiteLLM.Media.md): LiteLLM media-generation provider (ADR-016) — the proxy can host many media model types,
so this declares the full set and dispatches by output modality
- [GenAI.Provider.LiteLLM.Models](GenAI.Provider.LiteLLM.Models.md)
- [GenAI.Provider.Media.OpenAICompat](GenAI.Provider.Media.OpenAICompat.md): Shared OpenAI-compatible media-generation calls (ADR-016), parameterized by base_url +
API key so the OpenAI providers and the LiteLLM proxy providers share ONE definition of
each endpoint's request build + response decode (dmitri's "one definition" principle)
- [GenAI.Provider.MediaHelpers](GenAI.Provider.MediaHelpers.md): Shared helpers for the sync media-generation providers (ADR-016 / ede43647): API-key
resolution (request -> env, fast-fail when absent), prompt-text extraction, and the
base64-image decode into the `{:ok, %{data, mime, meta}}` return contract. One
definition reused by the OpenAI + Gemini image providers (and future media providers).

- [GenAI.Provider.Mistral](GenAI.Provider.Mistral.md): This module implements the GenAI provider for Mistral AI.

- [GenAI.Provider.Mistral.Encoder](GenAI.Provider.Mistral.Encoder.md)
- [GenAI.Provider.Mistral.EncoderProtocol](GenAI.Provider.Mistral.EncoderProtocol.md): Encoders use their module's EncoderProtocol to prep messages and tool definitions
To make future extensibility for third parties straight forward. If a new message
type, or tool type is added one simply needs to implement a EncoderProtocol for it
and most cases you can simply cast it to generic known type and then invoke the protocol
again.

- [GenAI.Provider.Mistral.Models](GenAI.Provider.Mistral.Models.md): Defines some common Mistral models.

- [GenAI.Provider.Ollama](GenAI.Provider.Ollama.md): Module for interacting with the Ollama API.
Ollama provides local LLM inference with various open-source models.

- [GenAI.Provider.Ollama.Encoder](GenAI.Provider.Ollama.Encoder.md)
- [GenAI.Provider.Ollama.EncoderProtocol](GenAI.Provider.Ollama.EncoderProtocol.md): Encoders use their module's EncoderProtocol to prep messages and tool definitions
To make future extensibility for third parties straight forward. If a new message
type, or tool type is added one simply needs to implement a EncoderProtocol for it
and most cases you can simply cast it to generic known type and then invoke the protocol
again.
- [GenAI.Provider.Ollama.Models](GenAI.Provider.Ollama.Models.md)
- [GenAI.Provider.OpenAI](GenAI.Provider.OpenAI.md): Module for interacting with the OpenAI API.

- [GenAI.Provider.OpenAI.Encoder](GenAI.Provider.OpenAI.Encoder.md)
- [GenAI.Provider.OpenAI.EncoderProtocol](GenAI.Provider.OpenAI.EncoderProtocol.md): Encoders use their module's EncoderProtocol to prep messages and tool definitions
To make future extensibility for third parties straight forward. If a new message
type, or tool type is added one simply needs to implement a EncoderProtocol for it
and most cases you can simply cast it to generic known type and then invoke the protocol
again.

- [GenAI.Provider.OpenAI.Image](GenAI.Provider.OpenAI.Image.md): OpenAI image-generation provider (gpt-image-1) — a SYNC media provider (ADR-016 / ede43647).
- [GenAI.Provider.OpenAI.Models](GenAI.Provider.OpenAI.Models.md)
- [GenAI.Provider.OpenAI.Speech](GenAI.Provider.OpenAI.Speech.md): OpenAI text-to-speech provider — a SYNC media provider (ADR-016).
- [GenAI.Provider.OpenAI.Transcription](GenAI.Provider.OpenAI.Transcription.md): OpenAI speech-to-text (transcription) provider — a SYNC media provider (ADR-016).
- [GenAI.Provider.Suno](GenAI.Provider.Suno.md): Suno music / sound generation provider (ADR-016). NOT an LLM — media only.
- [GenAI.Provider.XAI](GenAI.Provider.XAI.md): Module for interacting with the XAI API.

- [GenAI.Provider.XAI.Encoder](GenAI.Provider.XAI.Encoder.md)
- [GenAI.Provider.XAI.EncoderProtocol](GenAI.Provider.XAI.EncoderProtocol.md): Encoders use their module's EncoderProtocol to prep messages and tool definitions
To make future extensibility for third parties straight forward. If a new message
type, or tool type is added one simply needs to implement a EncoderProtocol for it
and most cases you can simply cast it to generic known type and then invoke the protocol
again.

- [GenAI.Provider.XAI.Models](GenAI.Provider.XAI.Models.md)
- [GenAI.Provider.ZAI](GenAI.Provider.ZAI.md): Module for interacting with the Z.AI (Zhipu GLM) API.
- [GenAI.Provider.ZAI.Encoder](GenAI.Provider.ZAI.Encoder.md)
- [GenAI.Provider.ZAI.EncoderProtocol](GenAI.Provider.ZAI.EncoderProtocol.md): Encoders use their module's EncoderProtocol to prep messages and tool definitions
To make future extensibility for third parties straight forward. If a new message
type, or tool type is added one simply needs to implement a EncoderProtocol for it
and most cases you can simply cast it to generic known type and then invoke the protocol
again.

- [GenAI.Provider.ZAI.Models](GenAI.Provider.ZAI.Models.md)

