Skip to content

Repository files navigation

🌐 English · 한국어 · 日本語 · Français · Deutsch · Русский · Українська · 简体中文 · 繁體中文 · Tiếng Việt · ภาษาไทย · Português · Español


OPEN SOURCE

title_60

A modular .NET AI library for building intelligent applications.

Switch providers, add RAG, load documents — all with a unified API.


NuGet Downloads Docs .NET


📖 Get Started  ·  API Reference  ·  GitHub ↗


Demo / Test Bed (Chat UI)

Try models and document search in the Playground before writing integration code.

Watch a walkthrough recorded in the current Playground UI: browse models, switch languages, and explore document and RAG pipeline settings. The video includes English captions.

Mythosia-Playground-English.mp4

Run the sample

Run Mythosia.AI.Samples.ChatUi to try it locally:

# from repo root
dotnet run --project apps/Mythosia.AI.Samples.ChatUi
Playground controls and languages

Search models by name or provider and adjust settings on the left, chat in the center, and review returned processing details in the right-hand Inspector before integrating a model into your app. Use Stop to stop waiting for the active response; explicit speed choices are enabled only for supported model and endpoint combinations, and Fast may cost extra. On smaller screens, Models and Inspector open as drawers; see the Chat UI guide for local setup, documents and pipeline settings.

The Pipeline panel also supports Voyage Context 4, Gemini Embedding 2 and Perplexity contextual embeddings, with keys, dimensions and timeout settings. Documents shows chunk/vector counts and lets you cancel indexing. Saved settings, database reconnection and code examples use the selected configuration; rebuild the index after changing the embedding model or dimensions.

Use the language selector in the header to switch between 13 interface languages without losing your input or settings. All seven providers are visible as collapsed groups; expand one or search for a model.

Why Mythosia.AI?

  • Switch AI providers through one API for chat, streaming, tool calls and structured responses.
  • Build answers from your documents with loaders, embeddings, retrieval and reranking.
  • Keep request settings independent and control ongoing work through a shared Run API.
  • Choose the packages you need, from the core library to optional RAG and vector-store integrations.

What do I need to install?

dotnet add package Mythosia.AI                    # start here (this is all you need)
dotnet add package Mythosia.AI.Rag                # optional: when you need RAG
dotnet add package Mythosia.VectorDb.Postgres     # optional: when you need a production vector store
Step Package When
1 Mythosia.AI Start here — completions, streaming, function calling, structured output (OpenAI / Claude / Gemini / Grok / DeepSeek / Perplexity)
2 Mythosia.AI.Rag When you need RAG — text splitters, embeddings, hybrid search, reranking, InMemory vector store, and document loaders (Word / Excel / PowerPoint / PDF)
3 Mythosia.VectorDb.Postgres / Qdrant / Pinecone When you need a production vector store instead of InMemory — pick one

Prepare different settings without changing another request: CreateRequest(...).WithTemperature(...).GetCompletionAsync() uses an independent, reusable request builder. See the request settings guide for Before/After examples, runs, profiles, and shared-conversation limits.

Completion, streaming, structured output and Run use the same request preparation: apply the actual profile once and validate the effective settings before automatic summaries, history changes or transport. Auxiliary requests retain native provider validation while isolating the parent conversation and output schema. See the request settings guide.

Application calls remain independent when profiles or messages are reused, including ordinary context and tool callbacks. A framework-invoked virtual provider adapter and its first matching base call continue the prepared request even with replacement input. An unrelated helper at that same base entry before forwarding uses BeginIndependentRequestScope(); see the provider adapter rules. Built-in input snapshots keep later calls from rewriting accepted history.

Changed adapter profiles are revalidated before automatic summaries; callback streaming waits for producer cleanup; Claude compaction keeps retained tool dependencies, including input overrides, and protects Mythos 5.1 bound thinking. Stateless OpenAI helpers preserve the parent history guard. See the request adapter guide.

For requests where waiting time matters, use processing speed: WithSpeed keeps the model and reasoning effort, while Processing reports what the provider actually applied. Fast is a paid option on supported combinations.

