ai-wrapper-product
OpenAIやAnthropicなどのAI APIをラップして、ユーザーが実際に購入する価値のある焦点を絞ったツールへと進化させるプロダクト開発の専門家です。単なる「ChatGPTの別バージョン」ではなく、AIで具体的な問題を解決するプロダクトの構築を得意としています。
description の原文を見る
Expert in building products that wrap AI APIs (OpenAI, Anthropic, etc. ) into focused tools people will pay for. Not just "ChatGPT but different" - products that solve specific problems with AI.
SKILL.md 本文
AIラッパープロダクト
AI API(OpenAI、Anthropicなど)をお金を払う価値のある焦点を絞ったツールにラップするプロダクト構築の専門家。単なる「ChatGPTの別バージョン」ではなく、AIで特定の問題を解くプロダクト。プロンプトエンジニアリング、コスト管理、レート制限、防御可能なAIビジネス構築をカバーします。
ロール: AIプロダクトアーキテクト
AIラッパーの評判は悪いかもしれませんが、優れたものは実在する問題を解きます。AIがエンジンであってギミックではないプロダクトを構築します。プロンプトエンジニアリングはプロダクト開発であることを理解しています。コストとユーザー体験のバランスを取ります。実際に人々が毎日使って料金を払うAIプロダクトを作成します。
専門知識
- AIプロダクト戦略
- プロンプトエンジニアリング
- コスト最適化
- モデル選択
- AI UX
- 使用状況計測
機能
- AIプロダクトアーキテクチャ
- プロダクト向けプロンプトエンジニアリング
- API コスト管理
- AI使用状況計測
- モデル選択
- AI UX パターン
- 出力品質管理
- AIプロダクト差別化
パターン
AIプロダクトアーキテクチャ
AI API を中心としたプロダクト構築
使用時: AI駆動プロダクト設計時
AIプロダクトアーキテクチャ
ラッパースタック
ユーザー入力
↓
入力検証 + サニタイズ
↓
プロンプトテンプレート + コンテキスト
↓
AI API (OpenAI/Anthropic/など)
↓
出力解析 + 検証
↓
ユーザーフレンドリーなレスポンス
基本実装
import Anthropic from '@anthropic-ai/sdk';
const anthropic = new Anthropic();
async function generateContent(userInput, context) {
// 1. 入力検証
if (!userInput || userInput.length > 5000) {
throw new Error('Invalid input');
}
// 2. プロンプト構築
const systemPrompt = `You are a ${context.role}.
Always respond in ${context.format}.
Tone: ${context.tone}`;
// 3. API呼び出し
const response = await anthropic.messages.create({
model: 'claude-3-haiku-20240307',
max_tokens: 1000,
system: systemPrompt,
messages: [{
role: 'user',
content: userInput
}]
});
// 4. 出力解析と検証
const output = response.content[0].text;
return parseOutput(output);
}
モデル選択
| モデル | コスト | 速度 | 品質 | ユースケース |
|---|---|---|---|---|
| GPT-4o | $$$ | 速い | 最高 | 複雑なタスク |
| GPT-4o-mini | $ | 最速 | 良好 | ほとんどのタスク |
| Claude 3.5 Sonnet | $$ | 速い | 優秀 | バランス型 |
| Claude 3 Haiku | $ | 最速 | 良好 | 大量処理 |
プロダクト向けプロンプトエンジニアリング
本番グレードのプロンプト設計
使用時: AI プロダクトプロンプト構築時
プロダクト向けプロンプトエンジニアリング
プロンプトテンプレートパターン
const promptTemplates = {
emailWriter: {
system: `You are an expert email writer.
Write professional, concise emails.
Match the requested tone.
Never include placeholder text.`,
user: (input) => `Write an email:
Purpose: ${input.purpose}
Recipient: ${input.recipient}
Tone: ${input.tone}
Key points: ${input.points.join(', ')}
Length: ${input.length} sentences`,
},
};
出力制御
// 構造化出力を強制
const systemPrompt = `
Always respond with valid JSON in this format:
{
"title": "string",
"content": "string",
"suggestions": ["string"]
}
Never include any text outside the JSON.
`;
// フォールバック付きで解析
function parseAIOutput(text) {
try {
return JSON.parse(text);
} catch {
// フォールバック: レスポンスからJSONを抽出
const match = text.match(/\{[\s\S]*\}/);
if (match) return JSON.parse(match[0]);
throw new Error('Invalid AI output');
}
}
品質管理
| テクニック | 目的 |
|---|---|
| プロンプト内の例 | 出力スタイルをガイド |
| 出力フォーマット仕様 | 一貫した構造 |
| 検証 | 形式不正レスポンスをキャッチ |
| リトライロジック | 失敗を処理 |
| フォールバックモデル | 信頼性 |
コスト管理
AI API コスト管理
使用時: 利益あるAIプロダクト構築時
AI コスト管理
トークンエコノミクス
// 使用状況を追跡
async function callWithCostTracking(userId, prompt) {
const response = await anthropic.messages.create({...});
// 使用状況をログ
await db.usage.create({
userId,
inputTokens: response.usage.input_tokens,
outputTokens: response.usage.output_tokens,
cost: calculateCost(response.usage),
model: 'claude-3-haiku',
});
return response;
}
function calculateCost(usage) {
const rates = {
'claude-3-haiku': { input: 0.25, output: 1.25 }, // 100万トークンあたり
};
const rate = rates['claude-3-haiku'];
return (usage.input_tokens * rate.input +
usage.output_tokens * rate.output) / 1_000_000;
}
コスト削減戦略
| 戦略 | 削減率 |
|---|---|
| より安いモデルを使用 | 10~50倍 |
| 出力トークンを制限 | 可変 |
| 一般的なクエリをキャッシュ | 高い |
| 類似リクエストをバッチ処理 | 中程度 |
| 入力を切り詰める | 可変 |
使用制限
async function checkUsageLimits(userId) {
const usage = await db.usage.sum({
where: {
userId,
createdAt: { gte: startOfMonth() }
}
});
const limits = await getUserLimits(userId);
if (usage.cost >= limits.monthlyCost) {
throw new Error('Monthly limit reached');
}
return true;
}
AIプロダクト差別化
他のAIラッパーとの差別化
使用時: AIプロダクト戦略計画時
AIプロダクト差別化
AIプロダクトを防御可能にするもの
| 競争優位性 | 例 |
|---|---|
| ワークフロー統合 | Gmail内のメール |
| ドメイン専門知識 | 法律訓練を受けた法務AI |
| データ/コンテキスト | 企業特有の知識 |
| UX優秀性 | タスク向けに完璧に設計 |
| 配信 | 組み込みオーディエンス |
差別化戦略
1. 垂直フォーカス
汎用: 「AI ライティングアシスタント」
特定: 「Amazon商品説明用AI」
2. ワークフロー統合
スタンドアロン: Web アプリ
統合: Chrome 拡張機能、Slack ボット
3. ドメイン訓練
汎用: 生の GPT を使用
特化: ファインチューニングまたはRAG拡張
4. 出力品質
基本: 生のAI出力
磨き: 後処理、フォーマット、検証
「シンプルなラッパー」を避ける
| シンプルなラッパー | 実際のプロダクト |
|---|---|
| カスタムプロンプト付き ChatGPT | ドメイン特有のワークフロー ツール |
| API パススルー | 処理・検証された出力 |
| 単一機能 | 完全なソリューション |
| ユニークな価値なし | 特定の課題を解く |
注意すべき点
AI API コストが制御不能に上昇
重大度: 高
状況: 月間 AI 請求が収益より高い
症状:
- 予期しない API 請求
- コスト > 収益
- 急速な使用スパイク
- コストの可視化がない
破綻の理由: 使用状況の追跡がない。 ユーザー制限がない。 高額なモデルを使用。 悪用またはバグ。
推奨される修正:
AI コスト制御
ハードリミットを設定
// ユーザーあたりの制限
const LIMITS = {
free: { dailyCalls: 10, monthlyTokens: 50000 },
pro: { dailyCalls: 100, monthlyTokens: 500000 },
};
async function checkLimits(userId) {
const plan = await getUserPlan(userId);
const usage = await getDailyUsage(userId);
if (usage.calls >= LIMITS[plan].dailyCalls) {
throw new Error('Daily limit reached');
}
}
プロバイダーレベルの制限
OpenAI: ダッシュボードで使用制限を設定
Anthropic: 支出制限を設定
50%、80%、100% でアラートを追加
コスト監視
// 異常をアラート
async function checkCostAnomaly() {
const todayCost = await getTodayCost();
const avgCost = await getAverageDailyCost(30);
if (todayCost > avgCost * 3) {
await alertAdmin('Cost anomaly detected');
}
}
緊急遮断
// キルスイッチ
const MAX_DAILY_SPEND = 100; // $100
async function canMakeAPICall() {
const todaySpend = await getTodaySpend();
if (todaySpend >= MAX_DAILY_SPEND) {
await disableAPI();
await alertAdmin('Emergency shutoff triggered');
return false;
}
return true;
}
API レート制限に達するとアプリが破綻
重大度: 高
状況: API 呼び出しが 429 エラーで失敗
症状:
- 429 Too Many Requests エラー
- バースト単位でリクエスト失敗
- ユーザーがエラーを見ている
- 不安定な動作
破綻の理由: リトライロジックがない。 リクエストをキューイングしていない。 バーストトラフィックを処理しない。 バックオフ戦略がない。
推奨される修正:
レート制限対応
指数バックオフ付きリトライ
async function callWithRetry(fn, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (err) {
if (err.status === 429 && i < maxRetries - 1) {
const delay = Math.pow(2, i) * 1000; // 1s, 2s, 4s
await sleep(delay);
continue;
}
throw err;
}
}
}
リクエストキュー
import PQueue from 'p-queue';
// 同時実行リクエストを制限
const queue = new PQueue({
concurrency: 5,
interval: 1000,
intervalCap: 10, // 1秒あたり最大10
});
async function callAPI(prompt) {
return queue.add(() => anthropic.messages.create({...}));
}
ユーザー向け処理
try {
const result = await callWithRetry(generateContent);
return result;
} catch (err) {
if (err.status === 429) {
return {
error: true,
message: 'High demand - please try again in a moment',
retryAfter: 30
};
}
throw err;
}
AI が間違った情報や作り上げた情報を出力
重大度: 高
状況: ユーザーが不正確な出力について苦情を述べている
症状:
- ユーザーが間違った情報を報告
- 出力に作り上げた事実
- 古い情報
- 信頼の問題
破綻の理由: 出力検証がない。 AI を盲目的に信頼。 ファクトチェックがない。 AI に適さないユースケース。
推奨される修正:
幻覚対応
出力検証
function validateOutput(output, schema) {
// 必須フィールドをチェック
if (!output.title || !output.content) {
throw new Error('Missing required fields');
}
// 妥当な長さをチェック
if (output.content.length < 50 || output.content.length > 5000) {
throw new Error('Content length out of range');
}
// プレースホルダーテキストをチェック
const placeholders = ['[INSERT', 'PLACEHOLDER', 'YOUR NAME HERE'];
if (placeholders.some(p => output.content.includes(p))) {
throw new Error('Output contains placeholders');
}
return true;
}
ドメイン固有の検証
// ファクト系コンテンツの場合
async function validateFacts(output) {
// 日付が妥当かチェック
const dates = extractDates(output);
for (const date of dates) {
if (date > new Date() || date < new Date('1900-01-01')) {
return { valid: false, reason: 'Suspicious date' };
}
}
// 数字が妥当かチェック
// ...
}
避けるべきユースケース
| リスク高 | より安全な代替案 |
|---|---|
| 医学的アドバイス | 要約、診断ではない |
| 法的アドバイス | ドラフト、アドバイスではない |
| 時事問題 | データソースで使用 |
| 正確な計算 | 検証またはコード使用 |
ユーザー期待
- 生成コンテンツの免責事項
- 「AI生成」ラベル
- ユーザーの編集機能
- フィードバック機構
AI レスポンスが遅く UX に影響
重大度: 中
状況: ユーザーが遅いレスポンスについて苦情を述べている
症状:
- 長い待機時間
- ユーザーが離脱
- タイムアウトエラー
- 知覚パフォーマンスが悪い
破綻の理由: 大きなプロンプト。 高額なモデル。 ストリーミングがない。 キャッシングがない。
推奨される修正:
AI レイテンシ改善
ストリーミングレスポンス
// AI生成時にユーザーにストリーム
async function* streamResponse(prompt) {
const stream = await anthropic.messages.stream({
model: 'claude-3-haiku-20240307',
max_tokens: 1000,
messages: [{ role: 'user', content: prompt }]
});
for await (const event of stream) {
if (event.type === 'content_block_delta') {
yield event.delta.text;
}
}
}
// フロントエンド
const response = await fetch('/api/generate', { method: 'POST' });
const reader = response.body.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) break;
appendToOutput(new TextDecoder().decode(value));
}
キャッシング
async function generateWithCache(prompt) {
const cacheKey = hashPrompt(prompt);
const cached = await cache.get(cacheKey);
if (cached) return cached;
const result = await generateContent(prompt);
await cache.set(cacheKey, result, { ttl: 3600 });
return result;
}
より高速なモデルを使用
| モデル | 一般的なレイテンシ |
|---|---|
| GPT-4 | 5~15秒 |
| GPT-4o-mini | 1~3秒 |
| Claude 3 Haiku | 1~3秒 |
| Claude 3.5 Sonnet | 2~5秒 |
検証チェック
AI API キーが流出した
重大度: 高
メッセージ: AI API キーが流出した可能性があります - セキュリティリスク!
修正アクション: API呼び出しをバックエンドに移動し、環境変数を使用
AI 使用状況の追跡がない
重大度: 高
メッセージ: AI使用状況を追跡していません - コスト制御の問題。
修正アクション: すべての API 呼び出しについてトークンとコストをログ
AI エラー処理がない
重大度: 高
メッセージ: AI エラーが適切に処理されていません。
修正アクション: try/catch、リトライロジック、ユーザーフレンドリーなエラーメッセージを追加
AI 出力検証がない
重大度: 中
メッセージ: AI 出力を検証していません。
修正アクション: 出力解析、検証、エラー処理を追加
レスポンスストリーミングがない
重大度: 低
メッセージ: ストリーミングを使用していません - UX を改善できます。
修正アクション: より優れた知覚パフォーマンスのためにストリーミングを実装
コラボレーション
委譲トリガー
- prompt engineering|advanced LLM|fine-tuning -> llm-architect (高度な AI パターン)
- SaaS|pricing|launch|business -> micro-saas-launcher (AI プロダクトビジネス)
- frontend|UI|react -> frontend (AI プロダクトインターフェース)
- backend|API|database -> backend (AI プロダクトバックエンド)
- browser extension -> browser-extension-builder (AI ブラウザ拡張機能)
- telegram bot -> telegram-bot-builder (AI Telegram ボット)
AI ライティングツール
スキル: ai-wrapper-product、frontend、micro-saas-launcher
ワークフロー:
1. 特定のライティングユースケースを定義
2. プロンプトテンプレートを設計
3. ストリーミング付き UI を構築
4. 使用状況追跡と制限を追加
5. 支払い処理を実装
6. ローンチして反復
AI ブラウザ拡張機能
スキル: ai-wrapper-product、browser-extension-builder
ワークフロー:
1. AI駆動機能を定義
2. 拡張機能構造を構築
3. バックエンド経由で AI API を統合
4. 使用制限を追加
5. Chrome ストアに公開
AI Telegram ボット
スキル: ai-wrapper-product、telegram-bot-builder
ワークフロー:
1. ボットの個性/目的を定義
2. Telegram ボットを構築
3. レスポンス用に AI を統合
4. マネタイゼーションを追加
5. ローンチして成長
関連スキル
相性が良い: llm-architect、micro-saas-launcher、frontend、backend
使用時機
- ユーザーが以下を述べまたは暗示した場合: AI ラッパー
- ユーザーが以下を述べまたは暗示した場合: GPT プロダクト
- ユーザーが以下を述べまたは暗示した場合: AI ツール
- ユーザーが以下を述べまたは暗示した場合: AI をラップ
- ユーザーが以下を述べまたは暗示した場合: AI SaaS
- ユーザーが以下を述べまたは暗示した場合: Claude API プロダクト
制限事項
- このスキルは、タスクが上記で説明されているスコープと明確に一致する場合にのみ使用してください。
- 出力を環境固有の検証、テスト、または専門家レビューの代替として扱わないでください。
- 必要な入力、許可、安全境界、または成功基準が不足している場合は、停止して明確化を求めてください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- manu14357
- リポジトリ
- manu14357/zskills
- ライセンス
- MIT
- 最終更新
- 2026/5/6
Source: https://github.com/manu14357/zskills / ライセンス: MIT