🌐 English · 한국어 · 日本語 · Français · Deutsch · Русский · Українська · 简体中文 · 繁體中文 · Tiếng Việt · ภาษาไทย · Português · Español
Switch providers, add RAG, load documents — all with a unified API.
📖 Get Started · API Reference · GitHub ↗
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 Mythosia.AI.Samples.ChatUi to try it locally:
# from repo root
dotnet run --project apps/Mythosia.AI.Samples.ChatUiPlayground 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.
- 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.
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.
using Mythosia.AI.Services.OpenAI;
var service = new OpenAIService(apiKey, httpClient);
var response = await service.GetCompletionAsync("Hello!");await using var run = await service.StartRunAsync(
"Tell me a story",
onText: text => Console.Write(text));
string answer = (await run.Result).Text;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);
}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.
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.
// Deserialize LLM responses directly into C# POCOs with auto-recovery
var result = await service.GetCompletionAsync<WeatherResponse>(
"What's the weather in Seoul?");// Collection types work directly — no wrapper DTO needed
var items = await service.GetCompletionAsync<List<ItemDto>>(
"Extract all entities from this document...");// 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// 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);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.Ragusing 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.
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).
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 |
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.
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_turncontinuation ending in a pendingserver_tool_use; see Claude continuation limits. A custom bufferingHttpContentcan 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.AIat 8.1.0.
Arrows show direct package references. Shared packages appear in more than one view; serving clients share management contracts and remain independent of core AI.
%%{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
%%{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
%%{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
| Package | NuGet | Description |
|---|---|---|
| Mythosia.AI | Core library — built-in providers, streaming, function calling, and multimodal support | |
| Mythosia.AI.Abstractions | IAIService interface and shared models — lightweight contract package for libraries |
|
| Mythosia.AI.Providers.Alibaba | Alibaba / Qwen provider package built on top of Mythosia.AI |
| Package | NuGet | Description |
|---|---|---|
| Mythosia.AI.Rag | Fluent RAG extension for IAIService with .WithRag() API |
|
| Mythosia.AI.Rag.Abstractions | Interfaces and models for RAG pipeline components |
| Package | NuGet | Description |
|---|---|---|
| Mythosia.Documents.Abstractions | Document loader interfaces and models (IDocumentLoader, DoclingDocument) |
|
| Mythosia.Documents.Office | OpenXml parsers for Word / Excel / PowerPoint | |
| Mythosia.Documents.Pdf | PDF parser via PdfPig |
Pick one or more — all implement
IVectorStorefrom the Abstractions package.
| Package | NuGet | Description |
|---|---|---|
| Mythosia.VectorDb.Abstractions | IVectorStore · IVectorStoreDiagnostics · VectorRecord · VectorFilter contracts |
|
| Mythosia.VectorDb.InMemory | In-memory store — zero infrastructure, great for prototyping | |
| Mythosia.VectorDb.Pinecone | Pinecone HTTP API — index/namespace/scope isolation for managed vector DB | |
| Mythosia.VectorDb.Postgres | PostgreSQL + pgvector — HNSW / IVFFlat indexes, production-ready | |
| Mythosia.VectorDb.Qdrant | 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.
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 | Shared management contracts and immutable server/model/capability snapshots. | |
| Mythosia.AI.Serving.Ollama | Ollama inventory, health, explicit preload/unload and streamed model downloads. | |
| Mythosia.AI.Serving.LlamaCpp | llama.cpp inspection, guarded router lifecycle/downloads and metrics without autoload. | |
| Mythosia.AI.Serving.Vllm | vLLM model cards, health, version and label-preserving metrics; existing concrete API retained. |
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
dotnet add package Mythosia.AIFor advanced LINQ operations with streams:
dotnet add package System.Linq.AsyncFor quick drafts followed by deeper review, or answers grounded in current information and hosted documents, see reasoning and search with sources.
- 📖 Full Documentation Site — DocFX-generated docs covering all features, RAG pipeline, vector stores, and API reference
- Basic Usage Guide
- Mythosia.AI README Full API reference with function calling, streaming, and model configuration
- Mythosia.AI.Rag README RAG pipeline usage and custom implementations
- Document Loaders
- Release Notes
From the repository root, run:
./build/test-inference-speed-live.ps1The 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.
This project is licensed under the MIT License.
This project was originally part of Mythosia.