Quick Start

Basic AI Completion

using Mythosia.AI.Services.OpenAI;

var service = new OpenAIService(apiKey, httpClient);
var response = await service.GetCompletionAsync("Hello!");

Streaming

await using var run = await service.StartRunAsync(
    "Tell me a story",
    onText: text => Console.Write(text));
string answer = (await run.Result).Text;

Reasoning Streaming

OpenAI, Claude, Gemini, Grok, and DeepSeek Flash expose provider-returned reasoning through the same streaming pattern. Observe it with StreamOptions.WithReasoning() after enabling reasoning in the service or request settings:

await using var run = await service.StartRunAsync(
    message, options: new StreamOptions().WithReasoning());
await foreach (var content in run.StreamAsync())
{
    if (content.Type == StreamingContentType.Reasoning)
        Console.Write($"[Think] {content.Content}");
    else if (content.Type == StreamingContentType.Text)
        Console.Write(content.Content);
}

Function Calling

using Mythosia.AI.Extensions;
using Mythosia.AI.Services.OpenAI;

var service = new OpenAIService(apiKey, httpClient)
    .WithFunction(
        "get_weather",
        "Gets the current weather for a location",
        ("location", "The city and country", required: true),
        (string location) => $"The weather in {location} is sunny, 22C"
    );

var response = await service.GetCompletionAsync("What's the weather in Seoul?");

Calls returned in one model response execute sequentially by default. Opt in to bounded parallel handler execution when the registered functions are independent:

using Mythosia.AI.Models.Functions;

service.DefaultPolicy = new FunctionCallingPolicy
{
    ExecutionMode = FunctionExecutionMode.Parallel,
    MaxConcurrency = 3
};

Ordinary batch results are sent back to the model in the provider's original call order. Cancellation skips calls that have not started and supplies matching cancellation results. Started tools receive the token when supported and are awaited so call/result history stays paired. FunctionCallingPolicy.TimeoutSeconds covers the complete streaming round loop, including response headers and the SSE body, without resetting between tool rounds. Policy expiry raises AIServiceException; caller cancellation remains an OperationCanceledException associated with the caller's token. Custom buffering HttpContent has a known exception during SSE body acquisition; see cancellation limits.

When a slow lookup is running, the model may still have useful independent work, such as explaining general packing advice before a weather forecast arrives. Set FunctionDefinition.AllowAsync = true, or use FunctionBuilder.WithAsync(), to let a supported model continue while that function runs. The default is false. GPT-6.1 Sol / GPT-6 Astra / Sol / Luna use this option through the Responses API; unsupported models keep the same handler and wait for its result without sending the unsupported API option. This is separate from C# async handlers and parallel handler scheduling. See async tool calling for the example and request-lifetime behavior.

Image Generation and Editing

Create visual drafts from text or revise existing images through an optional capability shared by OpenAI, Google, and xAI. The image model is independent from the selected chat model:

using Mythosia.AI.Models.Images;
using Mythosia.AI.Services;
using Mythosia.AI.Services.OpenAI;

IImageGenerationService images = new OpenAIService(apiKey, httpClient);
var generated = await images.GenerateImagesAsync(new ImageGenerationRequest
{
    Prompt = "A glass pavilion at sunrise",
    Size = ImageSize.Pixels(1024, 1024),
    OutputFormat = ImageOutputFormat.Png
});

await File.WriteAllBytesAsync("pavilion.png", generated.Images[0].Data);

See the provider guide for generation and editing, or typed image options and migration for the major API change. xAI uses ImageOutputFormat.Auto; choose the output extension from GeneratedImage.MediaType.

Google image presets are model-specific: Flash supports 512/1K/2K/4K, Flash-Lite currently allows 1K, and Pro supports 1K/2K/4K. Flash/Lite offer 14 ratios; Pro offers the 10 standard ratios. All accept Auto. Inspect GetImageCapabilities(model) before presenting choices; unsupported explicit sizes or ratios fail before HTTP in generation and editing. See the model matrix and Flash-Lite documentation discrepancy.

