Sorted every model list by what a model is made for (#984)
Build and Release / Determine run mode (push) Waiting to run
Build and Release / Read metadata (push) Blocked by required conditions
Build and Release / Sync Flatpak repo (push) Blocked by required conditions
Build and Release / Collect Flatpak artifacts (push) Blocked by required conditions
Build and Release / Verify (push) Waiting to run
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-pc-windows-msvc.exe, win-arm64, windows-latest, aarch64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions

This commit is contained in:
Thorsten Sommer authored and GitHub committed 2026-09-19 17:54:10 +02:00
1 parent e42277beba
commit f9c6075c50
36 files changed
+947 -333

No files matched your search

@@ -27,7 +27,7 @@ public sealed class EmbeddingModelsFamily : ModelFamily
public override ModelVendor Vendor => ModelVendor.UNKNOWN;
/// <inheritdoc />
public override ModelSource Source => new("https://huggingface.co/models?pipeline_tag=feature-extraction", new DateOnly(2026, 9, 12), "Ported from the embedding markers of Provider/ModelKindExtensions.cs. The e5 line says it in its own family, so it is not repeated here.");
public override ModelSource Source => new("https://huggingface.co/models?pipeline_tag=feature-extraction", new DateOnly(2026, 9, 19), "Ported from the embedding markers of Provider/ModelKindExtensions.cs. The e5 line says it in its own family, so it is not repeated here. The four names at the end came later, from going through the widely used embedding models whose name carries none of the words above.");
/// <inheritdoc />
protected override void Declare(ModelFamilyBuilder builder)
@@ -55,5 +55,24 @@ public sealed class EmbeddingModelsFamily : ModelFamily
// General Text Embeddings, from Alibaba. Written as a name part rather than as a substring,
// because three letters appear inside far too many unrelated words:
builder.Modifier("gte").AsSegment().Inherits();
//
// Four that say nothing about embedding in their name, and are embedding models all the
// same. Every one of them is widely used, so leaving them out does not cost an exotic case:
// it puts them among the chat models, where somebody picks one and waits for an answer it
// cannot give. All four are written as name parts rather than as substrings, for the reason
// gte above gives -- short words which appear inside unrelated names.
//
// Note that "instructor" is a different word from the "instruct" which half the chat models
// carry, and a name part never matches half of one.
//
builder.Modifier("stella").AsSegment().Inherits();
builder.Modifier("labse").AsSegment().Inherits();
builder.Modifier("instructor").AsSegment().Inherits();
// Generalizable T5 Retrieval, from Google:
builder.Modifier("gtr").AsSegment().Inherits();
}
}
@@ -19,7 +19,7 @@ public sealed class ImageGenerationModelsFamily : ModelFamily
public override ModelVendor Vendor => ModelVendor.UNKNOWN;
/// <inheritdoc />
public override ModelSource Source => new("https://huggingface.co/models?pipeline_tag=text-to-image", new DateOnly(2026, 9, 12), "Ported from the image generation markers of Provider/ModelKindExtensions.cs. Imagen and the Gemini image models state it in their own families as well, where the capabilities stand next to it.");
public override ModelSource Source => new("https://huggingface.co/models?pipeline_tag=text-to-image", new DateOnly(2026, 9, 12), "Ported from the image generation markers of Provider/ModelKindExtensions.cs. Imagen and the Gemini image models state it in their own families as well, where the capabilities stand next to it. Nano Banana came later, off Google's own catalog at https://generativelanguage.googleapis.com/v1beta/openai/models, read on 2026-09-19.");
/// <inheritdoc />
protected override void Declare(ModelFamilyBuilder builder)
@@ -38,5 +38,9 @@ public sealed class ImageGenerationModelsFamily : ModelFamily
// The other half of Grok Imagine, which the video rule steps aside for:
builder.Modifier("grok-imagine").AsSegment().NotContains("video").Inherits();
// Google's codename for the image model it serves next to Gemini, and the one name in its
// catalog which says nothing about drawing: nano-banana-pro-preview.
builder.Modifier("nano-banana").AsSegment().Inherits();
}
}
@@ -23,7 +23,7 @@ public sealed class RealtimeModelsFamily : ModelFamily
public override ModelVendor Vendor => ModelVendor.UNKNOWN;
/// <inheritdoc />
public override ModelSource Source => new("https://developers.openai.com/api/docs/models/gpt-live-1", new DateOnly(2026, 9, 12), "Ported from the realtime marker of Provider/ModelKindExtensions.cs, where the same precedence was written as the order of two if statements. GPT-Live was added after it turned up in the chat list while testing.");
public override ModelSource Source => new("https://developers.openai.com/api/docs/models/gpt-live-1", new DateOnly(2026, 9, 12), "Ported from the realtime marker of Provider/ModelKindExtensions.cs, where the same precedence was written as the order of two if statements. The live rule was added after GPT-Live turned up in the chat list while testing, and widened when Google's catalog turned out to name its whole two-way line that way: https://ai.google.dev/gemini-api/docs/live");
/// <inheritdoc />
protected override void Declare(ModelFamilyBuilder builder)
@@ -33,10 +33,15 @@ public sealed class RealtimeModelsFamily : ModelFamily
.Kind(ModelKind.REALTIME);
//
// The line which dropped the word. GPT-Live listens and speaks at the same time and leaves
// the thinking to a text model behind it, so there is even less of a conversation in it than
// in the realtime models it succeeds -- and nothing in the name says so any more.
// The other word for the same connection. OpenAI's GPT-Live listens and speaks at once and
// leaves the thinking to a text model behind it, and Google names its whole two-way line
// this way: gemini-3.8-live, gemini-3.1-flash-live-preview, gemini-3.5-live-translate-preview.
// None of them can be talked to the way a chat model can, and all of them stood in the chat
// list until this rule was written.
//
builder.Modifier("gpt-live").AsSegment().Inherits();
// A name part rather than a substring, because four letters sit inside "delivery",
// "olive" and plenty of words which promise no connection at all.
//
builder.Modifier("live").AsSegment().Inherits();
}
}
@@ -19,7 +19,7 @@ public sealed class TextCompletionModelsFamily : ModelFamily
public override ModelVendor Vendor => ModelVendor.UNKNOWN;
/// <inheritdoc />
public override ModelSource Source => new("https://platform.openai.com/docs/api-reference/completions", new DateOnly(2026, 9, 12), "Ported unchanged from the text completion markers of Provider/ModelKindExtensions.cs.");
public override ModelSource Source => new("https://platform.openai.com/docs/api-reference/completions", new DateOnly(2026, 9, 12), "Ported unchanged from the text completion markers of Provider/ModelKindExtensions.cs. Fill-in-the-middle came later, off Mistral's own catalog at https://api.mistral.ai/v1/models, read on 2026-09-19.");
/// <inheritdoc />
protected override void Declare(ModelFamilyBuilder builder)
@@ -32,5 +32,13 @@ public sealed class TextCompletionModelsFamily : ModelFamily
// The one model of the 3.5 line which never learned to chat, next to the ones which did:
builder.Modifier("gpt-3.5-turbo-instruct").AsSegment().Inherits();
//
// Fill in the middle: a model handed the code on either side of a gap rather than a
// conversation. Mistral writes it into the name of the one it serves for that,
// mistral-code-fim-latest, which stood in the chat list because nothing looked for the
// word. Codestral does the same job and says so through its family instead.
//
builder.Modifier("fim").AsSegment().Inherits();
}
}
@@ -16,7 +16,7 @@ public sealed class TranscriptionModelsFamily : ModelFamily
public override ModelVendor Vendor => ModelVendor.UNKNOWN;
/// <inheritdoc />
public override ModelSource Source => new("https://huggingface.co/models?pipeline_tag=automatic-speech-recognition", new DateOnly(2026, 9, 12), "Ported from the transcription markers of Provider/ModelKindExtensions.cs, minus the two which their own families now state.");
public override ModelSource Source => new("https://huggingface.co/models?pipeline_tag=automatic-speech-recognition", new DateOnly(2026, 9, 19), "Ported from the transcription markers of Provider/ModelKindExtensions.cs, minus the two which their own families now state. Canary and asr came later: the markers named neither, so both reached the answer meant for everything nobody wrote a rule for. Alibaba's speech line is documented at https://www.alibabacloud.com/help/en/model-studio/qwen-asr-api-reference.");
/// <inheritdoc />
protected override void Declare(ModelFamilyBuilder builder)
@@ -27,5 +27,25 @@ public sealed class TranscriptionModelsFamily : ModelFamily
builder.Modifier("wav2vec").AsSubstring().Inherits();
builder.Modifier("parakeet").AsSubstring().Inherits();
// NVIDIA's other line of speech models, written plain: canary-1b, canary-1b-flash,
// canary-180m-flash. A segment rather than a substring, because canary is an ordinary
// English word which would otherwise reach into names it has nothing to do with -- the
// same reason the embedding family gives for gte.
builder.Modifier("canary").AsSegment().Inherits();
//
// The abbreviation the whole field goes by, and the one Alibaba names its speech line
// after: qwen3-asr-flash, qwen3-asr-1.7b, fun-asr-realtime. Three letters, so a name part
// and never a substring -- "laser" and "eraser" carry them without meaning any of this.
//
builder.Modifier("asr").AsSegment().Inherits();
//
// Alibaba also builds the line into its audio models, and "audio" is the longer word, so
// without this the speech synthesis rule would answer for a model which only listens. A
// name carrying both words is a transcription model whatever else it is called.
//
builder.Modifier("audio").AsSegment().AlsoContains("asr").Inherits();
}
}