feat: enhance API with new model configurations and type guards for improved handling

This commit is contained in:
pacnpal
2025-02-03 10:42:35 -05:00
parent 1515c4faf0
commit 412eb9ef92

View File

@@ -114,3 +114,162 @@ export const azureAiModelInfoSaneDefaults: ModelInfo = {
outputPrice: 0, outputPrice: 0,
description: "Azure AI Model Inference allows you to deploy and use any model through Azure's inference service.", description: "Azure AI Model Inference allows you to deploy and use any model through Azure's inference service.",
} }
// Message content types
export interface MessageContent {
type: "text" | "image" | "function_call" | "tool_use" | "tool_result" | "video"
id?: string
tool_use_id?: string
text?: string
image_url?: string
function_call?: {
name: string
arguments: string
}
content?: Array<{ type?: string; text: string }>
output?:
| string
| Array<{
type?: string
text?: string
image?: { format: string; source: { bytes: Uint8Array } }
[key: string]: any
}>
input?: Record<string, any>
name?: string
source?: {
data: string | Uint8Array
media_type: string
bytes?: Uint8Array
uri?: string
format?: string
}
s3Location?: {
uri: string
bucketOwner: string
}
}
// Type guard for checking if an object has a 'type' property
export function hasType(obj: any): obj is { type: string } {
return obj && typeof obj === "object" && "type" in obj
}
// Type guard for checking if an object has a 'text' property
export function hasText(obj: any): obj is { text: string } {
return obj && typeof obj === "object" && "text" in obj
}
// OpenAI Native
export type OpenAiNativeModelId = string
export const openAiNativeModels: { [key in OpenAiNativeModelId]: ModelInfo } = {
"gpt-4-turbo-preview": {
contextWindow: 128000,
supportsImages: true,
supportsComputerUse: true,
supportsPromptCache: false,
},
}
export const openAiNativeDefaultModelId: OpenAiNativeModelId = "gpt-4-turbo-preview"
// Anthropic
export type AnthropicModelId = string
export const anthropicModels: { [key in AnthropicModelId]: ModelInfo } = {
"claude-3-opus-20240229": {
contextWindow: 200000,
supportsImages: true,
supportsComputerUse: true,
supportsPromptCache: false,
},
}
export const anthropicDefaultModelId: AnthropicModelId = "claude-3-opus-20240229"
// Bedrock
export type BedrockModelId = string
export const bedrockModels: { [key in BedrockModelId]: ModelInfo } = {
"anthropic.claude-3-sonnet-20240229-v1:0": {
contextWindow: 200000,
supportsImages: true,
supportsComputerUse: true,
supportsPromptCache: false,
},
}
export const bedrockDefaultModelId: BedrockModelId = "anthropic.claude-3-sonnet-20240229-v1:0"
// DeepSeek
export const deepSeekModels: { [key: string]: ModelInfo } = {
"deepseek-coder": {
contextWindow: 32768,
supportsImages: false,
supportsComputerUse: true,
supportsPromptCache: false,
},
}
export const deepSeekDefaultModelId = "deepseek-coder"
// Gemini
export type GeminiModelId = string
export const geminiModels: { [key in GeminiModelId]: ModelInfo } = {
"gemini-pro": {
contextWindow: 32768,
supportsImages: false,
supportsComputerUse: true,
supportsPromptCache: false,
},
}
export const geminiDefaultModelId: GeminiModelId = "gemini-pro"
// Glama
export const glamaDefaultModelId = "glama-base"
export const glamaDefaultModelInfo: ModelInfo = {
contextWindow: 4096,
supportsImages: false,
supportsComputerUse: true,
supportsPromptCache: false,
}
// OpenRouter
export const openRouterDefaultModelId = "openai/gpt-4-turbo-preview"
export const openRouterDefaultModelInfo: ModelInfo = {
contextWindow: 128000,
supportsImages: true,
supportsComputerUse: true,
supportsPromptCache: false,
}
// Default model info for OpenAI-compatible endpoints
export const openAiModelInfoSaneDefaults: ModelInfo = {
contextWindow: 4096,
supportsImages: false,
supportsComputerUse: true,
supportsPromptCache: false,
}
// Vertex
export type VertexModelId = string
export const vertexModels: { [key in VertexModelId]: ModelInfo } = {}
export const vertexDefaultModelId: VertexModelId = "gemini-pro"
// Mistral
export type MistralModelId = string
export const mistralModels: { [key in MistralModelId]: ModelInfo } = {
"mistral-large-latest": {
contextWindow: 32768,
supportsImages: false,
supportsComputerUse: true,
supportsPromptCache: false,
},
}
export const mistralDefaultModelId: MistralModelId = "mistral-large-latest"
// Unbound
export type UnboundModelId = string
export const unboundModels: { [key in UnboundModelId]: ModelInfo } = {
"unbound-default": {
contextWindow: 32768,
supportsImages: false,
supportsComputerUse: true,
supportsPromptCache: false,
},
}
export const unboundDefaultModelId: UnboundModelId = "unbound-default"