Structured Output (Basic)

// Deserialize LLM responses directly into C# POCOs with auto-recovery
var result = await service.GetCompletionAsync<WeatherResponse>(
    "What's the weather in Seoul?");

Structured Output (List)

// Collection types work directly — no wrapper DTO needed
var items = await service.GetCompletionAsync<List<ItemDto>>(
    "Extract all entities from this document...");

Structured Output (Streaming)

// Stream text chunks in real-time + get final deserialized object
var run = service.BeginStream(prompt).As<MyDto>();

await foreach (var chunk in run.Stream())
    Console.Write(chunk);          // real-time UI

MyDto dto = await run.Result;      // parsed & auto-repaired

Conversation Summary Policy

// Automatically summarize old messages when conversation gets long
service.ConversationPolicy = SummaryConversationPolicy.ByMessage(
    triggerCount: 20,
    keepRecentCount: 5
);

// Token-based trigger
service.ConversationPolicy = SummaryConversationPolicy.ByToken(
    triggerTokens: 3000,
    keepRecentTokens: 1000
);

// Just use as normal — summarization happens automatically
await service.GetCompletionAsync("Continue our conversation...");

// For streaming, call summarization explicitly before StreamAsync()
await service.ApplySummaryPolicyIfNeededAsync();
await foreach (var chunk in service.StreamAsync("Continue..."))
    Console.Write(chunk.Content);

// Save/restore summary across sessions
string saved = service.ConversationPolicy.CurrentSummary;
policy.LoadSummary(saved);

RAG (Retrieval-Augmented Generation)

Choose keyword, semantic or hybrid retrieval without imposing query embeddings on every search. UseKeywordSearch() skips query embeddings; UseRetriever(...) connects an external index; UseHybridSearch(HybridSearchOptions) forwards explicit weights and candidate settings. Document ingestion still creates vectors. See retrieval modes and store support.

dotnet add package Mythosia.AI.Rag
using Mythosia.AI.Rag;
using Mythosia.AI.Services.Anthropic;

var service = new AnthropicService(apiKey, httpClient)
    .WithRag(rag => rag
        .AddDocument("manual.txt")
        .AddDocument("policy.txt")
    );

var response = await service.GetCompletionAsync("What is the refund policy?");

For agent-controlled retrieval, register the store with WithAgenticRag(...) and start work with service.WithMaxRounds(10).StartRunAsync(...). Await run.Result or observe run.StreamAsync() on the same task. See Mythosia.AI.Rag README for full examples.

Keep document context and query intent

A chunk can depend on neighbouring passages, and a search question has a different role from an indexed document. RAG 8.2.0 adds Voyage contextual embeddings and Gemini Embedding 2 for text extracted from TXT, Markdown and PDF files.

using Mythosia.AI.Rag;

var store = await RagStore.BuildAsync(rag => rag
    .UseVoyageEmbedding(voyageApiKey, httpClient)
    .AddDocument("policy.pdf"));
var result = await store.QueryAsync("What is the refund period?");

Configuration and provider contracts: UseVoyageEmbedding(...), UseGeminiEmbedding(...), IRetrievalEmbeddingProvider / EmbeddingDocument (RAG 8.2.0, RAG Abstractions 6.4.0).

Supported Providers

Grok 4.7 requires Mythosia.AI 8.1.0 and Abstractions 4.1.0; see model selection, reasoning and processing speed.

GPT-6.1 Sol: Requires Mythosia.AI 8.2.0 / Abstractions 4.2.0. Selection and migration

GPT-6 Sol/Luna require Mythosia.AI 8.1.0 and Abstractions 4.1.0; see model selection and requirements.

Claude Sonnet 5.5: Requires Mythosia.AI 8.2.0 / Abstractions 4.2.0. Configuration and migration

Claude Opus 5.5 requires Mythosia.AI 8.1.0 and Abstractions 4.1.0; see configuration and migration.

