prompt-caching-and-how-to-think-about-it

v3v4 · +9 −9 · View latest

⋯ 973 unchanged lines
          </p>
        </section>
        <section class="scene" data-scene="providers">
        <section class="scene" data-scene="providers" id="providers">
          <span class="section-kicker">Provider comparison</span>
          <h2>Different APIs, same request shape.</h2>
          <p>
⋯ 54 unchanged lines
                The request starts with a stable instruction.
              </p>
            </div>
            <div class="scene-chip" id="sceneChip">1/10</div>
            <div class="scene-chip" id="sceneChip">1/12</div>
          </div>
          <div class="timeline">
⋯ 19 unchanged lines
      </aside>
    </div>
    <footer>
      <div class="page-shell">
        Draft prototype for review. The visual is intentionally generic:
        user, assistant, system prompt, tools, schema, messages, marker.
      </div>
    </footer>
    <script>
      const scenes = [
        {
⋯ 540 unchanged lines
        syncQueued = false;
        const activationLine = Math.min(window.innerHeight * 0.28, 220);
        let active = sceneEls[0];
        const nearBottom =
          window.scrollY + window.innerHeight >=
          document.documentElement.scrollHeight - 24;
        sceneEls.forEach((sceneEl) => {
          const heading = sceneEl.querySelector("h2") || sceneEl;
          if (heading.getBoundingClientRect().top <= activationLine) {
            active = sceneEl;
          }
        });
        if (nearBottom) {
          active = sceneEls[sceneEls.length - 1];
        }
        if (active.dataset.scene !== activeSceneId) {
          render(active.dataset.scene);
⋯ 20 unchanged lines