К основному содержанию
скилл CX Codex

llm-application-dev — скилл для Claude Code: LLM-приложения и RAG

Скилл для разработки приложений на больших языковых моделях: промпты, RAG-конвейер, вызовы API и обработка ошибок.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add MoizIbnYousaf/ai-agent-skills --skill llm-application-dev -a claude-code
Открыть на GitHub

Что делает llm-application-dev

Скилл даёт агенту готовые шаблоны для кода, который работает с LLM. Внутри — структурированные системные промпты с правилами и контекстом, примеры few-shot для классификации, цепочки рассуждений. Плюс паттерны интеграции: клиенты OpenAI и Anthropic на TypeScript, потоковая выдача ответа через stream: true.

Отдельный блок про RAG. Пайплайн разбит на шаги: получить эмбеддинг вопроса, найти похожие документы в векторной базе, собрать контекст, сгенерировать ответ. Есть функция нарезки документа на чанки с перекрытием и пример хранения эмбеддингов в Supabase с pgvector. Для сбоев — обёртка с повторными попытками и экспоненциальной задержкой при ошибке 429.

Ключи API скилл не создаёт: код читает OPENAI_API_KEY и ANTHROPIC_API_KEY из переменных окружения, так что без них примеры не запустятся. Ещё в примерах зашиты конкретные модели и лимиты вроде max_tokens: 500 — это повод проверить значения под свой счёт и задачу, а не копировать как есть.

Какие задачи решает

  • написать системный промпт с правилами и подстановкой контекста
  • собрать RAG-конвейер от эмбеддинга вопроса до ответа
  • нарезать документ на чанки с перекрытием
  • добавить повторные попытки при ошибке 429
  • сделать потоковую выдачу ответа в чате

Примеры запросов агенту

  • собери RAG-пайплайн для поиска по нашим документам на Supabase с pgvector
  • добавь в вызов LLM повторные попытки с экспоненциальной задержкой на 429
  • сделай потоковый ответ от Anthropic в нашем чате

Как установить llm-application-dev

1Через Skills CLI (Vercel)

npx skills add MoizIbnYousaf/ai-agent-skills --skill llm-application-dev -a claude-code

2Вручную: положить файлы

~/.claude/skills/llm-application-dev/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/llm-application-dev/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора6

backend-development Скилл для проектирования REST API, схем баз данных и микросервисной архитектуры. Пригодится, когда агент пишет бэкенд и нужно, чтобы он держался одних конвенций. CX Codex +1 868установок database-design Скилл по проектированию схем, миграциям и оптимизации запросов для PostgreSQL, MySQL и NoSQL. Пригодится, когда агент пишет SQL. CX Codex +1 604установок code-documentation Скилл задаёт структуру README, API-справки, комментариев и архитектурных заметок, чтобы агент писал документацию по одному шаблону. CX Codex +1 563установок best-practices Превращает сырые запросы к кодинг-агенту в промпты с критериями проверки, ограничениями и файловыми путями. Пригодится для точной постановки задач. CX Codex +1 528установок ask-questions-if-underspecified Скилл заставляет агента задать 1–5 уточняющих вопросов до начала работы, чтобы не переделывать её потом. Вызывается вручную. CX Codex +1 376установок

Похожие

llm-context brave Извлекает готовый контекст веб-страниц через API Brave Search для заземления ответов ИИ. Пригодится при настройке RAG и автономных агентов. CX Codex +1 1 300установок llm-architect VoltAgent Community Проектирует архитектуру LLM-систем для продакшена: от RAG и файнтюнинга до оптимизации инференса в vLLM. Пригодится при высоких нагрузках и оптимизации расходов на токены. 649установок prompt-engineering NeoLabHQ Скилл содержит паттерны составления промптов для агентов, сабагентов и LLM. Пригодится при сборке промпт-шаблонов, цепочек рассуждений и хуков. CX Codex +1 1 400установок ai-engineer sickn33 Скилл для Claude Code и других агентских CLI: задаёт агенту роль LLM-инженера и ведёт от постановки метрик до RAG-пайплайна, агентов и продакшн-обвязки. CX Codex +1 1 300установок ai-product sickn33 Помогает проектировать и оценивать функции с языковыми моделями, поиск по данным и проверяемые ответы. Нужен, когда надо сверить пользу функции с базовым сценарием. CX Codex +1 960установок phoenix-evals официальный [email protected] Скилл помогает создавать и запускать оценщики для AI- и LLM-приложений с Phoenix. Пригодится для разбора ошибок, проверки RAG и оценки качества моделей. 1 000установок

Рядом в теме «ИИ и ML»

Всё по теме «ИИ и ML» →

Вопросы о llm-application-dev

Как установить llm-application-dev в Claude?

Выполните npx skills add MoizIbnYousaf/ai-agent-skills --skill llm-application-dev -a claude-code. Скилл окажется в ~/.claude/skills/llm-application-dev/SKILL.md.

Что делает llm-application-dev?

Даёт шаблоны для приложений на LLM: промпт-инжиниринг, вызовы OpenAI и Anthropic, RAG с векторным поиском, обработку ошибок и советы по работе с токенами.