Provider Package Models
OpenAI Mythosia.AI GPT-6.1 Sol / GPT-6 Astra / Sol / Luna, GPT-5.6 Sol / Terra / Luna, GPT-5.5 / 5.5 Pro / 5.4 / 5.4 Mini / 5.4 Nano / 5.4 Pro / 5.3 Codex / 5.2 / 5.2 Pro / 5.1, GPT-4.1 / 4.1 Mini, GPT-4o / 4o Mini
Anthropic Mythosia.AI Claude Fable 5.1 / 5, Mythos 5.1 / 5 (limited), Opus 5.5 / 5 / 4.8 / 4.7 / 4.6 / 4.5, Sonnet 5.5 / 5 / 4.6 / 4.5, Haiku 4.5
Google Mythosia.AI Gemini 3.8 Flash, Gemini 3.7 Flash, Gemini 3.6 Flash, Gemini 3.5 Flash/Flash-Lite, Gemini 3.1 Pro Preview/Flash-Lite, Gemini 3 Flash Preview, Gemini 2.5 Pro/Flash/Flash-Lite, Gemini 3.1 Flash Image, Gemini 3.1 Flash-Lite Image, Gemini 3 Pro Image
xAI Mythosia.AI Grok 4.7, Grok 4.6, Grok 4.5 (default), Grok 4.3, Grok 4.20 (reasoning / non-reasoning), Grok Build
DeepSeek Mythosia.AI Flash (V4.1 Flash), V4 Pro
Perplexity Mythosia.AI Agent API presets and perplexity/sonar
Alibaba / Qwen Mythosia.AI.Providers.Alibaba Qwen Max / Plus / Turbo / Qwen3 / Qwen3.5 variants

Use Perplexity when an answer must reflect recent information and readers need sources they can check. PerplexityService calls the Agent API, while independent search and embeddings let you build retrieval around your own answer model. Perplexity Agent API, Search, and Embeddings.

For long document reviews and tasks with repeated tool calls, select Gemini 3.7 Flash or 3.8 Flash through the existing Google adapter. Support starts with Mythosia.AI 8.0.0 / Mythosia.AI.Abstractions 4.0.0; the service default remains Gemini 3.6 Flash.

For a quick draft followed by a demanding review, explicitly select Grok 4.6 and choose Low through XHigh effort. Support starts with Mythosia.AI 8.0.0 / Mythosia.AI.Abstractions 4.0.0; XAIService keeps Grok 4.5 as its default. See Grok configuration.

For visual drafts or combining references, use Grok Imagine Image 2.0 through IImageGenerationService. Keep OutputFormat = ImageOutputFormat.Auto and choose the extension from MediaType; xAI cannot select an output codec. See typed image options and migration. The chat model stays unchanged.

For quick visual drafts, choose Flare; for precise revisions, choose Sunburst. GPT Image 2.5 generation and editing uses the existing image API with explicit per-request model selection; the OpenAI default remains GPT Image 2.

For chart and screenshot analysis, local tool calls, or a quick answer followed by deeper review, use DeepSeek Flash (AIModels.DeepSeek.Flash, V4.1 Flash). Thinking stays off by default; enable it with WithDeepSeekReasoning(...) or per-request WithReasoning(...).

Select AIModels.DeepSeek.V4Pro (deepseek-v4-pro, V4-Pro-0813) for text-only work; Flash remains the default and supports images. Both expose Low/High/Max thinking and the same output ceiling. To use DeepSeek Responses with the existing completion, streaming, Run and local-function APIs, set UseResponsesApi = true before creating the request. The default stays false so existing applications keep Chat Completions; the choice is captured for the whole request and its tool rounds. Responses resends full conversation and native reasoning history instead of relying on server-stored response IDs.

Reuse an uploaded image across Flash questions with DeepSeekImageFileContent through Chat Completions or Responses; text-only V4 Pro rejects images. These V4 Pro, Responses and Files additions require Mythosia.AI 8.1.0 and Abstractions 4.1.0. See image uploads, reuse and limits.

