Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 1品質スコア 58/100

perplexity-performance-tuning

Perplexity APIのパフォーマンスをキャッシング、バッチ処理、コネクションプーリングで最適化します。APIレスポンスが遅い場合、キャッシング戦略を導入したい場合、またはPerplexity統合のリクエストスループットを最適化したい場合に活用できます。「perplexity performance」「optimize perplexity」「perplexity latency」「perplexity caching」「perplexity slow」「perplexity batch」といったフレーズで起動します。

description の原文を見る

Optimize Perplexity API performance with caching, batching, and connection pooling. Use when experiencing slow API responses, implementing caching strategies, or optimizing request throughput for Perplexity integrations. Trigger with phrases like "perplexity performance", "optimize perplexity", "perplexity latency", "perplexity caching", "perplexity slow", "perplexity batch".

SKILL.md 本文

Perplexity パフォーマンスチューニング

概要

キャッシング、バッチ処理、接続プーリングを使用して Perplexity API のパフォーマンスを最適化します。

前提条件

  • Perplexity SDK がインストール済み
  • 非同期パターンの理解
  • Redis またはメモリ内キャッシュが利用可能(オプション)
  • パフォーマンス監視が導入済み

レイテンシベンチマーク

操作P50P95P99
Read50ms150ms300ms
Write100ms250ms500ms
List75ms200ms400ms

キャッシング戦略

レスポンスキャッシング

import { LRUCache } from 'lru-cache';

const cache = new LRUCache<string, any>({
  max: 1000,
  ttl: 60000, // 1 minute
  updateAgeOnGet: true,
});

async function cachedPerplexityRequest<T>(
  key: string,
  fetcher: () => Promise<T>,
  ttl?: number
): Promise<T> {
  const cached = cache.get(key);
  if (cached) return cached as T;

  const result = await fetcher();
  cache.set(key, result, { ttl });
  return result;
}

Redis キャッシング(分散)

import Redis from 'ioredis';

const redis = new Redis(process.env.REDIS_URL);

async function cachedWithRedis<T>(
  key: string,
  fetcher: () => Promise<T>,
  ttlSeconds = 60
): Promise<T> {
  const cached = await redis.get(key);
  if (cached) return JSON.parse(cached);

  const result = await fetcher();
  await redis.setex(key, ttlSeconds, JSON.stringify(result));
  return result;
}

リクエストバッチ処理

import DataLoader from 'dataloader';

const perplexityLoader = new DataLoader<string, any>(
  async (ids) => {
    // Batch fetch from Perplexity
    const results = await perplexityClient.batchGet(ids);
    return ids.map(id => results.find(r => r.id === id) || null);
  },
  {
    maxBatchSize: 100,
    batchScheduleFn: callback => setTimeout(callback, 10),
  }
);

// Usage - automatically batched
const [item1, item2, item3] = await Promise.all([
  perplexityLoader.load('id-1'),
  perplexityLoader.load('id-2'),
  perplexityLoader.load('id-3'),
]);

接続の最適化

import { Agent } from 'https';

// Keep-alive connection pooling
const agent = new Agent({
  keepAlive: true,
  maxSockets: 10,
  maxFreeSockets: 5,
  timeout: 30000,
});

const client = new PerplexityClient({
  apiKey: process.env.PERPLEXITY_API_KEY!,
  httpAgent: agent,
});

ページネーション最適化

async function* paginatedPerplexityList<T>(
  fetcher: (cursor?: string) => Promise<{ data: T[]; nextCursor?: string }>
): AsyncGenerator<T> {
  let cursor: string | undefined;

  do {
    const { data, nextCursor } = await fetcher(cursor);
    for (const item of data) {
      yield item;
    }
    cursor = nextCursor;
  } while (cursor);
}

// Usage
for await (const item of paginatedPerplexityList(cursor =>
  perplexityClient.list({ cursor, limit: 100 })
)) {
  await process(item);
}

パフォーマンス監視

async function measuredPerplexityCall<T>(
  operation: string,
  fn: () => Promise<T>
): Promise<T> {
  const start = performance.now();
  try {
    const result = await fn();
    const duration = performance.now() - start;
    console.log({ operation, duration, status: 'success' });
    return result;
  } catch (error) {
    const duration = performance.now() - start;
    console.error({ operation, duration, status: 'error', error });
    throw error;
  }
}

実装手順

ステップ 1: ベースラインの確立

Perplexity の重要な操作に対する現在のレイテンシを測定します。

ステップ 2: キャッシングの実装

頻繁にアクセスされるデータに対するレスポンスキャッシングを追加します。

ステップ 3: バッチ処理の有効化

DataLoader またはそれに類するツールを使用して自動リクエストバッチ処理を行います。

ステップ 4: 接続の最適化

keep-alive による接続プーリングを構成します。

出力

  • API レイテンシの削減
  • キャッシングレイヤーの実装
  • リクエストバッチ処理の有効化
  • 接続プーリングの構成

エラーハンドリング

問題原因解決策
キャッシュミス嵐TTL 期限切れstale-while-revalidate を使用
バッチタイムアウトアイテムが多すぎるバッチサイズを削減
接続枯渇プーリングなしmaxSockets を構成
メモリ圧力キャッシュが大きすぎる最大キャッシュエントリを設定

シンプルなパフォーマンスラッパー

const withPerformance = <T>(name: string, fn: () => Promise<T>) =>
  measuredPerplexityCall(name, () =>
    cachedPerplexityRequest(`cache:${name}`, fn)
  );

リソース

次のステップ

コスト最適化については、perplexity-cost-tuning を参照してください。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
Brmbobo
リポジトリ
Brmbobo/Web2podcast
ライセンス
MIT
最終更新
2026/1/26

Source: https://github.com/Brmbobo/Web2podcast / ライセンス: MIT

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: Brmbobo · Brmbobo/Web2podcast · ライセンス: MIT