Skip to content

ProviderProfile

This content is not available in your language yet.

type ProviderProfile = {
auth?: {
env: string;
};
baseUrl: string;
capability?: {
background?: boolean;
defaultContextWithoutModifier?: number;
effectiveContext?: number;
hostedTools?: string[];
inputModalities: {
document: "supported" | "rejected" | "silently_dropped";
image: "supported" | "rejected" | "silently_dropped";
};
maxContext: number;
maxOutput?: number;
modelModifiers: string[];
promptCaching: {
maxBreakpoints?: number;
minCacheableTokens?: number;
mode: "explicit" | "implicit" | "ignored";
ttlSeconds?: number;
};
quirks: {
claudeModelNameMapping: boolean;
countTokensEndpoint?: boolean;
maxTokensExcludesReasoning?: boolean;
minTimeoutMs?: number;
modelsEndpoint?: boolean;
stopSequences?: "ignored" | "honored" | "misreported_end_turn";
streamUsageLocation?: "message_start" | "message_delta" | "both";
systemRoleInMessages: boolean;
unknownModelFallback: boolean;
};
reasoning?: boolean;
sampling: {
temperature?: {
clampEpsilon: number;
max: number;
maxExclusive: boolean;
min: number;
minExclusive: boolean;
};
temperatureFixed?: number;
temperatureRange?: [number, number];
};
thinking: {
budgetMaxTokens?: number;
budgetTokens: "ignored" | "honored";
cannotDisable: boolean;
effortParam?: string;
mustEchoBack: boolean;
signatureShape?: "opaque" | "always_empty" | "absent";
toggleValues: string[];
};
thinkingOptional?: boolean;
toolChoice: boolean;
vision: boolean;
};
models: Record<string, string>;
pricing?: Record<string, {
cachedInputPerMillion?: number;
inputPerMillion: number;
outputPerMillion: number;
peakMultiplier?: number;
tiers?: {
cachedInputPerMillion?: number;
inputPerMillion: number;
outputPerMillion: number;
upToInputTokens?: number;
}[];
}>;
protocol: "anthropic" | "openai" | "openai-responses" | "twp";
};

provider 档案(ProviderProfileSchema 推导)。

optional auth?: {
env: string;
};
env: string;

baseUrl: string;

optional capability?: {
background?: boolean;
defaultContextWithoutModifier?: number;
effectiveContext?: number;
hostedTools?: string[];
inputModalities: {
document: "supported" | "rejected" | "silently_dropped";
image: "supported" | "rejected" | "silently_dropped";
};
maxContext: number;
maxOutput?: number;
modelModifiers: string[];
promptCaching: {
maxBreakpoints?: number;
minCacheableTokens?: number;
mode: "explicit" | "implicit" | "ignored";
ttlSeconds?: number;
};
quirks: {
claudeModelNameMapping: boolean;
countTokensEndpoint?: boolean;
maxTokensExcludesReasoning?: boolean;
minTimeoutMs?: number;
modelsEndpoint?: boolean;
stopSequences?: "ignored" | "honored" | "misreported_end_turn";
streamUsageLocation?: "message_start" | "message_delta" | "both";
systemRoleInMessages: boolean;
unknownModelFallback: boolean;
};
reasoning?: boolean;
sampling: {
temperature?: {
clampEpsilon: number;
max: number;
maxExclusive: boolean;
min: number;
minExclusive: boolean;
};
temperatureFixed?: number;
temperatureRange?: [number, number];
};
thinking: {
budgetMaxTokens?: number;
budgetTokens: "ignored" | "honored";
cannotDisable: boolean;
effortParam?: string;
mustEchoBack: boolean;
signatureShape?: "opaque" | "always_empty" | "absent";
toggleValues: string[];
};
thinkingOptional?: boolean;
toolChoice: boolean;
vision: boolean;
};
optional background?: boolean;
optional defaultContextWithoutModifier?: number;
optional effectiveContext?: number;
optional hostedTools?: string[];
inputModalities: {
document: "supported" | "rejected" | "silently_dropped";
image: "supported" | "rejected" | "silently_dropped";
};
document: "supported" | "rejected" | "silently_dropped";
image: "supported" | "rejected" | "silently_dropped";
maxContext: number;
optional maxOutput?: number;
modelModifiers: string[];
promptCaching: {
maxBreakpoints?: number;
minCacheableTokens?: number;
mode: "explicit" | "implicit" | "ignored";
ttlSeconds?: number;
};
optional maxBreakpoints?: number;
optional minCacheableTokens?: number;
mode: "explicit" | "implicit" | "ignored";
optional ttlSeconds?: number;
quirks: {
claudeModelNameMapping: boolean;
countTokensEndpoint?: boolean;
maxTokensExcludesReasoning?: boolean;
minTimeoutMs?: number;
modelsEndpoint?: boolean;
stopSequences?: "ignored" | "honored" | "misreported_end_turn";
streamUsageLocation?: "message_start" | "message_delta" | "both";
systemRoleInMessages: boolean;
unknownModelFallback: boolean;
};
claudeModelNameMapping: boolean;
optional countTokensEndpoint?: boolean;
optional maxTokensExcludesReasoning?: boolean;
optional minTimeoutMs?: number;
optional modelsEndpoint?: boolean;
optional stopSequences?: "ignored" | "honored" | "misreported_end_turn";
optional streamUsageLocation?: "message_start" | "message_delta" | "both";
systemRoleInMessages: boolean;
unknownModelFallback: boolean;
optional reasoning?: boolean;
sampling: {
temperature?: {
clampEpsilon: number;
max: number;
maxExclusive: boolean;
min: number;
minExclusive: boolean;
};
temperatureFixed?: number;
temperatureRange?: [number, number];
};
optional temperature?: {
clampEpsilon: number;
max: number;
maxExclusive: boolean;
min: number;
minExclusive: boolean;
};
clampEpsilon: number;
max: number;
maxExclusive: boolean;
min: number;
minExclusive: boolean;
optional temperatureFixed?: number;
optional temperatureRange?: [number, number];
thinking: {
budgetMaxTokens?: number;
budgetTokens: "ignored" | "honored";
cannotDisable: boolean;
effortParam?: string;
mustEchoBack: boolean;
signatureShape?: "opaque" | "always_empty" | "absent";
toggleValues: string[];
};
optional budgetMaxTokens?: number;
budgetTokens: "ignored" | "honored";
cannotDisable: boolean;
optional effortParam?: string;
mustEchoBack: boolean;
optional signatureShape?: "opaque" | "always_empty" | "absent";
toggleValues: string[];
optional thinkingOptional?: boolean;
toolChoice: boolean;
vision: boolean;

models: Record<string, string>;

optional pricing?: Record<string, {
cachedInputPerMillion?: number;
inputPerMillion: number;
outputPerMillion: number;
peakMultiplier?: number;
tiers?: {
cachedInputPerMillion?: number;
inputPerMillion: number;
outputPerMillion: number;
upToInputTokens?: number;
}[];
}>;

protocol: "anthropic" | "openai" | "openai-responses" | "twp";