Claude Fable 5 and Claude Mythos 5 require 30-day data retention and are not eligible for zero-data-retention arrangements. Their adaptive thinking is always on; Mythosia uses low effort with summarized reasoning omitted when callers request reasoning off. Mythos 5 is limited to approved Project Glasswing customers.

Guides and migration

For TXT and Markdown, choose a rule-based splitter according to the document structure. Size validation, overlap and Unicode boundaries are checked; Markdown preserves headings, fenced code and table rows. Character/word counts are not model token limits. Table conditions and code indentation retain their meaning; excessive repeated Markdown context fails explicitly before it can expand without a bound.

To prevent an apparently successful index from overwriting chunks or pairing them with the wrong vectors, indexing validation rejects invalid IDs and embedding batches before persistence; custom splitters must provide unique IDs and inherit document metadata.

Stable file identities, validated query vectors, document-scoped persistence callbacks and URL cancellation prevent duplicate registrations, invalid searches and stale chunks.

To compare local neural sparse retrieval with the existing search, use the optional Mythosia.AI.Rag.Search.Pixie preview. It keeps your dense embedding provider and uses an in-memory PIXIE index; it does not migrate persistent stores or replace the default search. PIXIE setup and comparison guide.

The retrieval evaluation infrastructure supports reusable datasets, search adapters, persistent run reports and regression checks. Extend the same evaluator for new search methods and your own document collections.

Keep request settings independent, stop ongoing work, and collect answers with usage and sources. See the v8 upgrade guide for the six architecture changes, migration examples and validation scope.

Package versions documented here: Mythosia.AI 8.2.0, Abstractions 4.2.0, Alibaba 3.0.2, RAG 8.3.0, RAG Abstractions 6.5.0, VectorDb Abstractions 4.2.0, InMemory 4.3.0, PostgreSQL 10.8.1, MCP 0.1.1-preview, Serving.Abstractions 1.0.0, Serving.Ollama 1.0.0, Serving.LlamaCpp 1.0.0, Serving.Vllm 1.1.0. See the previous patch matrix and previous coordinated release for the remaining retrieval, document and vector package versions.

Pending release — known limitations: Sonnet 5.5 / Opus 5.5 can reject a pause_turn continuation ending in a pending server_tool_use; see Claude continuation limits. A custom buffering HttpContent can delay cancellation or policy timeout during successful SSE body acquisition and keep the Run active; see SSE cancellation limits.

These pages describe pending changes, not a completed release validation. See the release notes for included changes, remaining limitations and validation scope.

RAG 8.1.1 / PostgreSQL 10.8.1 patch: existing RAG wrappers now observe runtime query-rewriter changes, and mixed PostgreSQL hybrid search honors configured vector-search settings. That patch kept core Mythosia.AI at 8.1.0.


Architecture

Mythosia.AI architecture: core AI, RAG orchestration, document loaders, vector stores, shared contracts, MCP integration, and independent Ollama, llama.cpp and vLLM management.

Package dependency details

Arrows show direct package references. Shared packages appear in more than one view; serving clients share management contracts and remain independent of core AI.

Core AI and extensions

