
Cost Aware LLM Pipeline
FreeOptimize LLM API costs while maintaining quality.
Free · Opens the source repo
What Cost Aware LLM Pipeline does
The Cost Aware LLM Pipeline provides a structured approach to managing the costs associated with using LLM APIs, such as Claude or GPT. It combines several techniques including model routing based on task complexity, budget tracking, retry logic for error handling, and prompt caching. This pipeline is designed to help developers and designers build applications that can efficiently manage API usage without sacrificing the quality of output.
By implementing model routing, the pipeline intelligently selects cheaper models for simpler tasks while reserving more expensive models for complex tasks. This ensures that costs are minimized based on the specific requirements of each request. The budget tracking feature allows users to set a spending limit, providing a safeguard against unexpected expenses. Each API call generates a cost record, enabling users to monitor their spending in real-time.
The retry logic is designed to handle temporary errors effectively, allowing the application to recover from issues like rate limits or server errors without repeating requests that are likely to fail. Additionally, prompt caching reduces the need to resend lengthy system prompts for every request, further optimizing cost and latency. This combination of features makes the Cost Aware LLM Pipeline particularly useful for applications that require batch processing and intelligent model selection.
This skill is ideal for developers and designers working with LLM APIs who need to control costs while maintaining high-quality outputs. It is especially beneficial in production environments where budget constraints are critical, and where intelligent routing of requests can lead to significant savings over time.
When to use it
Use this skill when building applications that call LLM APIs and require cost management features, especially for batch processing tasks.
When not to use it
This skill may not be suitable for simple applications that do not require budget tracking or complex model routing.
What you can build with it
Batch Processing of API Calls
Use the pipeline to manage costs effectively when processing multiple LLM API requests in a batch.
Intelligent Model Selection
Implement the skill to automatically select the appropriate model based on the complexity of the task.
Production Systems with Budget Constraints
Utilize the pipeline in production environments where maintaining budget limits is critical for operational efficiency.
How to install Cost Aware LLM Pipeline
View source1. Install with the skills CLI
npx skills add affaan-m/ecc/cost-aware-llm-pipeline --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by affaan-mコスト認識LLMパイプライン
品質を維持しながらLLM APIのコストをコントロールするためのパターン。モデルルーティング、予算追跡、リトライロジック、プロンプトキャッシングを組み合わせた合成可能なパイプライン。
起動条件
- LLM APIを呼び出すアプリケーションの構築(Claude、GPTなど)
- 複雑さが異なるアイテムのバッチ処理
- API支出の予算内に収める必要がある場合
- 複雑なタスクの品質を犠牲にせずにコストを最適化する場合
コアコンセプト
1. タスクの複雑さによるモデルルーティング
シンプルなタスクには自動的に安価なモデルを選択し、複雑なタスクのために高価なモデルを予約します。
MODEL_SONNET = "claude-sonnet-4-6"
MODEL_HAIKU = "claude-haiku-4-5-20251001"
_SONNET_TEXT_THRESHOLD = 10_000 # 文字数
_SONNET_ITEM_THRESHOLD = 30 # アイテム数
def select_model(
text_length: int,
item_count: int,
force_model: str | None = None,
) -> str:
"""タスクの複雑さに基づいてモデルを選択。"""
if force_model is not None:
return force_model
if text_length >= _SONNET_TEXT_THRESHOLD or item_count >= _SONNET_ITEM_THRESHOLD:
return MODEL_SONNET # 複雑なタスク
return MODEL_HAIKU # シンプルなタスク(3〜4倍安価)
2. 不変のコスト追跡
凍結データクラスで累積支出を追跡します。各API呼び出しは新しいトラッカーを返します — 状態を変更しません。
from dataclasses import dataclass
@dataclass(frozen=True, slots=True)
class CostRecord:
model: str
input_tokens: int
output_tokens: int
cost_usd: float
@dataclass(frozen=True, slots=True)
class CostTracker:
budget_limit: float = 1.00
records: tuple[CostRecord, ...] = ()
def add(self, record: CostRecord) -> "CostTracker":
"""追加されたレコードで新しいトラッカーを返す(selfは変更しない)。"""
return CostTracker(
budget_limit=self.budget_limit,
records=(*self.records, record),
)
@property
def total_cost(self) -> float:
return sum(r.cost_usd for r in self.records)
@property
def over_budget(self) -> bool:
return self.total_cost > self.budget_limit
3. 狭いリトライロジック
一時的なエラーのみリトライします。認証やリクエストエラーでは素早く失敗します。
from anthropic import (
APIConnectionError,
InternalServerError,
RateLimitError,
)
_RETRYABLE_ERRORS = (APIConnectionError, RateLimitError, InternalServerError)
_MAX_RETRIES = 3
def call_with_retry(func, *, max_retries: int = _MAX_RETRIES):
"""一時的なエラーのみリトライし、それ以外はすぐに失敗する。"""
for attempt in range(max_retries):
try:
return func()
except _RETRYABLE_ERRORS:
if attempt == max_retries - 1:
raise
time.sleep(2 ** attempt) # 指数バックオフ
# AuthenticationError、BadRequestErrorなど → 即座に例外発生
4. プロンプトキャッシング
長いシステムプロンプトをキャッシュして、リクエストごとに再送信しないようにします。
messages = [
{
"role": "user",
"content": [
{
"type": "text",
"text": system_prompt,
"cache_control": {"type": "ephemeral"}, # これをキャッシュ
},
{
"type": "text",
"text": user_input, # 可変部分
},
],
}
]
合成
4つのテクニックすべてを単一のパイプライン関数に組み合わせます:
def process(text: str, config: Config, tracker: CostTracker) -> tuple[Result, CostTracker]:
# 1. モデルをルーティング
model = select_model(len(text), estimated_items, config.force_model)
# 2. 予算を確認
if tracker.over_budget:
raise BudgetExceededError(tracker.total_cost, tracker.budget_limit)
# 3. リトライ + キャッシングで呼び出し
response = call_with_retry(lambda: client.messages.create(
model=model,
messages=build_cached_messages(system_prompt, text),
))
# 4. コストを追跡(不変)
record = CostRecord(model=model, input_tokens=..., output_tokens=..., cost_usd=...)
tracker = tracker.add(record)
return parse_result(response), tracker
価格リファレンス(2025〜2026年)
| モデル | 入力($/1Mトークン) | 出力($/1Mトークン) | 相対コスト |
|---|---|---|---|
| Haiku 4.5 | $0.80 | $4.00 | 1x |
| Sonnet 4.6 | $3.00 | $15.00 | 約4x |
| Opus 4.5 | $15.00 | $75.00 | 約19x |
ベストプラクティス
- 最も安価なモデルから始める、複雑さの閾値が満たされた場合にのみ高価なモデルにルーティングする
- バッチ処理の前に明示的な予算制限を設定する — 過剰支出より早期に失敗する
- モデル選択の決定をログに記録する、実際のデータに基づいて閾値を調整できるように
- 1024トークンを超えるシステムプロンプトにはプロンプトキャッシングを使用する — コストとレイテンシーの両方を節約
- 認証またはバリデーションエラーではリトライしない — 一時的な失敗のみ(ネットワーク、レート制限、サーバーエラー)
避けるべきアンチパターン
- 複雑さに関わらずすべてのリクエストに最も高価なモデルを使用すること
- すべてのエラーでリトライすること(永続的な失敗で予算を無駄にする)
- コスト追跡の状態を変更すること(デバッグと監査が困難になる)
- コードベース全体にモデル名をハードコードすること(定数または設定を使用する)
- 繰り返しのシステムプロンプトでプロンプトキャッシングを無視すること
使用すべき場合
- Claude、OpenAI、または同様のLLM APIを呼び出すすべてのアプリケーション
- コストが積み上がるバッチ処理パイプライン
- インテリジェントルーティングが必要なマルチモデルアーキテクチャ
- 予算ガードレールが必要な本番システム
Frequently asked questions about Cost Aware LLM Pipeline
Similar skills
WinMD API Search
Easily find and explore Windows desktop APIs.
WebMCPify
Transform any web app into an agent-ready platform.
Phoenix Tracing
Instrument LLM applications with OpenInference tracing.
Foundry Hosted Agent CopilotKit
Guidance for developing agentic web apps on Azure.
Power Automate Foundation
Connect AI agents to Power Automate seamlessly.
Power Automate Flow Builder
Efficiently build and deploy Power Automate flows programmatically.
