|
262 | 262 |
|
263 | 263 | <section class="hero"> |
264 | 264 | <h1><span>llmjson</span></h1> |
265 | | - <p class="tagline">100% valid JSON from local LLMs. Zero retries. Zero post-processing. Constrained decoding on Apple Silicon.</p> |
266 | | - <div class="install-box" onclick="navigator.clipboard.writeText('pip install jsongate')" title="Click to copy">pip install jsongate</div> |
| 265 | + <p class="tagline">Valid JSON from local LLMs. No server, no retries, 10x faster than Ollama. Constrained decoding on Apple Silicon.</p> |
| 266 | + <div class="install-box" onclick="navigator.clipboard.writeText('pip install llmjson')" title="Click to copy">pip install llmjson</div> |
267 | 267 | </section> |
268 | 268 |
|
269 | 269 | <section class="stats"> |
@@ -334,49 +334,56 @@ <h3>Valid JSON, guaranteed</h3> |
334 | 334 | </section> |
335 | 335 |
|
336 | 336 | <section class="compare"> |
337 | | - <h2>Why not just retry?</h2> |
| 337 | + <h2>How does it compare?</h2> |
338 | 338 | <table> |
339 | 339 | <thead> |
340 | 340 | <tr> |
341 | 341 | <th>Approach</th> |
342 | 342 | <th>100% valid</th> |
343 | | - <th>No retries</th> |
| 343 | + <th>Speed</th> |
| 344 | + <th>No server</th> |
344 | 345 | <th>Local/private</th> |
345 | | - <th>Schema-aware</th> |
346 | 346 | </tr> |
347 | 347 | </thead> |
348 | 348 | <tbody> |
349 | 349 | <tr class="highlight-row"> |
350 | 350 | <td>llmjson</td> |
351 | 351 | <td class="yes">Yes</td> |
352 | | - <td class="yes">Yes</td> |
| 352 | + <td class="yes">~1-2s</td> |
353 | 353 | <td class="yes">Yes</td> |
354 | 354 | <td class="yes">Yes</td> |
355 | 355 | </tr> |
356 | 356 | <tr> |
357 | | - <td>Retry + parse</td> |
358 | | - <td class="no">No</td> |
359 | | - <td class="no">No</td> |
360 | | - <td class="partial">Depends</td> |
361 | | - <td class="no">No</td> |
| 357 | + <td>Ollama --format json</td> |
| 358 | + <td class="yes">Yes</td> |
| 359 | + <td class="partial">~10-25s</td> |
| 360 | + <td class="no">No (daemon)</td> |
| 361 | + <td class="yes">Yes</td> |
362 | 362 | </tr> |
363 | 363 | <tr> |
364 | | - <td>OpenAI JSON mode</td> |
365 | | - <td class="partial">Mostly</td> |
| 364 | + <td>OpenAI Structured Outputs</td> |
366 | 365 | <td class="yes">Yes</td> |
| 366 | + <td class="yes">~1-3s</td> |
| 367 | + <td class="no">No (API)</td> |
367 | 368 | <td class="no">No</td> |
368 | | - <td class="partial">Partial</td> |
369 | 369 | </tr> |
370 | 370 | <tr> |
371 | 371 | <td>Outlines / Guidance</td> |
372 | 372 | <td class="yes">Yes</td> |
| 373 | + <td class="yes">~1-3s</td> |
373 | 374 | <td class="yes">Yes</td> |
374 | 375 | <td class="yes">Yes</td> |
375 | | - <td class="yes">Yes</td> |
| 376 | + </tr> |
| 377 | + <tr> |
| 378 | + <td>Retry + parse</td> |
| 379 | + <td class="no">No</td> |
| 380 | + <td class="no">Varies</td> |
| 381 | + <td class="partial">Depends</td> |
| 382 | + <td class="partial">Depends</td> |
376 | 383 | </tr> |
377 | 384 | </tbody> |
378 | 385 | </table> |
379 | | - <p style="color: var(--text-muted); margin-top: 16px; font-size: 14px;">llmjson is purpose-built for Apple Silicon with MLX. Outlines and Guidance target CUDA/CPU. Pick the right tool for your hardware.</p> |
| 386 | + <p style="color: var(--text-muted); margin-top: 16px; font-size: 14px;">llmjson is a Python library for Apple Silicon (MLX). No server process, no API keys. Outlines and Guidance target CUDA/CPU. Ollama works but runs 10-25x slower on the same hardware. Pick the right tool for your setup.</p> |
380 | 387 | </section> |
381 | 388 |
|
382 | 389 | <section class="compare" style="padding-top: 0; border-top: none;"> |
@@ -420,7 +427,7 @@ <h2>CLI included</h2> |
420 | 427 | <h2>Get started in 30 seconds</h2> |
421 | 428 | <p>Requires Python 3.9+ and Apple Silicon (M1/M2/M3/M4).</p> |
422 | 429 | <a href="https://github.com/fatdinhero/llmjson" class="btn">GitHub</a> |
423 | | - <a href="https://pypi.org/project/jsongate/" class="btn btn-secondary">PyPI</a> |
| 430 | + <a href="https://pypi.org/project/llmjson/" class="btn btn-secondary">PyPI</a> |
424 | 431 | <a href="blog/how-i-got-100-percent-valid-json.html" class="btn btn-secondary">Blog Post</a> |
425 | 432 | </section> |
426 | 433 |
|
|
0 commit comments