Что нужно, чтобы примеры заработали?

Код читает OPENAI_API_KEY и ANTHROPIC_API_KEY из переменных окружения. Для RAG-примера нужна векторная база — в шаблоне это Supabase с pgvector.

Исходный текст

SKILL.md · MIT
---
name: llm-application-dev
description: Building applications with Large Language Models - prompt engineering, RAG patterns, and LLM integration. Use for AI-powered features, chatbots, or LLM-based automation.
source: wshobson/agents
license: MIT
version: 4.1.0
---

# LLM Application Development

## Prompt Engineering

### Structured Prompts
```typescript
const systemPrompt = `You are a helpful assistant that answers questions about our product.

RULES:
- Only answer questions about our product
- If you don't know, say "I don't know"
- Keep responses concise (under 100 words)
- Never make up information

CONTEXT:
{context}`;

const userPrompt = `Question: {question}`;
```

### Few-Shot Examples
```typescript
const prompt = `Classify the sentiment of customer feedback.

Examples:
Input: "Love this product!"
Output: positive

Input: "Worst purchase ever"
Output: negative

Input: "It works fine"
Output: neutral

Input: "${customerFeedback}"
Output:`;
```

### Chain of Thought
```typescript
const prompt = `Solve this step by step:

Question: ${question}

Let's think through this:
1. First, identify the key information
2. Then, determine the approach
3. Finally, calculate the answer

Step-by-step solution:`;
```

## API Integration

### OpenAI Pattern
```typescript
import OpenAI from 'openai';

const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

async function chat(messages: Message[]): Promise<string> {
  const response = await openai.chat.completions.create({
    model: 'gpt-4',
    messages,
    temperature: 0.7,
    max_tokens: 500,
  });

  return response.choices[0].message.content ?? '';
}
```

### Anthropic Pattern
```typescript
import Anthropic from '@anthropic-ai/sdk';

const anthropic = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });

async function chat(prompt: string): Promise<string> {
  const response = await anthropic.messages.create({
    model: 'claude-3-opus-20240229',
    max_tokens: 1024,
    messages: [{ role: 'user', content: prompt }],
  });

  return response.content[0].type === 'text'
    ? response.content[0].text
    : '';
}
```

### Streaming Responses
```typescript
async function* streamChat(prompt: string) {
  const stream = await openai.chat.completions.create({
    model: 'gpt-4',
    messages: [{ role: 'user', content: prompt }],
    stream: true,
  });

  for await (const chunk of stream) {
    const content = chunk.choices[0]?.delta?.content;
    if (content) yield content;
  }
}
```

## RAG (Retrieval-Augmented Generation)

### Basic RAG Pipeline
```typescript
async function ragQuery(question: string): Promise<string> {
  // 1. Embed the question
  const questionEmbedding = await embedText(question);

  // 2. Search vector database
  const relevantDocs = await vectorDb.search(questionEmbedding, { limit: 5 });

  // 3. Build context
  const context = relevantDocs.map(d => d.content).join('\n\n');

  // 4. Generate answer
  const prompt = `Answer based on this context:\n${context}\n\nQuestion: ${question}`;
  return await chat(prompt);
}
```

### Document Chunking
```typescript
function chunkDocument(text: string, options: ChunkOptions): string[] {
  const { chunkSize = 1000, overlap = 200 } = options;
  const chunks: string[] = [];

  let start = 0;
  while (start < text.length) {
    const end = Math.min(start + chunkSize, text.length);
    chunks.push(text.slice(start, end));
    start += chunkSize - overlap;
  }

  return chunks;
}
```

### Embedding Storage
```typescript
// Using Supabase with pgvector
async function storeEmbeddings(docs: Document[]) {
  for (const doc of docs) {
    const embedding = await embedText(doc.content);

    await supabase.from('documents').insert({
      content: doc.content,
      metadata: doc.metadata,
      embedding: embedding,  // vector column
    });
  }
}

async function searchSimilar(query: string, limit = 5) {
  const embedding = await embedText(query);

  const { data } = await supabase.rpc('match_documents', {
    query_embedding: embedding,
    match_count: limit,
  });

  return data;
}
```

## Error Handling

```typescript
async function safeLLMCall<T>(
  fn: () => Promise<T>,
  options: { retries?: number; fallback?: T }
): Promise<T> {
  const { retries = 3, fallback } = options;

  for (let i = 0; i < retries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (error.status === 429) {
        // Rate limit - exponential backoff
        await sleep(Math.pow(2, i) * 1000);
        continue;
      }
      if (i === retries - 1) {
        if (fallback !== undefined) return fallback;
        throw error;
      }
    }
  }
  throw new Error('Max retries exceeded');
}
```

## Best Practices

- **Token Management**: Track usage and set limits
- **Caching**: Cache embeddings and common queries
- **Evaluation**: Test prompts with diverse inputs
- **Guardrails**: Validate outputs before using
- **Logging**: Log prompts and responses for debugging
- **Cost Control**: Use cheaper models for simple tasks
- **Latency**: Stream responses for better UX
- **Privacy**: Don't send PII to external APIs

© MoizIbnYousaf · MIT · MoizIbnYousaf/ai-agent-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой