Paring Back Those Pesky Thread IDs with a Handy Bookmarklet (ハードブックマークレット) 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. あなたのトレード ID をリストするための API エンドポイントはありません。 ゼロ!ゼロ!ゼロ! トレードを作成する( ( ) POST /v1/threads すでにアイデンティティを認識している場合は、トレードを取得できます( ( ) GET /v1/threads/{id} 1 を削除することもできます( ) ( ) DELETE /v1/threads/{id} もしあなたが単純な あなたが作成したすべてのトレードをリストアップするには? それは存在しませんし、その単一エンドポイントの欠如は、このプラットフォームの上にどのように構築するかについてすべてを変えます。 GET /v1/threads Forget it. CRUDサイクルの基本的な部分が欠けているという事実は、開発者が盲目的に働いているように感じます。 そのデザインの選択は意図的に感じる。OpenAIはあなたに堅持を押し戻したい: 「トレードIDを保存するのがあなたの責任です」 But half the time we’re just prototyping so: トレードのためのデータベーステーブルはありません。 私たちはアイデアをテストするためにデータストアパイプラインを構築したくない。 我々はただ、テストトレードを大量に発射し、何が起こるかを見て、前進したい。 そして、あなたが何百もの(または規模に応じて何万もの)トレードを生成したことに気づいた日が来る、そして今あなたはそれらをクリアし、それらを監査し、あるいは単に存在するものを確認する必要があります。 それは、あなたが壁に突っ込んで、あなたが作成したものをさえ見ることができないときです。あなたがそれについて考えるほど、あなたはこれがデバッグからコンプライアンスに至るまですべてに影響を与える可視性の問題であることに気づくほどです。 The Gap OpenAI Leaves Wide Openの記事一覧 Every sane API platform in the known universe usually has a list endpoint. それは最も基本的なCRUDライフサイクル - 作成、読書、更新、削除です。そして「R」は単に1つのレコードを取得するだけでなく、それらをリストすることも重要です。 開発者の方々は、尋ねると、 OpenAIはそれを外すことで、最初の日からIDをログインし、保存することを効率的に強制します - あるいは完全にトラックを失う可能性があります。 「何が存在するの?」 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. リストのエンドポイントが少なくなることは、彼らの側に何のデータがまだ存在しているかについての責任を減らすことを意味します。 リストエンドポイントがなければ、使用を監査することはできません。 安定した実験を簡単にクリアすることはできません。 ライフサイクル管理を自動化することはできません。 あなたは暗闇に残され、自分のログを信頼することを期待し、何がそこに座っているのかを決して尋ねない。 セキュリティ、プライバシー、または単にAPI表面を小さく保つことに関わらず、結果は同じです。 その欠席は不便を引き起こすだけでなく、不信感を生み出します。 we can’t list our own threads. あなたのブラウザと私のシンプルなJavaScriptブックマークレットでOpenAIからリストエンドポイントを盗む If OpenAI won’t give us a list endpoint, well, we’ll just have to pull up our pants and scrape the goddamn thing. しかし、頭のないワークフローエージェントを使用して、いくつかのバカに特定のツールを構築するのではなく、 あなたが正しく覚えているよりも...あなたはすでに完璧なツールを持っています。 Python あなたのブラウザ、そして謙虚なJavaScriptブックマークレット。 ブックマークは、あなたが閲覧しているページに対してJavaScriptを実行するブラウザのブックマークにすぎません. And if you’re staring at API response logs in the browser, you already have all the thread IDs you need — they’re just buried in the text. あなたがブラウザのAPI応答ログを見ている場合、あなたはすでに必要なすべてのトレードIDを持っています。 しかし、最高のことは、ブックマークレットがページがフォーマットされているか、かわいいかどうかは気にしないことです。 これは「貧乏人のリストのエンドポイント」に最も近いものだ。 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!")); })(); ブラウザのブックマークの URL として追加し、トレード ID が表示されるページにクリックし、ブーム:すべて string は削除され、デドピレーションされ、あなたのクリップボードにコピーされます。 thread_... プラグインなし. 拡張機能なし. デヴツールなし. 1 クリックのみ。 So yes, it takes a little time… スクロール LOW MORE スクロール LOW MORE しかし、あなたが終わりに到達すると(またはあなたの望む長さ)あなたは、上に保存されたブックマークレットをクリックし、あなたがやりたいことをするためにトレイドIDのきれいにコピーされたリストをブームすることができます。 なぜこれが重要なのか This isn’t only a neat, functional hack. It’s a reminder of the gap between developer needs and API design. 私たちは透明でフルライフサイクルなAPIに慣れています。OpenAIのトレードリストを省略する決定は暗いパターンのように感じ、背景に何が蓄積しているかを見るのが困難になります。 彼らがそのデータを保持しているか否かは、ポイントの向こう側にある - 重要なのは、 自分では検証できません。 監査性が重要な規制された製品を構築している場合は、文字通り、あなたがスプーンしたトレードを証明することはできません。 あなたが実験しているなら、あなたは見えない混乱を作り出す保証があります。 ブックマークは、その可視性を回復する方法です。それは欠けているAPIを修正するものではありませんが、あなたにエージェンスを与えます。一つのクリックで、あなたはあなたのログで目に見えるすべてのトレードIDを見ることができ、それらをクリップボードし、それらを大量削除のフローにパイプすることができます。 また、開発者は、自分の資源についての情報を得るためにハッキングに頼る必要はありません。それが、プラットフォームがユーザーにできる限りのサービスを提供していないというシグナルです。 あなたがあなたのトレードIDを持った後に何をすべきか それらをテキストファイル、Google Sheet、何でも貼り付け、必要に応じて参照のために保存し、整理し、削除します。 HTTP リクエストを使用して、各 ID をロープして DELETE /v1/threads/{id} を呼び出します。 Nuke everything. If you don't need those threads anymore, wipe them and sleep better knowing they're gone. 管理可能なブロックでそれらを削除して、API rate limitsの下にとどまります。 ライフサイクルプランを追加します。今後、ID を永久にログインするか、使用後に直ちに削除するか、TTL で一時的に保存するかを決定します。 自動的なクリーニング 古い ID を自動的にスワイプする繰り返しのタスクまたはワークフローを設定します。アラートと組み合わせれば、トレードが閉じ込められているときに知ることができます。 定期的に監査します. あなたがブックマークレットを使用しても、スケジュールに何があるかをチェックする習慣を作ります。 より大きな画像 OpenAIはこれを一つの愚かでシンプルなエンドポイントで解決することができます: GET /v1/threads 開発者は、n8n ログを通してスクラップ、ブックマークレット、またはスパイランクする必要はありませんが、そうするまで、このようなブックマークレットは物事を動かすための管道テープです。 That’s it. 私たち自身のリソースを管理するためにブラウザハックが必要であることは馬鹿げている。 それは、そのような基本的な機能が欠けているときに、開発者がAPIに持っている信頼を破ります. We should not be forced to invent workarounds for what should be table stakes. これは単なる開発者の不便以上の問題であり、可視性の問題です. 可視性は責任です. それがなければ、ユーザーは何のデータがあるのかを証明できず、自信を持って削除できず、信頼できる自動化を構築できません。 ブックマークレットはスマートなバンダージですが、その傷はOpenAIの意図的な省略であるが、実際には、すべての開発者が常に次のように推測している。 僕は何を作ったのか? 何がまだそこに座っているのか? 僕は本当にコントロールしているのか? 私たちが自分のコンテンツを管理するためにハッキングに依存するとき、私たちはプラットフォームが私たちにどれだけの権力を持っているか、そして機能が抑えられるときのリクエストがどれほど少ないかを強調します。 はい、Assistants API は強力ですが、ボグ標準の簡単な可視性のないパワーは危険です。 しかし、もしあなたが他の誰かのようであれば、周りに混乱し、急速にプロトタイプを作り、そしてあなたが掃除する必要があることに気づくならば、私のブックマークはあなたのメシアです。 Click, copy, paste, delete. Done. そして、もしかしたら、OpenAIはヒントを取って、すべての開発者が期待する1つのエンドポイントを与えるかもしれません:私たちのリソースをリストアップする方法です。 Until then, hacks like this bookmarklet aren’t just useful. They’re essential. それまでは、このブックマークレットのようなハックは役に立つだけでなく、必要不可欠です。