%%{init: {"theme":"base","look":"classic","htmlLabels":false,"themeVariables":{"fontFamily":"Arial, sans-serif","fontSize":"18px","primaryTextColor":"#172c46","lineColor":"#64748b","clusterBkg":"#f8fafc","clusterBorder":"#cbd5e1"},"flowchart":{"htmlLabels":false,"curve":"linear","nodeSpacing":20,"rankSpacing":36,"padding":16,"wrappingWidth":300},"fontFamily":"Arial, sans-serif","fontSize":18}}%%
flowchart LR
    subgraph Extensions["Provider & tool extensions"]
        Alibaba["Mythosia.AI.<br/>Providers.Alibaba"]:::extension
        Mcp["Mythosia.AI.Mcp"]:::extension
    end
    AI["Mythosia.AI"]:::core
    AIAbs["Mythosia.AI.<br/>Abstractions"]:::contract
    subgraph Independent["Independent server management"]
        ServingAbs["Mythosia.AI.Serving.<br/>Abstractions"]:::contract
        OllamaServing["Mythosia.AI.<br/>Serving.Ollama"]:::extension
        LlamaCppServing["Mythosia.AI.<br/>Serving.LlamaCpp"]:::extension
        VllmServing["Mythosia.AI.<br/>Serving.Vllm"]:::extension
        OllamaServing --> ServingAbs
        LlamaCppServing --> ServingAbs
        VllmServing --> ServingAbs
    end
    Alibaba --> AI
    Mcp --> AI
    AI --> AIAbs
    classDef core fill:#eff6ff,stroke:#93b4de,color:#172c46,stroke-width:1.5px
    classDef rag fill:#eef8f5,stroke:#83b4a4,color:#164638,stroke-width:1.5px
    classDef extension fill:#f5f0fc,stroke:#b9a4d4,color:#403054,stroke-width:1.5px
    classDef documents fill:#fff8e9,stroke:#d4b879,color:#61491d,stroke-width:1.5px
    classDef store fill:#edf7fb,stroke:#8dbaca,color:#194758,stroke-width:1.5px
    classDef contract fill:#f8fafc,stroke:#a7b2c2,color:#334155,stroke-width:1.5px
Loading

RAG and document loading

%%{init: {"theme":"base","look":"classic","htmlLabels":false,"themeVariables":{"fontFamily":"Arial, sans-serif","fontSize":"18px","primaryTextColor":"#172c46","lineColor":"#64748b","clusterBkg":"#f8fafc","clusterBorder":"#cbd5e1"},"flowchart":{"htmlLabels":false,"curve":"linear","nodeSpacing":20,"rankSpacing":36,"padding":16,"wrappingWidth":300},"fontFamily":"Arial, sans-serif","fontSize":18}}%%
flowchart LR
    Rag["Mythosia.AI.Rag"]:::rag
    subgraph Contracts["AI & RAG contracts"]
        AIAbs["Mythosia.AI.<br/>Abstractions"]:::contract
        RagAbs["Mythosia.AI.Rag.<br/>Abstractions"]:::contract
    end
    InMem["Mythosia.VectorDb.<br/>InMemory"]:::store
    subgraph Documents["Document loading"]
        Office["Mythosia.Documents.<br/>Office"]:::documents
        Pdf["Mythosia.Documents.<br/>Pdf"]:::documents
        LoaderAbs["Mythosia.Documents.<br/>Abstractions"]:::contract
        Office --> LoaderAbs
        Pdf --> LoaderAbs
    end
    Rag --> AIAbs
    Rag --> RagAbs
    Rag --> InMem
    Rag --> Office
    Rag --> Pdf
    classDef core fill:#eff6ff,stroke:#93b4de,color:#172c46,stroke-width:1.5px
    classDef rag fill:#eef8f5,stroke:#83b4a4,color:#164638,stroke-width:1.5px
    classDef extension fill:#f5f0fc,stroke:#b9a4d4,color:#403054,stroke-width:1.5px
    classDef documents fill:#fff8e9,stroke:#d4b879,color:#61491d,stroke-width:1.5px
    classDef store fill:#edf7fb,stroke:#8dbaca,color:#194758,stroke-width:1.5px
    classDef contract fill:#f8fafc,stroke:#a7b2c2,color:#334155,stroke-width:1.5px
Loading

Vector stores and search

