Împărtășește acele ID-uri de fir pesky cu un bookmarklet Handy If you’ve been building on top of OpenAI’s shiny Assistants API, you’ve probably hit the same wall I did: There’s no API endpoint to list your thread IDs. None. Zero. Nada. Nu există un endpoint API pentru a lista ID-urile de thread. Nicăieri. nimic Puteți crea un thread ( ) din POST /v1/threads Puteți obține un thread dacă știți deja ID-ul său ( ) din GET /v1/threads/{id} Puteți chiar să ștergeți unul ( ) din DELETE /v1/threads/{id} Dacă doriţi o simplă pentru a enumera toate firele pe care le-ați creat? Nu există, iar absența acelui singur punct final schimbă totul despre modul în care construiți pe această platformă. GET /v1/threads Forget it. Faptul că o astfel de piesă de bază a ciclului CRUD lipsește face ca dezvoltatorii să simtă că lucrează orbește. Această alegere de design se simte intenționată. OpenAI dorește să împingă persistența înapoi asupra ta: "Este responsabilitatea dvs. să stocați ID-urile de thread." But half the time we’re just prototyping so: Nu avem un tabel de baze de date pentru fire. Nu vrem să construim un conductor de stocare a datelor doar pentru a testa o idee. Vrem doar să lansăm o grămadă de fire de testare, să vedem ce se întâmplă și să mergem mai departe. Și apoi vine ziua în care îți dai seama că ai generat sute (sau zeci de mii, în funcție de scară) de fire, iar acum trebuie să le cureți, să le auditați sau pur și simplu să confirmați ceea ce există. Atunci când bateți în perete și nici măcar nu puteți vedea ce ați creat.Cu cât vă gândiți mai mult la asta, cu atât mai mult vă dați seama că aceasta este o problemă de vizibilitate care afectează totul de la debugare la conformitate. Gap-ul OpenAI lasă larg deschis Every sane API platform in the known universe usually has a list endpoint. Este cel mai de bază ciclu de viață CRUD - Creați, citiți, actualizați, ștergeți. și "R" nu este doar despre preluarea unei înregistrări, este, de asemenea, despre enumerarea lor. Dezvoltatorii se așteaptă să poată întreba, Lăsându-l afară, OpenAI vă forțează în mod eficient să vă autentificați și să stocați ID-urile din prima zi - sau riscați să pierdeți complet urmele. „Ce există?” From a developer’s perspective, that’s a liability. From a data management perspective, it’s a bloody mess. From a security standpoint? A fucking nightmare. Mai puține puncte finale de listă înseamnă mai puțină responsabilitate pentru ce date există încă pe partea lor. Fără un endpoint de listare, nu puteți audita utilizarea. Nu poți curăța cu ușurință experimentele stale. Nu puteți automatiza managementul ciclului de viață. Sunteți lăsat în întuneric, așteptat să aveți încredere în propriile dvs. jurnal și să nu întrebați niciodată ce se află acolo. Fie că este vorba despre securitate, confidențialitate sau pur și simplu păstrarea suprafeței API mai mici, rezultatul este același: Această absență nu cauzează doar inconveniente – creează neîncredere. we can’t list our own threads. Steal List Endpoints înapoi de la OpenAI cu browser-ul tău și My Simple JavaScript Bookmarklet If OpenAI won’t give us a list endpoint, well, we’ll just have to pull up our pants and scrape the goddamn thing. Dar, mai degrabă decât să construiască unele instrumente stupid specifice folosind un agent de flux de lucru fără cap, și mai mult mai mult decât vă puteți aminti în mod corect ... Aveți deja instrumentul perfect. Python Browser-ul dvs. și un modest bookmarklet JavaScript. Un bookmarklet este doar un bookmark de browser care rulează JavaScript împotriva paginii pe care o accesați.Și dacă te uiți la jurnalele de răspuns API din browser, ai deja toate ID-urile de fir de care ai nevoie – ele sunt doar îngropate în text. Dar cel mai bun lucru este că bookmarklet-ul nu contează dacă pagina este formatată sau frumoasă. Este cel mai apropiat de „punctul final al listei omului sărac”. thread_... Here’s the magic snippet: javascript:(function(){ const ids = [...document.body.innerText.matchAll(/thread_[A-Za-z0-9]+/g)] .map(m => m[0]); if (!ids.length) { alert("No thread IDs found on this page."); return; } navigator.clipboard.writeText([...new Set(ids)].join("\n")) .then(() => alert("Copied " + ids.length + " thread IDs to clipboard!")); })(); Adăugați-l ca URL-ul unui bookmark al browser-ului, faceți clic pe acesta pe orice pagină unde apar ID-uri de fir și creșteți: fiecare string-ul este răsturnat, deduplicat și copiat în clipboard-ul dvs. thread_... Fără pluginuri. Fără extensii. Fără instrumente de gimnastică de dezvoltare. Doar un singur clic. So yes, it takes a little time… Scrollă Încarcă mai mult Scrollă Încarcă mai mult Dar odată ce ajungeți la sfârșit (sau la lungimea dorită), puteți să faceți clic pe marcajul salvat mai sus ... și să faceți o listă copiată cu ID-uri de fir pentru a face ceea ce doriți. De ce contează This isn’t only a neat, functional hack. It’s a reminder of the gap between developer needs and API design. Decizia OpenAI de a renunța la listarea șirurilor se simte ca un model întunecat, ceea ce ne face mai greu să vedem ce se acumulează în fundal. Indiferent dacă păstrează aceste date sau nu este în afara punctului - ceea ce contează este că Nu putem verifica singuri. Dacă construiți un produs reglementat în care auditabilitatea contează, nu puteți dovedi literalmente ce fire ați răsturnat. Dacă experimentați, sunteți garantat să creați dezordine pe care nu o puteți vedea. Bookmarklet-ul este o modalitate de a restabili această vizibilitate. Nu corectează API-ul lipsă, dar vă oferă agenție. Cu un singur clic, puteți vedea fiecare ID de fir vizibil în jurnalele dvs., le clipboard și le puteți conduce într-un flux de ștergere în vrac. De asemenea, reflectă relația: dezvoltatorii nu ar trebui să se bazeze pe hack-uri pentru a obține informații despre resursele proprii. Acesta este un semnal că platforma nu își servește utilizatorii la fel de bine cum ar putea. Ce trebuie să faceți odată ce aveți ID-urile dvs. de fir Puneți-le într-un fișier text, Google Sheet, oricare ar fi. Păstrați-le pentru referință, sortați și dedupe dacă este necesar. Folosiți o solicitare HTTP pentru a rula peste fiecare ID și apelați DELETE /v1/threads/{id}. Nuke totul. Dacă nu mai aveți nevoie de acele fire, ștergeți-le și dormiți mai bine știind că au dispărut. Adăugați un plan de ciclu de viață Pe viitor, decideți dacă doriți să înregistrați ID-urile permanent, să le ștergeți imediat după utilizare sau să le stocați temporar cu un TTL. Automatizați curățarea. Configurați o sarcină sau un flux de lucru recurent care șterge automat ID-urile vechi. Combinați cu alerte pentru a ști când firele rămân suspendate. Auditați periodic. Chiar dacă utilizați bookmarklet, faceți-o un obicei de a verifica ce este acolo pe un program. Imaginea mai mare OpenAI ar putea rezolva acest lucru cu un punct final prost: GET /v1/threads Dezvoltatorii nu ar trebui să scrape, bookmarklet, sau spelunk prin jurnalele n8n. Până când fac, cu toate acestea, bookmarklets ca aceasta sunt banda conductă care menține lucrurile în mișcare. That’s it. Este absurd că avem nevoie de hack-uri de browser pentru a ne gestiona resursele. Ea rupe încrederea pe care dezvoltatorii o au într-o API atunci când o astfel de funcționalitate de bază lipsește. Aceasta este mai mult decât un inconvenient pentru dezvoltatori – este o problemă de vizibilitate. Vizibilitatea este responsabilitate. Fără ea, utilizatorii nu pot dovedi ce date există, nu pot șterge cu încredere și nu pot construi o automatizare fiabilă. Bookmarklet-ul este un bandaj inteligent, dar rana este omisiunea deliberată a OpenAI. Ce am creat? ce mai stă acolo? sunt eu cu adevărat în control? Atunci când ne bazăm pe hack-uri pentru a ne gestiona propriul conținut, subliniem cât de multă putere deține platforma asupra noastră și cât de puțin recurs avem atunci când funcționalitatea este reținută. Da, API-ul Asistent este puternic, dar puterea fără vizibilitate simplă standard este periculoasă. Dacă sunteți serios în ceea ce privește utilizarea sa în producție, începeți să vă înregistrați ID-urile de fir din prima zi. Dar dacă sunteți ca ceilalți dintre noi - derutați, prototipați rapid și apoi realizați că trebuie să curățați - bookmarklet-ul meu este mesia dvs. Click, copy, paste, delete. Done. Și poate, doar poate, OpenAI va lua indiciul și ne va oferi un singur punct final pe care fiecare dezvoltator îl așteaptă: o modalitate de a lista propriile noastre resurse. Until then, hacks like this bookmarklet aren’t just useful. They’re essential. Până atunci, hack-uri precum acest bookmarklet nu sunt doar utile.