mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-10-17 14:18:00 +00:00
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
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:
1 parent
e42277beba
commit
f9c6075c50
36 files changed
+947
-333
No files matched your search
@@ -9,9 +9,10 @@ namespace AIStudio.Models.Alibaba;
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The previous rules answered for these with the Model Studio default and told them they call
|
||||
/// functions. The prefix is Alibaba's own: the app filters the catalog by "text-embedding-" to find
|
||||
/// them, which is also why the rule may be written that broadly -- bound to this provider, it can
|
||||
/// only ever meet the models Alibaba names that way.
|
||||
/// functions. The prefix is Alibaba's own, and the rule may be written that broadly because it is
|
||||
/// bound to this provider: it can only ever meet the models Alibaba names that way. The provider
|
||||
/// carried the same prefix as a filter of its own until it started asking here, so this is now the
|
||||
/// only place which says what those names mean.
|
||||
/// </remarks>
|
||||
public sealed class ModelStudioEmbeddingFamily : ModelFamily
|
||||
{
|
||||
@@ -19,7 +20,7 @@ public sealed class ModelStudioEmbeddingFamily : ModelFamily
|
||||
public override ModelVendor Vendor => ModelVendor.ALIBABA;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override ModelSource Source => new("https://www.alibabacloud.com/help/en/model-studio/embedding", new DateOnly(2026, 9, 11), "Provider/AlibabaCloud/ProviderAlibabaCloud.cs adds these in GetEmbeddingModels and filters the catalog by the prefix \"text-embedding-\".");
|
||||
public override ModelSource Source => new("https://www.alibabacloud.com/help/en/model-studio/embedding", new DateOnly(2026, 9, 11), "Provider/AlibabaCloud/ProviderAlibabaCloud.cs used to add these in GetEmbeddingModels and to filter the catalog by the prefix \"text-embedding-\"; it asks this rule instead.");
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Declare(ModelFamilyBuilder builder) =>
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
using AIStudio.Provider;
|
||||
|
||||
using static AIStudio.Provider.Capability;
|
||||
|
||||
namespace AIStudio.Models.Google;
|
||||
|
||||
/// <summary>
|
||||
/// AQA, which answers a question out of the passages it was handed.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Attributed Question Answering, and the one entry in Google's catalog whose whole name is three
|
||||
/// letters. It answers on generateAnswer rather than on generateContent, together with the semantic
|
||||
/// retriever, and what comes back is the answer, the passages it rests on, and an estimate of
|
||||
/// whether the question could be answered from them at all.
|
||||
///
|
||||
/// Bound to Google, and it has to be: three letters are three letters, and a rule that short has no
|
||||
/// business meeting a name from somewhere else. The catalog holds exactly one model it can match.
|
||||
/// </remarks>
|
||||
public sealed class AqaFamily : ModelFamily
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override ModelVendor Vendor => ModelVendor.GOOGLE;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override ModelSource Source => new("https://ai.google.dev/gemini-api/docs/semantic_retrieval", new DateOnly(2026, 9, 19), "Reads 7,168 tokens and writes 1,024, which is a size for an answer rather than for a conversation. The route it answers on is generateAnswer, so nothing the app sends over the chat completion API reaches it.");
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Declare(ModelFamilyBuilder builder) =>
|
||||
builder.Rule("aqa").AsExact().OnlyOn(LLMProviders.GOOGLE)
|
||||
.Capabilities(TEXT_INPUT | TEXT_OUTPUT)
|
||||
.Kind(ModelKind.GROUNDED_ANSWERING);
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
using AIStudio.Provider;
|
||||
|
||||
using static AIStudio.Provider.Capability;
|
||||
|
||||
namespace AIStudio.Models.Google;
|
||||
|
||||
/// <summary>
|
||||
/// The Google models which are handed a job rather than a message.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Both of these answer on the Interactions API alone, never on generateContent: one request starts
|
||||
/// an autonomous loop which plans, runs code, manages files and searches the web, and a research
|
||||
/// run takes minutes rather than seconds. A chat request does not time out against them -- it never
|
||||
/// arrives.
|
||||
///
|
||||
/// Deep Research is the reason these rules are bound to Google instead of standing among the kinds.
|
||||
/// Perplexity and OpenAI both sell something under that name, and both of those answer over the
|
||||
/// chat completion API like any other model: sonar-deep-research states it in its own family, and
|
||||
/// o3-deep-research is held in the corpus. The same two words, three different things, and only the
|
||||
/// provider tells them apart.
|
||||
///
|
||||
/// Written as a prefix on top of that, because Google puts the words at the front of the name while
|
||||
/// the other two hang them onto a model they already had. Either guard alone would do; together
|
||||
/// they also cover whatever Google names this way next.
|
||||
///
|
||||
/// Antigravity needs no such guard -- nobody else names a model that -- but it is a statement about
|
||||
/// Google's catalog all the same, so it stands where the other one stands.
|
||||
/// </remarks>
|
||||
public sealed class GoogleAgentFamily : ModelFamily
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override ModelVendor Vendor => ModelVendor.GOOGLE;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override ModelSource Source => new("https://ai.google.dev/gemini-api/docs/deep-research", new DateOnly(2026, 9, 19), "The page states it for the two 04-2026 models: Deep Research runs only through the Interactions API, never through generateContent, and only in the background, because a single run takes five to twenty minutes. The catalog also serves deep-research-pro-preview-12-2025, which the page no longer lists; that it works the same way is read off the naming line rather than off a source. The Antigravity agent is documented at https://ai.google.dev/gemini-api/docs/antigravity-agent and runs on a sandbox Google hosts.");
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Declare(ModelFamilyBuilder builder)
|
||||
{
|
||||
builder.Rule("deep-research").AsPrefix().OnlyOn(LLMProviders.GOOGLE)
|
||||
.Capabilities(TEXT_INPUT)
|
||||
.Kind(ModelKind.AGENT);
|
||||
|
||||
builder.Rule("antigravity").AsSegment().OnlyOn(LLMProviders.GOOGLE)
|
||||
.Capabilities(TEXT_INPUT)
|
||||
.Kind(ModelKind.AGENT);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using AIStudio.Provider;
|
||||
|
||||
using static AIStudio.Provider.Capability;
|
||||
|
||||
namespace AIStudio.Models.Google;
|
||||
|
||||
/// <summary>
|
||||
/// Lyria, which writes music from a description.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Nothing knew the name, so the catalog answered for it the way it answers for everything nobody
|
||||
/// wrote a rule for: a chat model which reads text, writes text and calls tools. What comes back is
|
||||
/// a stereo recording with instruments and, from 3.5 on, sung lyrics.
|
||||
///
|
||||
/// Nobody ran into it because the Google provider showed only names beginning with "gemini", which
|
||||
/// kept four Lyria models out of sight along with the two Gemma models somebody actually wants. The
|
||||
/// prefix is gone now, so the rule has to carry what the prefix carried by accident.
|
||||
///
|
||||
/// Whole name parts rather than a substring, for the reason Imagen gives next door. The rule is not
|
||||
/// bound to Google, unlike the agent ones: wherever a model called Lyria turns up, it is this.
|
||||
/// </remarks>
|
||||
public sealed class LyriaFamily : ModelFamily
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override ModelVendor Vendor => ModelVendor.GOOGLE;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override ModelSource Source => new("https://ai.google.dev/gemini-api/docs/music-generation", new DateOnly(2026, 9, 19), "A description goes in and 44.1 kHz stereo music comes out, with vocals and timed lyrics from Lyria 3.5 on. The realtime variant holds a connection open instead, which the realtime rule states and outranks this with.");
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Declare(ModelFamilyBuilder builder) =>
|
||||
builder.Rule("lyria").AsSegment()
|
||||
.Capabilities(TEXT_INPUT)
|
||||
.Kind(ModelKind.MUSIC_GENERATION);
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
using AIStudio.Provider;
|
||||
|
||||
using static AIStudio.Provider.Capability;
|
||||
|
||||
namespace AIStudio.Models.Mistral;
|
||||
@@ -10,6 +12,12 @@ namespace AIStudio.Models.Mistral;
|
||||
/// words the Mistral block looked for, so it walked past every rule and reached the answer meant
|
||||
/// for everything nobody had written one for. That answer happened to describe it correctly, which
|
||||
/// is why nothing looked wrong -- and is exactly the situation this rebuild is meant to end.
|
||||
///
|
||||
/// That Mistral serves it to fill in the middle of a file rather than to talk to was the one thing
|
||||
/// the rebuild left behind: it stayed in the Mistral provider, as a name check which dropped every
|
||||
/// model whose ID begins with "code". It says something about a model, so it belongs to the model,
|
||||
/// and it is bound to the provider because it is only true there. Somebody's own server and the
|
||||
/// gateways serve the same weights to chat with, which is what the unbound rule above keeps saying.
|
||||
/// </remarks>
|
||||
public sealed class CodestralFamily : ModelFamily
|
||||
{
|
||||
@@ -17,11 +25,22 @@ public sealed class CodestralFamily : ModelFamily
|
||||
public override ModelVendor Vendor => ModelVendor.MISTRAL_AI;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override ModelSource Source => new("https://docs.mistral.ai/getting-started/models/models_overview/", new DateOnly(2026, 9, 11), "The answer the previous rules gave it through their fallback: text in, text out, tool calling.");
|
||||
public override ModelSource Source => new("https://docs.mistral.ai/getting-started/models/models_overview/", new DateOnly(2026, 9, 19), "The answer the previous rules gave it through their fallback: text in, text out, tool calling. What Mistral's own catalog makes of it was read from the same page, where Codestral is the model behind the FIM endpoint.");
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Declare(ModelFamilyBuilder builder) =>
|
||||
protected override void Declare(ModelFamilyBuilder builder)
|
||||
{
|
||||
builder.Rule("codestral").AsSegment()
|
||||
.Capabilities(TEXT_INPUT | TEXT_OUTPUT | FUNCTION_CALLING)
|
||||
.Apis(CHAT_COMPLETION_API);
|
||||
|
||||
//
|
||||
// Bound to Mistral, which makes it the more specific of the two and lets it win there
|
||||
// without anybody writing an order. It continues a text instead of answering in a
|
||||
// conversation, so it must not stand among the models somebody picks for a chat.
|
||||
//
|
||||
builder.Rule("codestral").AsSegment().OnlyOn(LLMProviders.MISTRAL)
|
||||
.Inherits()
|
||||
.Kind(ModelKind.TEXT_COMPLETION);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user