%%{init: {"theme":"base","look":"classic","htmlLabels":false,"themeVariables":{"fontFamily":"Arial, sans-serif","fontSize":"18px","primaryTextColor":"#172c46","lineColor":"#64748b","clusterBkg":"#f8fafc","clusterBorder":"#cbd5e1"},"flowchart":{"htmlLabels":false,"curve":"linear","nodeSpacing":20,"rankSpacing":36,"padding":16,"wrappingWidth":300},"fontFamily":"Arial, sans-serif","fontSize":18}}%%
flowchart LR
    subgraph Stores["Vector stores"]
        InMem["Mythosia.VectorDb.<br/>InMemory"]:::store
        Pg["Mythosia.VectorDb.<br/>Postgres"]:::store
        Qd["Mythosia.VectorDb.<br/>Qdrant"]:::store
        Pine["Mythosia.VectorDb.<br/>Pinecone"]:::store
    end
    subgraph Search["Optional neural search"]
        Pixie["Mythosia.AI.Rag.<br/>Search.Pixie"]:::rag
    end
    RagAbs["Mythosia.AI.Rag.<br/>Abstractions"]:::contract
    VdbAbs["Mythosia.VectorDb.<br/>Abstractions"]:::contract
    InMem --> VdbAbs
    RagAbs --> VdbAbs
    Pg --> VdbAbs
    Qd --> VdbAbs
    Pine --> VdbAbs
    Pixie --> VdbAbs
    classDef core fill:#eff6ff,stroke:#93b4de,color:#172c46,stroke-width:1.5px
    classDef rag fill:#eef8f5,stroke:#83b4a4,color:#164638,stroke-width:1.5px
    classDef extension fill:#f5f0fc,stroke:#b9a4d4,color:#403054,stroke-width:1.5px
    classDef documents fill:#fff8e9,stroke:#d4b879,color:#61491d,stroke-width:1.5px
    classDef store fill:#edf7fb,stroke:#8dbaca,color:#194758,stroke-width:1.5px
    classDef contract fill:#f8fafc,stroke:#a7b2c2,color:#334155,stroke-width:1.5px
Loading

Packages

Core

Package NuGet Description
Mythosia.AI NuGet Core library — built-in providers, streaming, function calling, and multimodal support
Mythosia.AI.Abstractions NuGet IAIService interface and shared models — lightweight contract package for libraries
Mythosia.AI.Providers.Alibaba NuGet Alibaba / Qwen provider package built on top of Mythosia.AI

RAG

Package NuGet Description
Mythosia.AI.Rag NuGet Fluent RAG extension for IAIService with .WithRag() API
Mythosia.AI.Rag.Abstractions NuGet Interfaces and models for RAG pipeline components

Document Loaders

Package NuGet Description
Mythosia.Documents.Abstractions NuGet Document loader interfaces and models (IDocumentLoader, DoclingDocument)
Mythosia.Documents.Office NuGet OpenXml parsers for Word / Excel / PowerPoint
Mythosia.Documents.Pdf NuGet PDF parser via PdfPig

Vector Stores

Pick one or more — all implement IVectorStore from the Abstractions package.

Package NuGet Description
Mythosia.VectorDb.Abstractions NuGet IVectorStore · IVectorStoreDiagnostics · VectorRecord · VectorFilter contracts
Mythosia.VectorDb.InMemory NuGet In-memory store — zero infrastructure, great for prototyping
Mythosia.VectorDb.Pinecone NuGet Pinecone HTTP API — index/namespace/scope isolation for managed vector DB
Mythosia.VectorDb.Postgres NuGet PostgreSQL + pgvector — HNSW / IVFFlat indexes, production-ready
Mythosia.VectorDb.Qdrant NuGet Qdrant gRPC client — Cosine / Euclidean / Dot, auto-provisioning

Optional store inspection uses IVectorStoreDiagnostics from Mythosia.VectorDb.Abstractions. InMemory 4.3.0 no longer depends on RAG abstractions; RagDiagnostics and RagDiagnosticSession remain in RAG 8.3.0. Upgrade RAG and InMemory together, and migrate old IRagDiagnosticsStore casts. Diagnostics and migration.

This release intentionally includes a breaking interface migration in the minor versions RAG 8.3.0 and InMemory 4.3.0. Treat it as a release-specific versioning exception: existing InMemory callers using IRagDiagnosticsStore must migrate even though the major numbers remain unchanged.

Serving — Control Plane

