Primeiro Commit
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
/**
|
||||
* Configuração de modelos de IA disponíveis
|
||||
* Mapeia os nomes de exibição para os IDs usados pela API
|
||||
*/
|
||||
|
||||
export interface ModelConfig {
|
||||
name: string; // Nome exibido na interface
|
||||
id: string; // ID enviado para a API
|
||||
description?: string; // Descrição opcional do modelo
|
||||
}
|
||||
|
||||
/**
|
||||
* Lista de modelos disponíveis
|
||||
* NOTA: Estes dados correspondem à tabela de modelos do banco de dados.
|
||||
* Futuramente será integrado com API para buscar dinamicamente.
|
||||
*/
|
||||
export const AVAILABLE_MODELS: ModelConfig[] = [
|
||||
{
|
||||
name: 'GPT-4.1',
|
||||
id: '1',
|
||||
description: 'Modelo GPT-4.1',
|
||||
},
|
||||
{
|
||||
name: 'GPT-4o',
|
||||
id: '2',
|
||||
description: 'Modelo GPT-4o',
|
||||
},
|
||||
{
|
||||
name: 'GPT-5 Mini',
|
||||
id: '3',
|
||||
description: 'Modelo GPT-5 Mini',
|
||||
},
|
||||
{
|
||||
name: 'Gemini 2.0 Flash',
|
||||
id: '4',
|
||||
description: 'Google Gemini 2.0 Flash',
|
||||
},
|
||||
{
|
||||
name: 'Claude Sonnet 4.5',
|
||||
id: '5',
|
||||
description: 'Anthropic Claude Sonnet 4.5',
|
||||
},
|
||||
{
|
||||
name: 'DeepSeek V3.2 Chat',
|
||||
id: '6',
|
||||
description: 'DeepSeek V3.2 Chat',
|
||||
},
|
||||
{
|
||||
name: 'DeepSeek V3.2 Reasoner',
|
||||
id: '7',
|
||||
description: 'DeepSeek V3.2 Reasoner',
|
||||
},
|
||||
{
|
||||
name: 'Gemini 2.5 Flash',
|
||||
id: '8',
|
||||
description: 'Google Gemini 2.5 Flash',
|
||||
},
|
||||
{
|
||||
name: 'Gemini 2.5 Flash-Lite',
|
||||
id: '9',
|
||||
description: 'Google Gemini 2.5 Flash-Lite',
|
||||
},
|
||||
{
|
||||
name: 'Claude Haiku 4.5',
|
||||
id: '10',
|
||||
description: 'Anthropic Claude Haiku 4.5',
|
||||
},
|
||||
{
|
||||
name: 'GPT-4o Mini',
|
||||
id: '11',
|
||||
description: 'Modelo GPT-4o Mini',
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
* Mapeia o nome do modelo para o ID da API
|
||||
*
|
||||
* @param modelName - Nome do modelo exibido na interface
|
||||
* @returns ID do modelo para a API, ou o próprio nome se não encontrado
|
||||
*/
|
||||
export function getModelId(modelName: string): string {
|
||||
const model = AVAILABLE_MODELS.find(m => m.name === modelName);
|
||||
return model?.id || modelName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mapeia o ID da API para o nome de exibição
|
||||
*
|
||||
* @param modelId - ID do modelo na API
|
||||
* @returns Nome do modelo para exibir, ou o próprio ID se não encontrado
|
||||
*/
|
||||
export function getModelName(modelId: string): string {
|
||||
const model = AVAILABLE_MODELS.find(m => m.id === modelId);
|
||||
return model?.name || modelId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtém a configuração completa de um modelo pelo nome
|
||||
*
|
||||
* @param modelName - Nome do modelo
|
||||
* @returns Configuração do modelo ou undefined
|
||||
*/
|
||||
export function getModelConfig(modelName: string): ModelConfig | undefined {
|
||||
return AVAILABLE_MODELS.find(m => m.name === modelName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retorna apenas os nomes dos modelos para uso em dropdowns
|
||||
*/
|
||||
export function getModelNames(): string[] {
|
||||
return AVAILABLE_MODELS.map(m => m.name);
|
||||
}
|
||||
|
||||
/**
|
||||
* FUTURA INTEGRAÇÃO COM BANCO DE DADOS
|
||||
*
|
||||
* Quando a API estiver pronta, substituir AVAILABLE_MODELS por chamada à API:
|
||||
*
|
||||
* export async function fetchModelsFromDatabase(): Promise<ModelConfig[]> {
|
||||
* const response = await apiService.get('/api/models');
|
||||
* return response.data.map((model: any) => ({
|
||||
* name: model.name,
|
||||
* id: model.id.toString(),
|
||||
* description: model.description || '',
|
||||
* }));
|
||||
* }
|
||||
*
|
||||
* Nos componentes, usar:
|
||||
* - useEffect para carregar modelos na montagem
|
||||
* - useState para armazenar lista de modelos
|
||||
* - Loading state durante o fetch
|
||||
*/
|
||||
Reference in New Issue
Block a user