Admitere prin găleată de jetoane
Decide admiterea unei găleți de jetoane dintr-un moment explicit și întoarce starea următoare.
from math import isfinite
def admit(tokens, last, now, capacity, rate, cost):
values = (tokens, last, now, capacity, rate, cost)
if not all(type(x) in (int, float) and isfinite(x) for x in values):
raise ValueError("finite numbers required")
if not (capacity > 0 and rate > 0 and 0 < cost <= capacity
and 0 <= tokens <= capacity and now >= last):
raise ValueError("invalid bucket state")
refill = min(capacity, tokens + (now - last) * rate)
allowed = refill >= cost
return (refill - cost if allowed else refill, now), allowed| Proiect | Verifică epuizarea exactă și reumplerea plafonată, respingând timpul regresiv, costurile invalide și valorile nefinite. |
|---|---|
| Verifică înainte de aplicare | Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări. |
| Modele | Configurează un endpoint compatibil OpenAI sau Anthropic cu URL-ul de bază și cheia API, dacă este necesară. Testează conexiunea. Serverul local trebuie să ruleze; instrumentele externe pot transmite date separat. |
from math import isfinite
def admit(tokens, last, now, capacity, rate, cost):
values = (tokens, last, now, capacity, rate, cost)
if not all(type(x) in (int, float) and isfinite(x) for x in values):
raise ValueError("finite numbers required")
if not (capacity > 0 and rate > 0 and 0 < cost <= capacity
and 0 <= tokens <= capacity and now >= last):
raise ValueError("invalid bucket state")
refill = min(capacity, tokens + (now - last) * rate)
allowed = refill >= cost
return (refill - cost if allowed else refill, now), allowedDescrie tranziția de stare înainte să schimbi politica
TokenCoppice este un spațiu Windows de programare pentru examinarea codului de aplicație cu stare împreună cu un model IA. Începe prin a nota starea anterioară operației și rezultatul așteptat după ea. Aceasta oferă conversației un contract observabil și face mai ușor de văzut dacă o modificare propusă vizează politica sau doar îi rearanjează aritmetica.
O funcție de admitere de tip token bucket oferă un exemplu de sarcină. Adu în discuție regulile actuale privind capacitatea, reumplerea și costul cererii, apoi cere asistentului să inspecteze starea returnată după acceptare sau respingere. Exemplul ajută la formularea revizuirii sursei; operarea unui serviciu de limitare a ratei rămâne responsabilitatea aplicației și infrastructurii tale.
Revizuiește tranziția propusă cu atenție la ipotezele de timp și la starea stocată pentru cererea următoare. Testează limite precum un sold egal exact cu costul și o cerere sosită fără timp scurs. Execută verificările în propriul proiect și inspectează apelanții înainte să presupui că o funcție corectă local stabilește comportamentul cererilor concurente.
Poți alege modele descrise ca nefiltrate printr-un endpoint acceptat compatibil cu OpenAI sau Anthropic care le oferă. Configurează datele de autentificare necesare și verifică instrumentele și contextul disponibile. Comportamentul și limitele modelului de la endpoint se aplică în continuare, iar criteriile tale de acceptare rămân ancorate în politica declarată a aplicației și în rezultatele testelor.
Întrebări pentru modificarea politicilor cu stare
Ce trebuie să includă o cerere privind politica de admitere?
Furnizează starea inițială, costul cererii, valorile de timp și decizia așteptată. Precizează ce valori actualizate trebuie stocate după aceea. Astfel asistentul poate raționa despre o tranziție completă, fără să ghicească politica dintr-o singură expresie aritmetică.
O funcție corectă garantează limitarea concurentă a ratei?
Nu. Inspectează cum citește și scrie aplicația starea comună și ce garanții de concurență oferă acea stocare. O funcție testată izolat nu stabilește că cererile simultane nu pot consuma același sold disponibil.
Cum trebuie să afecteze cererile respinse starea stocată?
Definește explicit acest aspect pentru politica ta, inclusiv orice reumplere pentru timpul scurs și actualizare a marcajului temporal. Cere modelului să explice tranziția propusă și testează cereri succesive, deoarece un apel respins aparent inofensiv poate afecta decizia următoare.
Pot experimenta fără să schimb regulile de admitere active?
Folosește cazuri de test și o instanță de dezvoltare a aplicației pentru a compara tranzițiile înainte să aplici o schimbare de politică. TokenCoppice susține discuția despre cod; deciziile de revizuire și lansare operațională rămân în procesul existent al proiectului.
TokenCoppice · Actualizat 2026-10-25