Build model selectors and server status screens with one management API for running Ollama, llama.cpp and vLLM instances. IModelServer reads health, models and capabilities; discovery never loads or downloads a model. These clients connect to existing servers and do not host runtimes or send chat requests.

Optional IModelLifecycle, IModelDownloader and IModelMetricsProvider expose explicit operations where available. Check the connected server's capabilities: Unknown means insufficient evidence, not Unsupported; Supported does not guarantee success for every model. Unknown installation and load states remain unknown.

Live checks passed on Ollama 0.34.4 (qwen2.5:0.5b), llama.cpp b11146 in Router and single-model modes (Qwen2.5 0.5B, Q4_K_M), and vLLM 0.30.0 (a small Qwen model). These results apply to the tested configurations. See the serving management guide for operation coverage and runtime limitations.

Package NuGet Description
Mythosia.AI.Serving.Abstractions NuGet Shared management contracts and immutable server/model/capability snapshots.
Mythosia.AI.Serving.Ollama NuGet Ollama inventory, health, explicit preload/unload and streamed model downloads.
Mythosia.AI.Serving.LlamaCpp NuGet llama.cpp inspection, guarded router lifecycle/downloads and metrics without autoload.
Mythosia.AI.Serving.Vllm NuGet vLLM model cards, health, version and label-preserving metrics; existing concrete API retained.

Repository Structure

src/
  core/
    Mythosia.AI/                        # Core AI service library
    Mythosia.AI.Abstractions/           # IAIService interface and shared models
    Mythosia.AI.Providers.Alibaba/      # Alibaba / Qwen provider package
  loaders/
    Mythosia.Documents.Abstractions/    # Document loader contracts (IDocumentLoader, DoclingDocument)
    Mythosia.Documents.Office/          # Office document loaders (Word/Excel/PowerPoint)
    Mythosia.Documents.Pdf/             # PDF document loader
  rag/
    Mythosia.AI.Rag/                    # RAG fluent API and pipeline
    Mythosia.AI.Rag.Abstractions/       # RAG interfaces and models (RagDocument)
  serving/
    Mythosia.AI.Serving.Abstractions/  # Shared model-server management contracts
    Mythosia.AI.Serving.Ollama/        # Ollama management and explicit downloads
    Mythosia.AI.Serving.LlamaCpp/      # llama.cpp single-model/router management
    Mythosia.AI.Serving.Vllm/          # vLLM management and metrics
  vectordb/
    Mythosia.VectorDb.Abstractions/     # Vector store contracts
    Mythosia.VectorDb.InMemory/         # In-memory vector store
    Mythosia.VectorDb.Pinecone/         # Pinecone vector store
    Mythosia.VectorDb.Postgres/         # PostgreSQL + pgvector store
    Mythosia.VectorDb.Qdrant/           # Qdrant vector store
apps/                                   # Applications (samples & tools)
tests/                                  # Unit/integration test projects

Installation

dotnet add package Mythosia.AI

For advanced LINQ operations with streams:

dotnet add package System.Linq.Async

Documentation

For quick drafts followed by deeper review, or answers grounded in current information and hosted documents, see reasoning and search with sources.

Validate processing speed against real providers

From the repository root, run:

./build/test-inference-speed-live.ps1

The paid suite uses the existing test Key Vault setup and synthetic prompts. It checks Anthropic Opus 5.5, OpenAI GPT-6 Astra, Gemini 3.8 Flash and Grok 4.6 across ProviderDefault/Standard/Fast and completion/Run paths: 24 cases. Account access errors, absent applied-mode reporting and server downgrades do not count as successful Fast validation; every case must pass without skips. Reports go to artifacts/test-results/inference-speed-live. Use -NoBuild only after building the current Release tests. This command documents how to run the suite, not a claim that the current account has passed it.

License

This project is licensed under the MIT License.

Originally

This project was originally part of Mythosia.

Choose model controls using shared capability definitions.

About

Unified .NET AI library with multi-provider support (OpenAI, Anthropic, Google, DeepSeek, Perplexity) and RAG extensions

Topics

Resources

Contributing

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages