fix: llm-info preferred provider (#7962)

* fix: llm-info preferred provider

* fix: cubic feedback
This commit is contained in:
Dallin Romney
2025-09-25 14:12:17 -07:00
committed by GitHub
parent 268329a944
commit 306ed9f1e3
2 changed files with 22 additions and 6 deletions

View File

@@ -213,7 +213,7 @@ export abstract class BaseLLM implements ILLM {
this.providerName === "continue-proxy"
? this.model?.split("/").pop() || this.model
: this.model;
const llmInfo = findLlmInfo(modelSearchString);
const llmInfo = findLlmInfo(modelSearchString, this.underlyingProviderName);
const templateType =
options.template ?? autodetectTemplateType(options.model);

View File

@@ -10,7 +10,7 @@ import { OpenAi } from "./providers/openai.js";
import { Vllm } from "./providers/vllm.js";
import { Voyage } from "./providers/voyage.js";
import { xAI } from "./providers/xAI.js";
import { LlmInfo, ModelProvider, UseCase } from "./types.js";
import { LlmInfoWithProvider, ModelProvider, UseCase } from "./types.js";
export const allModelProviders: ModelProvider[] = [
OpenAi,
@@ -27,16 +27,32 @@ export const allModelProviders: ModelProvider[] = [
xAI,
];
export const allLlms: LlmInfo[] = allModelProviders.flatMap((provider) =>
provider.models.map((model) => ({ ...model, provider: provider.id })),
export const allLlms: LlmInfoWithProvider[] = allModelProviders.flatMap(
(provider) =>
provider.models.map((model) => ({ ...model, provider: provider.id })),
);
export function findLlmInfo(model: string): LlmInfo | undefined {
export function findLlmInfo(
model: string,
preferProviderId?: string,
): LlmInfoWithProvider | undefined {
if (preferProviderId) {
const provider = allModelProviders.find((p) => p.id === preferProviderId);
const info = provider?.models.find((llm) =>
llm.regex ? llm.regex.test(model) : llm.model === model,
);
if (info) {
return {
...info,
provider: preferProviderId,
};
}
}
return allLlms.find((llm) =>
llm.regex ? llm.regex.test(model) : llm.model === model,
);
}
export function getAllRecommendedFor(useCase: UseCase): LlmInfo[] {
export function getAllRecommendedFor(useCase: UseCase): LlmInfoWithProvider[] {
return allLlms.filter((llm) => llm.recommendedFor?.includes(useCase));
}