Recognize the models which hold a connection open instead of chatting

This commit is contained in:
Thorsten Sommer committed 2026-09-19 16:58:05 +02:00
1 parent f7350bf86b
commit 987ccf527d
5 files changed
+62 -8

No files matched your search

@@ -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();
}
}