ai-engineer について
ai-engineerは、RAGチャットボットからマルチエージェントシステムまで、本番向けLLMアプリを構築する開発者向けのスキルです。検索設計やアプリの構成に加え、監視やフォールバックなどの運用も扱います。
主な機能
- 01RAGアーキテクチャと検索設計
- 02LLMアプリとエージェントのパターン
- 03マルチモデルルーティング
- 04本番監視とコスト管理
- 05セキュリティ対策とフォールバック
活用シーン
- 01製品ドキュメントを使ったサポートチャットボットの設計
- 02再ランキングを含むRAGパイプラインの構築
- 03ツール利用ワークフローやマルチエージェントの作成
- 04LLMアプリの本番運用準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ curiositech/ some_claude_skills --skill ai-engineerインストール後、Claude Code で/ai-engineerを入力して読み込まれたか確認します。
同梱ファイル.claude-plugin/plugin.json
詳細
AI エンジニア
シンプルなチャットボットから複雑なマルチエージェントシステムまで、本番環境に対応した LLM アプリケーションの構築を専門とします。RAG アーキテクチャ、ベクトルデータベース、プロンプト管理、エンタープライズ向け AI のデプロイを得意としています。
クイックスタート
User: "Build a customer support chatbot with our product documentation"
AI Engineer:
1. Design RAG architecture (chunking, embedding, retrieval)
2. Set up vector database (Pinecone/Weaviate/Chroma)
3. Implement retrieval pipeline with reranking
4. Build conversation management with context
5. Add guardrails and fallback handling
6. Deploy with monitoring and observability
結果:数週間ではなく数日で、本番環境に対応した AI チャットボットを構築できます。
コアコンピテンシー
1. RAG システム設計
| コンポーネント | 実装 | ベストプラクティス |
|---|---|---|
| チャンク分割 | セマンティック、トークンベース、階層型 | 512~1024 トークン、オーバーラップ 10~20% |
| 埋め込み | OpenAI、Cohere、ローカルモデル | ドメインに合ったモデルを選ぶ |
| ベクトル DB | Pinecone、Weaviate、Chroma、Qdrant | ユースケースに応じてインデックスを作成 |
| 検索 | Dense、Sparse、Hybrid | Hybrid から始めて調整 |
| 再ランキング | Cross-encoder、Cohere Rerank | 常に上位 k 件を再ランキング |
2. LLM アプリケーションのパターン
- メモリとコンテキスト管理を備えたチャット
- ツールを使用するエージェント型ワークフロー
- マルチモデルのオーケストレーション(ルーター+専門モデル)
- 構造化出力の生成(JSON、XML)
- エラー処理を備えたストリーミング応答
3. 本番運用
- トークン使用量の追跡とコストの最適化
- レイテンシの監視とキャッシュ戦略
- プロンプトのバージョンを対象とした A/B テスト
- フォールバックチェーンとグレースフルデグラデーション
- セキュリティ(プロンプトインジェクション、PII の取り扱い)
アーキテクチャパターン
基本的な RAG パイプライン
// Simple RAG implementation
async function ragQuery(query: string): Promise<string> {
// 1. Embed the query
const queryEmbedding = await embed(query);
// 2. Retrieve relevant chunks
const chunks = await vectorDb.query({
vector: queryEmbedding,
topK: 10,
includeMetadata: true
});
// 3. Rerank for relevance
const reranked = await reranker.rank(query, chunks);
const topChunks = reranked.slice(0, 5);
// 4. Generate response with context
const response = await llm.chat({
system: SYSTEM_PROMPT,
messages: [
{ role: 'user', content: buildPrompt(query, topChunks) }
]
});
return response.content;
}
エージェントアーキテクチャ
// Agentic loop with tool use
interface Agent {
systemPrompt: string;
tools: Tool[];
maxIterations: number;
}
async function runAgent(agent: Agent, task: string): Promise<string> {
const messages: Message[] = [];
let iterations = 0;
while (iterations < agent.maxIterations) {
const response = await llm.chat({
system: agent.systemPrompt,
messages: [...messages, { role: 'user', content: task }],
tools: agent.tools
});
if (!response.toolCalls) {
return response.content; // Final answer
}
// Execute tools and continue
const toolResults = await executeTools(response.toolCalls);
messages.push({ role: 'assistant', content: response });
messages.push({ role: 'tool', content: toolResults });
iterations++;
}
throw new Error('Max iterations exceeded');
}
マルチモデルルーター
// Route queries to appropriate models
const MODEL_ROUTER = {
simple: 'claude-3-haiku', // Fast, cheap
moderate: 'claude-3-sonnet', // Balanced
complex: 'claude-3-opus', // Best quality
};
function routeQuery(query: string, context: any): ModelId {
// Classify complexity
if (isSimpleQuery(query)) return MODEL_ROUTER.simple;
if (requiresReasoning(query, context)) return MODEL_ROUTER.complex;
return MODEL_ROUTER.moderate;
}
実装チェックリスト
RAG システム
- ドキュメント取り込みパイプライン
- チャンク分割戦略(セマンティック方式を推奨)
- 埋め込みモデルの選定
- ベクトルデータベースのセットアップ
- ハイブリッド検索による検索
- 再ランキング層
- 引用元/ソースの追跡
- 評価指標(関連性、忠実性)
本番環境への準備
- エラー処理と再試行
- レート制限
- トークンの追跡
- コストの監視
- レイテンシ指標
- キャッシュ層
- フォールバック応答
- PII フィルタリング
- プロンプトインジェクション対策
可観測性
- リクエストのログ記録
- 応答品質のスコアリング
- ユーザーフィードバックの収集
- A/B テストフレームワーク
- ドリフト検出
- アラートのしきい値
アンチパターン
アンチパターン:何でも RAG にする
どのようなものか:すべてのクエリに RAG を使用する
なぜ問題か:不要な場合でもレイテンシ、コスト、複雑さが増します
代わりに:クエリを分類し、コンテキストが必要な場合にのみ RAG を使用します
アンチパターン:文字数によるチャンク分割
どのようなものか:チャンクに text.slice(0, 1000) を使用する
なぜ問題か:意味が損なわれ、検索の質が低下します
代わりに:ドキュメントの構造を尊重したセマンティックなチャンク分割を行います
アンチパターン:再ランキングを行わない
どのようなものか:ベクトルの類似度を最終的なランキングとして使用する
なぜ問題か:埋め込みの類似度はクエリとの関連性と一致しません
代わりに:常に Cross-encoder による再ランキングを追加します
アンチパターン:コンテキストの制限がない
どのようなものか:取得したすべてのチャンクをプロンプトに詰め込む
なぜ問題か:関連性が薄まり、トークンが無駄になり、モデルが混乱します
代わりに:再ランキング後の上位 3~5 件のチャンクを使用し、動的に選択します
アンチパターン:ガードレールがない
どのようなものか:ユーザー入力をそのまま LLM に渡す
なぜ問題か:プロンプトインジェクション、有害な出力、話題から外れた応答につながります
代わりに:入力検証、出力フィルタリング、トピックのガードレールを適用します
技術スタック
ベクトルデータベース
| データベース | 最適な用途 | 備考 |
|---|---|---|
| Pinecone | 本番環境、スケール | マネージド、高速 |
| Weaviate | ハイブリッド検索 | GraphQL、モジュール |
| Chroma | 開発、ローカル環境 | 組み込み型、シンプル |
| Qdrant | セルフホスト、フィルター | Rust、高性能 |
| pgvector | 既存の Postgres | 簡単に統合可能 |
LLM フレームワーク
| フレームワーク | 最適な用途 | 備考 |
|---|---|---|
| LangChain | プロトタイピング | 多数の統合機能 |
| LlamaIndex | RAG に特化 | ドキュメント処理 |
| Vercel AI SDK | ストリーミング、React | エッジ対応 |
| Anthropic SDK | 直接 API を利用 | 完全な制御 |
埋め込みモデル
| モデル | 次元数 | 備考 |
|---|---|---|
| text-embedding-3-large | 3072 | 最高品質 |
| text-embedding-3-small | 1536 | コスト効率に優れています |
| voyage-2 | 1024 | コード、技術分野 |
| bge-large | 1024 | オープンソース |
使用する場面
次の用途に使用します:
- チャットボットや会話型 AI の構築
- RAG システムの実装
- ツールを備えた AI エージェントの作成
- マルチモデルアーキテクチャの設計
- 本番環境への AI のデプロイ
次の用途には使用しないでください:
- プロンプトの最適化(prompt-engineer を使用)
- ML モデルのトレーニング(ml-engineer を使用)
- データパイプライン(data-pipeline-engineer を使用)
- 一般的なバックエンド(backend-architect を使用)
重要なポイント:本番環境の AI システムには、優れたプロンプトだけでなく、堅牢な検索、インテリジェントなルーティング、包括的なモニタリング、そして適切な障害処理が必要です。
併用するツール:prompt-engineer(最適化) | chatbot-analytics(モニタリング) | backend-architect(インフラストラクチャ)