Skip to content

Latest commit

 

History

History
349 lines (257 loc) · 18.2 KB

File metadata and controls

349 lines (257 loc) · 18.2 KB

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


OPEN SOURCE

title_60

Модульна .NET-бібліотека для створення інтелектуальних застосунків

Змінюйте провайдерів, додавайте RAG, завантажуйте документи — все через єдиний API.


NuGet Downloads Docs .NET


📖 Початок роботи  ·  Довідник API  ·  GitHub ↗



Які пакети потрібно встановити?

dotnet add package Mythosia.AI                    # почніть звідси (це все, що потрібно)
dotnet add package Mythosia.AI.Rag                # опціонально: коли потрібен RAG
dotnet add package Mythosia.VectorDb.Postgres     # опціонально: коли потрібне продуктивне векторне сховище
Крок Пакет Коли
1 Mythosia.AI Почніть звідси — генерація тексту, стрімінг, виклик функцій, структурований вивід (OpenAI / Claude / Gemini / Grok / DeepSeek / Perplexity)
2 Mythosia.AI.Rag Коли потрібен RAG — розбивка тексту, ембедінги, гібридний пошук, реранкінг, InMemory-сховище, завантажувачі документів (Word / Excel / PowerPoint / PDF)
3 Mythosia.VectorDb.Postgres / Qdrant / Pinecone Коли замість InMemory потрібне продуктивне векторне сховище — оберіть одне

Архітектура

graph TD
    subgraph "🔗 Orchestration Layer"
        Rag["<b>Mythosia.AI.Rag</b><br/>RagPipeline · TextSplitters<br/>EmbeddingProviders · HybridSearch · Reranking<br/><i>netstandard2.1 · v7.5.0</i>"]
    end

    subgraph "⚡ Core AI"
        AI["<b>Mythosia.AI</b><br/>OpenAI · Anthropic · Google<br/>xAI · DeepSeek · Perplexity<br/><i>netstandard2.1 · v6.5.0</i>"]
        AIAbs["<b>Mythosia.AI.Abstractions</b><br/>IAIService · shared models<br/><i>netstandard2.1 · v2.3.0</i>"]
    end

    subgraph "🔌 Provider Packages"
        Alibaba["<b>Mythosia.AI.Providers.Alibaba</b><br/>Qwen / Alibaba provider package<br/><i>netstandard2.1 · v1.2.6</i>"]
    end

    subgraph "📄 Document Loaders"
        Office["<b>Mythosia.Documents.Office</b><br/>Word · Excel · PowerPoint<br/><i>netstandard2.1 · v1.1.0</i>"]
        Pdf["<b>Mythosia.Documents.Pdf</b><br/>PdfPig Parser<br/><i>netstandard2.1 · v1.1.1</i>"]
    end

    subgraph "📐 Composite Abstractions"
        RagAbs["<b>Mythosia.AI.Rag.Abstractions</b><br/>ITextSplitter · IEmbeddingProvider<br/>IContextBuilder · IRetrievalStrategy · IReranker<br/>RagDocument<br/><i>netstandard2.1 · v6.2.0</i>"]
    end

    subgraph "🗄️ Vector Stores — оберіть одне або кілька"
        InMem["<b>Mythosia.VectorDb.InMemory</b><br/>Cosine Similarity · TopK · BM25<br/><i>netstandard2.1 · v4.1.0</i>"]
        Pine["<b>Mythosia.VectorDb.Pinecone</b><br/>Managed Index · Namespace · Scope<br/><i>netstandard2.1 · v4.0.1</i>"]
        Pg["<b>Mythosia.VectorDb.Postgres</b><br/>pgvector · HNSW · IVFFlat · HybridSearch<br/><i>net10.0 · v10.7.1</i>"]
        Qd["<b>Mythosia.VectorDb.Qdrant</b><br/>gRPC · Cosine · Euclidean · Dot · HybridSearch<br/><i>netstandard2.1 · v4.1.1</i>"]
    end

    subgraph "🧱 Foundation Abstractions"
        LoaderAbs["<b>Mythosia.Documents.Abstractions</b><br/>IDocumentLoader · IDocumentParser<br/>ParsedDocument · DoclingDocument<br/><i>netstandard2.1 · v1.2.0</i>"]
        VdbAbs["<b>Mythosia.VectorDb.Abstractions</b><br/>IVectorStore · HybridSearchAsync · VectorRecord<br/>VectorFilter · VectorSearchResult · Bm25Tokenizer<br/><i>netstandard2.1 · v4.0.1</i>"]
    end

    %% Core AI internal
    AI --> AIAbs

    %% Orchestration → dependencies
    Rag --> AIAbs
    Rag --> Office
    Rag --> Pdf
    Rag --> RagAbs
    Rag --> InMem

    %% Provider packages → core
    Alibaba --> AI

    %% Composite → Foundation
    RagAbs --> VdbAbs

    %% Loaders → Foundation
    Office --> LoaderAbs
    Pdf --> LoaderAbs

    %% VectorStores → Foundation
    InMem --> VdbAbs
    Pine --> VdbAbs
    Pg --> VdbAbs
    Qd --> VdbAbs
