|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>LLM Tool-Calling Models: Cost & Context Analysis</title> |
|
|
<link rel="stylesheet" href="style.css"> |
|
|
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script> |
|
|
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-annotation@3.0.1/dist/chartjs-plugin-annotation.min.js"></script> |
|
|
<script src="https://cdn.jsdelivr.net/npm/papaparse@5.4.1/papaparse.min.js"></script> |
|
|
</head> |
|
|
<body> |
|
|
<header> |
|
|
<h1>Agentic LLM Price Comparison</h1> |
|
|
<p class="subtitle">Cost-effectiveness analysis of 218 tool-calling models from OpenRouter</p> |
|
|
<p class="date">Data snapshot: November 8, 2025</p> |
|
|
<nav class="header-nav"> |
|
|
<a href="output-input-analysis.html">🔢 Output/Input Price Analysis →</a> |
|
|
</nav> |
|
|
</header> |
|
|
|
|
|
<main> |
|
|
<section class="intro"> |
|
|
<h2>Overview</h2> |
|
|
<p>This analysis examines LLM models with tool-calling capabilities - essential for agentic AI systems, MCP (Model Context Protocol) implementations, and multi-tool orchestration. Models are evaluated across two key dimensions:</p> |
|
|
<ul> |
|
|
<li><strong>Cost per token</strong> - Economic efficiency for production use</li> |
|
|
<li><strong>Context window size</strong> - Capability for complex, long-form tasks</li> |
|
|
</ul> |
|
|
|
|
|
<div class="attribution"> |
|
|
<h3>Methodology</h3> |
|
|
<p><strong>Quadrant Classification:</strong> Models are categorized into four quadrants based on median values calculated from the dataset:</p> |
|
|
<ul> |
|
|
<li><strong>Cost Division:</strong> Median average cost (mean of input + output pricing) = <span id="median-cost-display">calculated from data</span></li> |
|
|
<li><strong>Context Division:</strong> Median context window size = <span id="median-context-display">calculated from data</span></li> |
|
|
</ul> |
|
|
<p>This creates four categories: Low Cost/High Context, High Cost/High Context, Low Cost/Low Context, and High Cost/Low Context.</p> |
|
|
|
|
|
<h3>Attribution & Data Notes</h3> |
|
|
<ul> |
|
|
<li><strong>Data Collection:</strong> <a href="https://danielrosehill.com" target="_blank">Daniel Rosehill</a></li> |
|
|
<li><strong>Collection Date:</strong> November 8, 2025</li> |
|
|
<li><strong>Source:</strong> Prices derived from API calls to <a href="https://openrouter.ai/" target="_blank">OpenRouter</a></li> |
|
|
<li><strong>Pricing Variability:</strong> OpenRouter pricing can fluctuate slightly according to the end inference provider. The same models may have slightly different pricing even at the time of capture.</li> |
|
|
<li><strong>Data Exclusions:</strong> Free models (cost = $0) were excluded from this analysis</li> |
|
|
</ul> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
<section class="stats-grid"> |
|
|
<div class="stat-card"> |
|
|
<div class="stat-number" id="total-models">218</div> |
|
|
<div class="stat-label">Models Analyzed</div> |
|
|
</div> |
|
|
<div class="stat-card"> |
|
|
<div class="stat-number" id="vendors">-</div> |
|
|
<div class="stat-label">Vendors</div> |
|
|
</div> |
|
|
<div class="stat-card"> |
|
|
<div class="stat-number" id="median-input">-</div> |
|
|
<div class="stat-label">Median Input ($/M)</div> |
|
|
</div> |
|
|
<div class="stat-card"> |
|
|
<div class="stat-number" id="median-output">-</div> |
|
|
<div class="stat-label">Median Output ($/M)</div> |
|
|
</div> |
|
|
<div class="stat-card"> |
|
|
<div class="stat-number" id="median-multiple">-</div> |
|
|
<div class="stat-label">Median Out/In Multiple</div> |
|
|
</div> |
|
|
<div class="stat-card"> |
|
|
<div class="stat-number" id="context-range">-</div> |
|
|
<div class="stat-label">Context Range</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
<div class="tabs"> |
|
|
<button class="tab-button active" data-tab="models">All Models</button> |
|
|
<button class="tab-button" data-tab="quadrants">Quadrant Analysis</button> |
|
|
<button class="tab-button" data-tab="analysis">Visual Analysis</button> |
|
|
</div> |
|
|
|
|
|
<div class="tab-content active" id="tab-models"> |
|
|
<section class="data-notes"> |
|
|
<h3>Data Notes</h3> |
|
|
<ul> |
|
|
<li><strong>Cost Calculation:</strong> Input and output pricing shown separately (per million tokens)</li> |
|
|
<li><strong>Data Exclusions:</strong> Free models (cost = $0) were excluded from this analysis</li> |
|
|
<li><strong>Color Coding:</strong> Cells are color-coded by tier - see legend below for ranges</li> |
|
|
</ul> |
|
|
</section> |
|
|
|
|
|
<section class="data-table-section"> |
|
|
<h2>All Models - Comprehensive View</h2> |
|
|
<p>Complete dataset with color-coded cost and context tiers. Click column headers to sort.</p> |
|
|
|
|
|
<div class="tier-legends"> |
|
|
<div class="legend-group"> |
|
|
<h4>Cost Tiers ($/M tokens)</h4> |
|
|
<div class="legend-items"> |
|
|
<div class="legend-item"><span class="tier-indicator cost-very-low"></span> Very Low (< $0.10)</div> |
|
|
<div class="legend-item"><span class="tier-indicator cost-low"></span> Low ($0.10 - $0.50)</div> |
|
|
<div class="legend-item"><span class="tier-indicator cost-medium"></span> Medium ($0.50 - $2.00)</div> |
|
|
<div class="legend-item"><span class="tier-indicator cost-high"></span> High ($2.00 - $5.00)</div> |
|
|
<div class="legend-item"><span class="tier-indicator cost-very-high"></span> Very High (> $5.00)</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="legend-group"> |
|
|
<h4>Context Window Tiers</h4> |
|
|
<div class="legend-items"> |
|
|
<div class="legend-item"><span class="tier-indicator context-small"></span> Small (< 32K)</div> |
|
|
<div class="legend-item"><span class="tier-indicator context-medium"></span> Medium (32K - 128K)</div> |
|
|
<div class="legend-item"><span class="tier-indicator context-large"></span> Large (128K - 256K)</div> |
|
|
<div class="legend-item"><span class="tier-indicator context-very-large"></span> Very Large (256K - 1M)</div> |
|
|
<div class="legend-item"><span class="tier-indicator context-ultra"></span> Ultra (> 1M)</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="table-controls"> |
|
|
<input type="text" id="search" placeholder="Search models..." /> |
|
|
<select id="quadrant-filter"> |
|
|
<option value="">All Quadrants</option> |
|
|
<option value="Low Cost / High Context">Low Cost / High Context</option> |
|
|
<option value="High Cost / High Context">High Cost / High Context</option> |
|
|
<option value="Low Cost / Low Context">Low Cost / Low Context</option> |
|
|
<option value="High Cost / Low Context">High Cost / Low Context</option> |
|
|
</select> |
|
|
</div> |
|
|
<div class="table-wrapper"> |
|
|
<table id="models-table"> |
|
|
<thead> |
|
|
<tr> |
|
|
<th class="sortable" data-sort="model_name">Model Name <span class="sort-indicator"></span></th> |
|
|
<th class="sortable" data-sort="displayVendor">Vendor <span class="sort-indicator"></span></th> |
|
|
<th class="sortable" data-sort="context_length">Context <span class="sort-indicator"></span></th> |
|
|
<th class="sortable" data-sort="input_price_usd_per_m">Input ($/M) <span class="sort-indicator"></span></th> |
|
|
<th class="sortable" data-sort="output_price_usd_per_m">Output ($/M) <span class="sort-indicator"></span></th> |
|
|
<th class="sortable" data-sort="output_input_multiple">Out/In Multiple <span class="sort-indicator"></span></th> |
|
|
<th class="sortable" data-sort="quadrant">Quadrant <span class="sort-indicator"></span></th> |
|
|
</tr> |
|
|
</thead> |
|
|
<tbody id="table-body"> |
|
|
|
|
|
</tbody> |
|
|
</table> |
|
|
</div> |
|
|
</section> |
|
|
</div> |
|
|
|
|
|
<div class="tab-content" id="tab-quadrants"> |
|
|
<section class="data-notes"> |
|
|
<h3>Quadrant Analysis</h3> |
|
|
<ul> |
|
|
<li><strong>Overview:</strong> Models divided into four quadrants based on median cost and context values</li> |
|
|
<li><strong>Green (Low Cost / High Context):</strong> Best value - low prices with large context windows</li> |
|
|
<li><strong>Blue (High Cost / High Context):</strong> Premium models with extensive context capabilities</li> |
|
|
<li><strong>Orange (Low Cost / Low Context):</strong> Budget-friendly for simple tasks</li> |
|
|
<li><strong>Red (High Cost / Low Context):</strong> Specialized models with limited context</li> |
|
|
</ul> |
|
|
</section> |
|
|
|
|
|
<section class="chart-section"> |
|
|
<h2>All Quadrants Overview</h2> |
|
|
<p>Complete view showing all models across quadrants with median division lines.</p> |
|
|
<div class="chart-container"> |
|
|
<canvas id="allQuadrantsChart"></canvas> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
<section class="quadrant-details"> |
|
|
<h2>Individual Quadrant Deep Dive</h2> |
|
|
<p>Detailed view of each quadrant's models for easier comparison within each category.</p> |
|
|
|
|
|
<div class="quadrant-grid"> |
|
|
<div class="quadrant-detail"> |
|
|
<h3 style="color: #10b981;">Low Cost / High Context</h3> |
|
|
<div class="chart-container-small"> |
|
|
<canvas id="quadrant-lchc"></canvas> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="quadrant-detail"> |
|
|
<h3 style="color: #2563eb;">High Cost / High Context</h3> |
|
|
<div class="chart-container-small"> |
|
|
<canvas id="quadrant-hchc"></canvas> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="quadrant-detail"> |
|
|
<h3 style="color: #f59e0b;">Low Cost / Low Context</h3> |
|
|
<div class="chart-container-small"> |
|
|
<canvas id="quadrant-lclc"></canvas> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="quadrant-detail"> |
|
|
<h3 style="color: #ef4444;">High Cost / Low Context</h3> |
|
|
<div class="chart-container-small"> |
|
|
<canvas id="quadrant-hclc"></canvas> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
</div> |
|
|
|
|
|
<div class="tab-content" id="tab-analysis"> |
|
|
<section class="data-notes"> |
|
|
<h3>Analysis Notes</h3> |
|
|
<ul> |
|
|
<li><strong>Quadrant Divisions:</strong> Based on median values for cost and context window size</li> |
|
|
<li><strong>Logarithmic Scale:</strong> Cost axis uses log scale to better visualize the wide price range</li> |
|
|
<li><strong>Median Lines:</strong> Dashed lines show median cost and context values across all models</li> |
|
|
</ul> |
|
|
</section> |
|
|
|
|
|
<section class="chart-section"> |
|
|
<h2>Cost vs Context Quadrant Analysis</h2> |
|
|
<p>Interactive scatter plot showing the relationship between pricing and context window size. Hover over points for detailed model information.</p> |
|
|
<div class="chart-container"> |
|
|
<canvas id="quadrantChart"></canvas> |
|
|
</div> |
|
|
</section> |
|
|
</div> |
|
|
</main> |
|
|
|
|
|
<footer> |
|
|
<p>Data source: <a href="https://openrouter.ai/" target="_blank">OpenRouter API</a> | Analysis: <a href="https://github.com/danielrosehill/OR-Models-With-Tools-0811" target="_blank">GitHub Repository</a></p> |
|
|
<p class="disclaimer">Prices are subject to change. For current pricing, always refer to OpenRouter's live API.</p> |
|
|
</footer> |
|
|
|
|
|
<script src="app.js"></script> |
|
|
</body> |
|
|
</html> |
|
|
|