mcpField
A
ai-engineer

ai-engineer

github.com/curiositech開発258197 回インストール1 日前に更新
リポジトリ

ai-engineer について

ai-engineerは、RAGチャットボットからマルチエージェントシステムまで、本番向けLLMアプリを構築する開発者向けのスキルです。検索設計やアプリの構成に加え、監視やフォールバックなどの運用も扱います。

主な機能

  1. 01RAGアーキテクチャと検索設計
  2. 02LLMアプリとエージェントのパターン
  3. 03マルチモデルルーティング
  4. 04本番監視とコスト管理
  5. 05セキュリティ対策とフォールバック

活用シーン

  1. 01製品ドキュメントを使ったサポートチャットボットの設計
  2. 02再ランキングを含むRAGパイプラインの構築
  3. 03ツール利用ワークフローやマルチエージェントの作成
  4. 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、ローカルモデルドメインに合ったモデルを選ぶ
ベクトル DBPinecone、Weaviate、Chroma、Qdrantユースケースに応じてインデックスを作成
検索Dense、Sparse、HybridHybrid から始めて調整
再ランキング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プロトタイピング多数の統合機能
LlamaIndexRAG に特化ドキュメント処理
Vercel AI SDKストリーミング、Reactエッジ対応
Anthropic SDK直接 API を利用完全な制御
埋め込みモデル
モデル次元数備考
text-embedding-3-large3072最高品質
text-embedding-3-small1536コスト効率に優れています
voyage-21024コード、技術分野
bge-large1024オープンソース

使用する場面

次の用途に使用します:

  • チャットボットや会話型 AI の構築
  • RAG システムの実装
  • ツールを備えた AI エージェントの作成
  • マルチモデルアーキテクチャの設計
  • 本番環境への AI のデプロイ

次の用途には使用しないでください:

  • プロンプトの最適化(prompt-engineer を使用)
  • ML モデルのトレーニング(ml-engineer を使用)
  • データパイプライン(data-pipeline-engineer を使用)
  • 一般的なバックエンド(backend-architect を使用)

重要なポイント:本番環境の AI システムには、優れたプロンプトだけでなく、堅牢な検索、インテリジェントなルーティング、包括的なモニタリング、そして適切な障害処理が必要です。

併用するツール:prompt-engineer(最適化) | chatbot-analytics(モニタリング) | backend-architect(インフラストラクチャ)

コメント