edgellm / frontend /src /config /assistants.ts
wu981526092's picture
♻️ UNIFY CONFIGS: Create shared assistant configuration
4f5b21f
// Unified assistant configurations shared between Templates and Playground
export interface AssistantConfig {
id: string
name: string
description: string
category: string
tags: string[]
icon: string
model: string
systemPrompt: string
temperature: number
maxTokens: number
isOfficial: boolean
usageCount: number
rating: number
createdAt: string
author: string
}
// Shared assistant configurations
export const ASSISTANT_CONFIGS: AssistantConfig[] = [
{
id: 'outdoor-rescue',
name: 'πŸ”οΈ Outdoor Rescue',
description: 'Offline AI that guides survival in extreme environments',
category: 'Emergency & Safety',
tags: ['survival', 'outdoor', 'emergency', 'rescue'],
icon: 'πŸ”οΈ',
model: 'Qwen/Qwen3-30B-A3B',
systemPrompt: 'You are an expert outdoor survival guide and emergency responder. When hikers, travelers, or drivers lose connection in mountains, forests, or rural roads, you provide real-time survival guidance, first aid tips, and emergency signaling advice. You are their reliable voice of calm and safety in extreme environments. Provide step-by-step instructions for survival scenarios, prioritize immediate safety needs, and offer practical solutions using available resources.',
temperature: 0.3,
maxTokens: 1000,
isOfficial: true,
usageCount: 2847,
rating: 4.9,
createdAt: '2024-01-15',
author: 'EdgeLLM Team'
},
{
id: 'offline-healthcare',
name: 'πŸ₯ Offline Healthcare',
description: 'A simple device for seniors to access trusted medical guidance',
category: 'Healthcare',
tags: ['healthcare', 'seniors', 'medical', 'guidance'],
icon: 'πŸ₯',
model: 'Qwen/Qwen3-30B-A3B',
systemPrompt: 'You are a trusted medical assistant designed specifically for elderly users. You provide clear, step-by-step medical advice through simple voice interactions. Users can press a button or speak a request to get guidance on everyday health concerns. Offer practical, easy-to-understand health advice while always emphasizing when professional medical attention is needed. Keep responses simple, clear, and actionable. No internet required, no accounts needed, no complicated setup.',
temperature: 0.2,
maxTokens: 800,
isOfficial: true,
usageCount: 1934,
rating: 4.8,
createdAt: '2024-01-20',
author: 'EdgeLLM Team'
},
{
id: 'ai-companion',
name: '🧸 AI Companion',
description: 'A private, always-available conversational partner',
category: 'Companion & Support',
tags: ['companion', 'emotional support', 'conversation', 'private'],
icon: '🧸',
model: 'Qwen/Qwen3-30B-A3B',
systemPrompt: 'You are a warm, empathetic AI companion designed to provide emotional support and practical assistance. You can be embedded in a plush toy or device to serve as a private, always-available friend. You listen actively, engage in meaningful conversations, tell stories, and provide comfort during stressful or lonely times. You offer warmth, reassurance, and practical help while maintaining complete privacy - all processing stays local without uploading data to the cloud. Be supportive, understanding, and genuinely caring in all interactions.',
temperature: 0.7,
maxTokens: 1000,
isOfficial: true,
usageCount: 3421,
rating: 4.9,
createdAt: '2024-01-25',
author: 'EdgeLLM Team'
}
]
// Convert to Template format for Templates page
export interface CommunityTemplate {
id: string
name: string
description: string
author: string
category: string
tags: string[]
model: string
systemPrompt: string
temperature: number
maxTokens: number
isOfficial: boolean
createdAt: string
icon: string
usageCount: number
rating: number
}
export function getTemplatesFromConfigs(): CommunityTemplate[] {
return ASSISTANT_CONFIGS.map(config => ({
id: config.id,
name: config.name.replace(/πŸ”οΈ|πŸ₯|🧸/g, '').trim(), // Remove emoji for Templates page
description: config.description,
author: config.author,
category: config.category,
tags: config.tags,
model: config.model,
systemPrompt: config.systemPrompt,
temperature: config.temperature,
maxTokens: config.maxTokens,
isOfficial: config.isOfficial,
createdAt: config.createdAt,
icon: config.icon,
usageCount: config.usageCount,
rating: config.rating
}))
}
// Convert to Preset format for Playground
export interface SystemPromptPreset {
name: string
prompt: string
}
export function getPresetsFromConfigs(): SystemPromptPreset[] {
return ASSISTANT_CONFIGS.map(config => ({
name: config.name, // Keep emoji for Playground
prompt: config.systemPrompt
}))
}