LLM 모델 자동 업데이트 시스템 - 항상 최신 모델 정보 유지
Automatically updates LLM model information (prices, APIs, features) using Context7 MCP when KreatSaaS starts. This triggers real-time updates from OpenAI, Anthropic, Google, and other providers to ensure architecture recommendations use the latest data.
/plugin marketplace add johunsang/kreatsaas/plugin install kreatsaas@kreatsaas-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
⚠️ 중요: KreatSaaS 실행 시 Context7 MCP를 통해 모든 LLM 모델, 가격, API를 자동으로 최신 정보로 업데이트합니다.
┌─────────────────────────────────────────────────────────────┐
│ KreatSaaS 실행 시 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1️⃣ Context7 MCP로 최신 문서 조회 │
│ ├── OpenAI API 문서 │
│ ├── Anthropic API 문서 │
│ ├── Google AI 문서 │
│ ├── Groq 문서 │
│ ├── DeepSeek 문서 │
│ └── 기타 LLM 문서 │
│ ↓ │
│ 2️⃣ 최신 모델 정보 추출 │
│ ├── 모델 이름/ID │
│ ├── 가격 (입력/출력) │
│ ├── 컨텍스트 길이 │
│ ├── 새로운 기능 │
│ └── API 변경사항 │
│ ↓ │
│ 3️⃣ 사용자에게 최신 정보 제공 │
│ └── 아키텍처 설계 시 최신 모델 추천 │
│ │
└─────────────────────────────────────────────────────────────┘
💡 팁: 프롬프트에
use context7를 추가하면 자동으로 최신 문서를 가져옵니다!
┌─────────────────────────────────────────────────────────────┐
│ 📚 Context7 MCP 도구 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1️⃣ resolve-library-id (라이브러리 ID 조회) │
│ ├── query: "사용자 질문/작업 설명" │
│ └── libraryName: "검색할 라이브러리명" │
│ │
│ 예시: │
│ - libraryName: "openai" → /openai/openai-node │
│ - libraryName: "anthropic" → /anthropic/anthropic-sdk │
│ - libraryName: "google genai" → /google/generative-ai │
│ - libraryName: "supabase" → /supabase/supabase │
│ │
│ 2️⃣ query-docs (문서 검색) │
│ ├── libraryId: "정확한 Context7 ID" (필수) │
│ └── query: "찾고 싶은 정보" (필수) │
│ │
│ 예시: │
│ - libraryId: "/openai/openai-node" │
│ - query: "GPT-4o 모델 가격과 사용법" │
│ │
└─────────────────────────────────────────────────────────────┘
KreatSaaS 실행 시 자동으로 수행:
1. resolve-library-id 호출
- "openai" → /openai/openai-node
- "anthropic" → /anthropic/anthropic-sdk-typescript
- "google genai" → /google/generative-ai-js
- "groq" → /groq/groq-typescript
- "supabase" → /supabase/supabase-js
2. query-docs 호출
- 각 라이브러리의 최신 모델, 가격, API 사용법 조회
3. 추출된 정보로 아키텍처 가이드 업데이트
프롬프트에 라이브러리 ID를 직접 명시하면 resolve 단계를 건너뜁니다:
"use library /openai/openai-node for API docs"
"use library /supabase/supabase-js for database setup"
"use library /vercel/next.js for App Router documentation"
버전을 언급하면 해당 버전 문서를 가져옵니다:
"Next.js 14 middleware 설정 방법" → Next.js 14 문서
"React 19 use() hook 사용법" → React 19 문서
"Supabase v2 realtime 구독" → Supabase v2 문서
// 실행 시 최신 정보 조회
async function getLatestLLMInfo() {
const queries = [
"OpenAI GPT models pricing 2025",
"Anthropic Claude models latest",
"Google Gemini API pricing 2025",
"Groq LLM models 2025",
"DeepSeek API models 2025"
];
// Perplexity API로 실시간 검색
const results = await Promise.all(
queries.map(query => searchWithPerplexity(query))
);
return parseLatestModels(results);
}
// 각 서비스의 모델 목록 API 호출
async function fetchLatestModels() {
const models = {
openai: await fetchOpenAIModels(),
anthropic: await fetchAnthropicModels(),
google: await fetchGoogleModels(),
};
return models;
}
// OpenAI 모델 목록
async function fetchOpenAIModels() {
const openai = new OpenAI();
const response = await openai.models.list();
return response.data
.filter(m => m.id.includes('gpt') || m.id.includes('o1'))
.map(m => ({
id: m.id,
created: new Date(m.created * 1000),
}));
}
// Anthropic 모델 목록
async function fetchAnthropicModels() {
// Anthropic은 모델 목록 API가 없어서 문서 조회 필요
const response = await fetch('https://docs.anthropic.com/api/models');
return parseAnthropicModels(await response.text());
}
// Google 모델 목록
async function fetchGoogleModels() {
const genai = new GoogleGenerativeAI(process.env.GOOGLE_API_KEY);
// listModels API 사용
const models = [];
for await (const model of genai.listModels()) {
models.push(model);
}
return models;
}
// scripts/update-llm-info.ts
// KreatSaaS 실행 전 또는 주기적으로 실행
import { writeFileSync } from 'fs';
interface LLMModel {
provider: string;
name: string;
id: string;
inputPrice: number; // per 1M tokens
outputPrice: number;
contextLength: number;
features: string[];
lastUpdated: string;
}
// 최신 정보 저장 파일
const LLM_INFO_FILE = './data/llm-models.json';
async function updateLLMInfo() {
console.log('🔄 LLM 모델 정보 업데이트 시작...');
const models: LLMModel[] = [];
// 1. OpenAI
console.log(' 📡 OpenAI 정보 조회...');
const openaiModels = await fetchOpenAILatest();
models.push(...openaiModels);
// 2. Anthropic
console.log(' 📡 Anthropic 정보 조회...');
const anthropicModels = await fetchAnthropicLatest();
models.push(...anthropicModels);
// 3. Google
console.log(' 📡 Google 정보 조회...');
const googleModels = await fetchGoogleLatest();
models.push(...googleModels);
// 4. 기타 (Groq, DeepSeek, etc.)
console.log(' 📡 기타 LLM 정보 조회...');
const otherModels = await fetchOtherLatest();
models.push(...otherModels);
// 결과 저장
const result = {
lastUpdated: new Date().toISOString(),
models,
};
writeFileSync(LLM_INFO_FILE, JSON.stringify(result, null, 2));
console.log(`✅ ${models.length}개 모델 정보 업데이트 완료!`);
console.log(` 저장 위치: ${LLM_INFO_FILE}`);
}
// OpenAI 최신 정보 (웹 스크래핑 또는 API)
async function fetchOpenAILatest(): Promise<LLMModel[]> {
// Context7 또는 직접 조회
return [
{
provider: 'OpenAI',
name: 'GPT-4o',
id: 'gpt-4o',
inputPrice: 2.50,
outputPrice: 10.00,
contextLength: 128000,
features: ['vision', 'function-calling', 'json-mode'],
lastUpdated: new Date().toISOString(),
},
{
provider: 'OpenAI',
name: 'GPT-4o Mini',
id: 'gpt-4o-mini',
inputPrice: 0.15,
outputPrice: 0.60,
contextLength: 128000,
features: ['vision', 'function-calling', 'json-mode'],
lastUpdated: new Date().toISOString(),
},
{
provider: 'OpenAI',
name: 'o1',
id: 'o1',
inputPrice: 15.00,
outputPrice: 60.00,
contextLength: 200000,
features: ['reasoning', 'vision'],
lastUpdated: new Date().toISOString(),
},
{
provider: 'OpenAI',
name: 'o3-mini',
id: 'o3-mini',
inputPrice: 1.10,
outputPrice: 4.40,
contextLength: 128000,
features: ['reasoning'],
lastUpdated: new Date().toISOString(),
},
];
}
// Anthropic 최신 정보
async function fetchAnthropicLatest(): Promise<LLMModel[]> {
return [
{
provider: 'Anthropic',
name: 'Claude Opus 4.5',
id: 'claude-opus-4-5-20251101',
inputPrice: 15.00,
outputPrice: 75.00,
contextLength: 200000,
features: ['vision', 'tool-use', 'computer-use', 'extended-thinking'],
lastUpdated: new Date().toISOString(),
},
{
provider: 'Anthropic',
name: 'Claude Sonnet 4',
id: 'claude-sonnet-4-20250514',
inputPrice: 3.00,
outputPrice: 15.00,
contextLength: 200000,
features: ['vision', 'tool-use', 'computer-use', 'extended-thinking'],
lastUpdated: new Date().toISOString(),
},
{
provider: 'Anthropic',
name: 'Claude Haiku 3.5',
id: 'claude-haiku-3-5-20241022',
inputPrice: 0.80,
outputPrice: 4.00,
contextLength: 200000,
features: ['vision', 'tool-use'],
lastUpdated: new Date().toISOString(),
},
];
}
// Google 최신 정보
async function fetchGoogleLatest(): Promise<LLMModel[]> {
return [
{
provider: 'Google',
name: 'Gemini 2.5 Pro',
id: 'gemini-2.5-pro',
inputPrice: 1.25,
outputPrice: 5.00,
contextLength: 1000000,
features: ['vision', 'audio', 'video', 'code-execution', 'grounding'],
lastUpdated: new Date().toISOString(),
},
{
provider: 'Google',
name: 'Gemini 2.5 Flash',
id: 'gemini-2.5-flash',
inputPrice: 0.075,
outputPrice: 0.30,
contextLength: 1000000,
features: ['vision', 'audio', 'video', 'thinking'],
lastUpdated: new Date().toISOString(),
},
{
provider: 'Google',
name: 'Gemini 2.5 Flash (무료)',
id: 'gemini-2.5-flash-preview-04-17',
inputPrice: 0,
outputPrice: 0,
contextLength: 1000000,
features: ['vision', 'audio', 'video', 'free-tier'],
lastUpdated: new Date().toISOString(),
},
];
}
// 기타 LLM
async function fetchOtherLatest(): Promise<LLMModel[]> {
return [
// Groq
{
provider: 'Groq',
name: 'Llama 3.3 70B',
id: 'llama-3.3-70b-versatile',
inputPrice: 0.59,
outputPrice: 0.79,
contextLength: 128000,
features: ['fast-inference', 'tool-use'],
lastUpdated: new Date().toISOString(),
},
{
provider: 'Groq',
name: 'Llama 3.1 8B (무료)',
id: 'llama-3.1-8b-instant',
inputPrice: 0,
outputPrice: 0,
contextLength: 128000,
features: ['fast-inference', 'free-tier'],
lastUpdated: new Date().toISOString(),
},
// DeepSeek
{
provider: 'DeepSeek',
name: 'DeepSeek V3',
id: 'deepseek-chat',
inputPrice: 0.14,
outputPrice: 0.28,
contextLength: 128000,
features: ['coding', 'reasoning', 'cheap'],
lastUpdated: new Date().toISOString(),
},
{
provider: 'DeepSeek',
name: 'DeepSeek R1',
id: 'deepseek-reasoner',
inputPrice: 0.55,
outputPrice: 2.19,
contextLength: 128000,
features: ['reasoning', 'chain-of-thought'],
lastUpdated: new Date().toISOString(),
},
// Mistral
{
provider: 'Mistral',
name: 'Mistral Large',
id: 'mistral-large-latest',
inputPrice: 2.00,
outputPrice: 6.00,
contextLength: 128000,
features: ['function-calling', 'multilingual'],
lastUpdated: new Date().toISOString(),
},
// Together AI
{
provider: 'Together',
name: 'Llama 3.3 70B Turbo',
id: 'meta-llama/Llama-3.3-70B-Instruct-Turbo',
inputPrice: 0.88,
outputPrice: 0.88,
contextLength: 128000,
features: ['fast', 'open-source'],
lastUpdated: new Date().toISOString(),
},
{
provider: 'Together',
name: 'Qwen 2.5 72B',
id: 'Qwen/Qwen2.5-72B-Instruct-Turbo',
inputPrice: 1.20,
outputPrice: 1.20,
contextLength: 32000,
features: ['multilingual', 'coding'],
lastUpdated: new Date().toISOString(),
},
];
}
// 실행
updateLLMInfo().catch(console.error);
┌─────────────────────────────────────────────────────────────┐
│ 🚀 KreatSaaS 시작 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 📡 LLM 모델 정보 업데이트 중... │
│ │
│ ✅ OpenAI: 4개 모델 (gpt-4o, gpt-4o-mini, o1, o3-mini) │
│ ✅ Anthropic: 3개 모델 (opus, sonnet, haiku) │
│ ✅ Google: 3개 모델 (gemini-2.5-pro, flash, flash-free) │
│ ✅ Groq: 2개 모델 (llama-3.3, llama-3.1) │
│ ✅ DeepSeek: 2개 모델 (v3, r1) │
│ │
│ 📊 총 14개 모델 정보 로드 완료! │
│ 🕐 마지막 업데이트: 2025-01-04 10:30:00 │
│ │
│ 💡 새 모델 발견: │
│ - GPT-4o 가격 인하 ($5 → $2.50/1M) │
│ - Claude Opus 4.5 출시 │
│ - Gemini 2.5 Flash 무료 티어 추가 │
│ │
└─────────────────────────────────────────────────────────────┘
// 용도별 최신 모델 추천
function recommendModel(useCase: string): LLMModel[] {
const models = loadLatestModels();
switch (useCase) {
case 'cheap':
// 가장 저렴한 모델
return models
.filter(m => m.inputPrice > 0) // 무료 제외
.sort((a, b) => a.inputPrice - a.inputPrice)
.slice(0, 3);
case 'free':
// 무료 모델
return models.filter(m => m.inputPrice === 0);
case 'best':
// 최고 성능 모델
return models.filter(m =>
m.id.includes('opus') ||
m.id.includes('gpt-4o') ||
m.id.includes('gemini-2.5-pro')
);
case 'coding':
// 코딩 특화
return models.filter(m =>
m.features.includes('coding') ||
m.provider === 'Anthropic'
);
case 'reasoning':
// 추론 특화
return models.filter(m =>
m.features.includes('reasoning') ||
m.id.includes('o1') ||
m.id.includes('o3')
);
case 'vision':
// 이미지 분석
return models.filter(m => m.features.includes('vision'));
case 'fast':
// 빠른 응답
return models.filter(m =>
m.provider === 'Groq' ||
m.id.includes('mini') ||
m.id.includes('flash')
);
default:
// 기본: 가성비
return models
.sort((a, b) => {
const costA = a.inputPrice + a.outputPrice;
const costB = b.inputPrice + b.outputPrice;
return costA - costB;
})
.slice(0, 5);
}
}
// .mcp.json
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"],
"description": "최신 라이브러리 문서 자동 조회"
}
}
}
// .mcp.json
{
"mcpServers": {
"context7": {
"url": "https://mcp.context7.com/mcp",
"transport": "http",
"headers": {
"CONTEXT7_API_KEY": "${CONTEXT7_API_KEY}"
},
"description": "Context7 Remote MCP"
}
}
}
# Remote 방식 (권장)
claude mcp add context7 https://mcp.context7.com/mcp --transport http
# Local 방식
claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
// Remote 방식
{
"mcpServers": {
"context7": {
"url": "https://mcp.context7.com/mcp"
}
}
}
// Local 방식
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"]
}
}
}
// Cursor Settings > Rules에 추가하면 자동으로 Context7 호출
Always use Context7 MCP when I need library or API documentation.
When I mention a library name, automatically fetch the latest docs.
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"],
"description": "최신 라이브러리 문서 자동 조회",
"autoUpdate": {
"enabled": true,
"onStart": true
}
}
},
"autoUpdate": {
"enabled": true,
"libraries": [
"openai",
"@anthropic-ai/sdk",
"@google/genai",
"groq-sdk",
"together-ai",
"@mistralai/mistralai",
"@supabase/supabase-js",
"next"
],
"updateOnStart": true,
"updateInterval": "24h"
}
}
┌─────────────────────────────────────────────────────────────┐
│ 🔄 LLM 자동 업데이트 시스템 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 시작 시 자동 업데이트 │
│ - Context7 MCP로 최신 문서 조회 │
│ - 각 API의 모델 목록 조회 │
│ - 가격, 기능 정보 추출 │
│ │
│ 2. 주기적 업데이트 (24시간) │
│ - 백그라운드에서 자동 조회 │
│ - 변경사항 감지 시 알림 │
│ │
│ 3. 용도별 최신 모델 추천 │
│ - 저렴한 모델 │
│ - 무료 모델 │
│ - 최고 성능 모델 │
│ - 코딩/추론/비전 특화 │
│ │
│ ⚠️ 항상 최신 정보로 SaaS 아키텍처를 설계합니다! │
│ │
└─────────────────────────────────────────────────────────────┘
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.