Loading

Демо / тестовий стенд (Chat UI)

Цей репозиторій містить приклад Chat UI на базі Mythosia.AI — запустіть Mythosia.AI.Samples.ChatUi, щоб випробувати бібліотеку на практиці.

Запуск прикладу

Запустіть Mythosia.AI.Samples.ChatUi локально:

# з кореня репозиторію
dotnet run --project samples/Mythosia.AI.Samples.ChatUi
2026-02-27.18-21-02.mp4

Швидкий старт

Базова генерація тексту

using Mythosia.AI;

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

Стрімінг

await foreach (var token in service.StreamAsync("Tell me a story"))
{
    Console.Write(token);
}

Стрімінг з міркуваннями

Усі провайдери з підтримкою міркувань (OpenAI, Claude, Gemini, Grok, DeepSeek) використовують однаковий патерн стрімінгу:

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

Виклик функцій

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?");

Структурований вивід (базовий)

// Десеріалізація відповідей LLM напряму в C# POCO з автовідновленням
var result = await service.GetCompletionAsync<WeatherResponse>(
    "What's the weather in Seoul?");

Структурований вивід (список)

// Колекції працюють напряму — жодних обгорток не потрібно
var items = await service.GetCompletionAsync<List<ItemDto>>(
    "Extract all entities from this document...");

Структурований вивід (стрімінг)

// Стрімте фрагменти тексту в реальному часі + отримуйте фінальний десеріалізований об'єкт
var run = service.BeginStream(prompt).As<MyDto>();

await foreach (var chunk in run.Stream())
    Console.Write(chunk);          // інтерфейс у реальному часі

MyDto dto = await run.Result;      // розпарсено й автоматично відновлено

Політика резюмування діалогу

// Автоматичне резюмування старих повідомлень при довгому діалозі
service.ConversationPolicy = SummaryConversationPolicy.ByMessage(
    triggerCount: 20,
    keepRecentCount: 5
);

// Тригер за кількістю токенів
service.ConversationPolicy = SummaryConversationPolicy.ByToken(
    triggerTokens: 3000,
    keepRecentTokens: 1000
);

// Використовуйте як звичайно — резюмування відбувається автоматично
await service.GetCompletionAsync("Continue our conversation...");

// При стрімінгу викличте політику резюмування явно перед StreamAsync()
await service.ApplySummaryPolicyIfNeededAsync();
await foreach (var chunk in service.StreamAsync("Continue..."))
    Console.Write(chunk.Content);

// Збереження/відновлення резюме між сесіями
string saved = service.ConversationPolicy.CurrentSummary;
policy.LoadSummary(saved);

RAG (генерація з доповненим вилученням)

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

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?");

Підтримувані провайдери

Провайдер Пакет Моделі
OpenAI Mythosia.AI 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.2 Codex / 5.1 / 5 / 5 Pro / 5 Mini / 5 Nano, GPT-4.1 / 4.1 Mini / 4.1 Nano, GPT-4o / 4o Mini, o3 / o3 Pro
Anthropic Mythosia.AI Claude Fable 5, Opus 4.8 / 4.7 / 4.6 / 4.5 / 4.1 / 4, Sonnet 4.6 / 4.5, Haiku 4.5
Google Mythosia.AI Gemini 3.1 Pro Preview, Gemini 3.5 Flash, Gemini 3 Flash Preview, Gemini 3.1 Flash-Lite, Gemini 2.5 Pro/Flash/Flash-Lite
xAI Mythosia.AI Grok 4.3, Grok 4.20 (reasoning / non-reasoning), Grok Build 0.1, Grok 3 Mini
DeepSeek Mythosia.AI Chat, Reasoner
Perplexity Mythosia.AI Sonar, Sonar Pro, Sonar Reasoning Pro
Alibaba / Qwen Mythosia.AI.Providers.Alibaba Qwen Max / Plus / Turbo / Qwen3 / Qwen3.5 варіанти

Пакети

Ядро

Пакет NuGet Опис
Mythosia.AI NuGet Основна бібліотека — вбудовані провайдери, стрімінг, виклик функцій та мультимодальна підтримка
Mythosia.AI.Abstractions NuGet Інтерфейс IAIService та спільні моделі — легкий контрактний пакет для бібліотек
Mythosia.AI.Providers.Alibaba NuGet Пакет провайдера Alibaba / Qwen на базі Mythosia.AI

RAG

Пакет NuGet Опис
Mythosia.AI.Rag NuGet Fluent-розширення RAG для IAIService з API .WithRag()
Mythosia.AI.Rag.Abstractions NuGet Інтерфейси та моделі компонентів RAG-пайплайну

Завантажувачі документів

Пакет NuGet Опис
Mythosia.Documents.Abstractions NuGet Інтерфейси та моделі завантажувачів документів (IDocumentLoader, DoclingDocument)
Mythosia.Documents.Office NuGet OpenXml-парсери для Word / Excel / PowerPoint
Mythosia.Documents.Pdf NuGet PDF-парсер на базі PdfPig

Векторні сховища

Оберіть одне або кілька — усі реалізують IVectorStore з пакету Abstractions.

Пакет NuGet Опис
Mythosia.VectorDb.Abstractions NuGet Контракти IVectorStore · VectorRecord · VectorFilter
Mythosia.VectorDb.InMemory NuGet Сховище в пам'яті — без інфраструктури, ідеально для прототипування
Mythosia.VectorDb.Pinecone NuGet Pinecone HTTP API — ізоляція за індексом/namespace/scope для керованої векторної БД
Mythosia.VectorDb.Postgres NuGet PostgreSQL + pgvector — індекси HNSW / IVFFlat, готово для продакшену
Mythosia.VectorDb.Qdrant NuGet Qdrant gRPC-клієнт — Cosine / Euclidean / Dot, автоматичне розгортання

Структура репозиторію

src/
  core/
    Mythosia.AI/                        # Основна AI-бібліотека
    Mythosia.AI.Abstractions/           # Інтерфейс IAIService та спільні моделі
    Mythosia.AI.Providers.Alibaba/      # Пакет провайдера Alibaba / Qwen
  loaders/
    Mythosia.Documents.Abstractions/    # Контракти завантажувачів документів (IDocumentLoader, DoclingDocument)
    Mythosia.Documents.Office/          # Завантажувачі документів Office (Word/Excel/PowerPoint)
    Mythosia.Documents.Pdf/             # Завантажувач PDF-документів
  rag/
    Mythosia.AI.Rag/                    # RAG Fluent API та пайплайн
    Mythosia.AI.Rag.Abstractions/       # Інтерфейси та моделі RAG (RagDocument)
  vectordb/
    Mythosia.VectorDb.Abstractions/     # Контракти векторних сховищ
    Mythosia.VectorDb.InMemory/         # Векторне сховище в пам'яті
    Mythosia.VectorDb.Pinecone/         # Векторне сховище Pinecone
    Mythosia.VectorDb.Postgres/         # Сховище PostgreSQL + pgvector
    Mythosia.VectorDb.Qdrant/           # Векторне сховище Qdrant
samples/                                # Приклади застосунків
tests/                                  # Проєкти модульних / інтеграційних тестів

Встановлення

dotnet add package Mythosia.AI

Для розширених LINQ-операцій з потоками:

dotnet add package System.Linq.Async

Документація

Ліцензія

Проєкт розповсюджується під ліцензією MIT.

Походження

Спочатку цей проєкт був частиною Mythosia.