Zusammenfassung: Um das Entwicklererlebnis zu verbessern, hat AgentStation das uuidkey
-Paket erstellt, um UUIDs in schöne und leicht lesbare API-Schlüssel zu kodieren. Dieses Paket unterstützt UUIDv7 und kann Schlüssel für die Datenbanksortierung und -indizierung dekodieren.
Frage:
API-Schlüssel sind ein wichtiger Bestandteil der ersten Interaktion eines Benutzers mit AgentStation-Produkten. Wir möchten, dass die Tasten schön und einfach zu bedienen sind, aber es scheint in der Branche an Standards zu mangeln. Als entwicklerorientiertes Startup investieren wir Zeit und Mühe in die Suche nach der idealen Lösung.
Die meisten API-Schlüssel sind scheiße:
Wir haben die folgenden Anforderungen an API-Schlüssel:
Allerdings mangelt es den meisten API-Schlüsseln an Ästhetik und sie bestehen oft aus inkonsistent formatierten Zufallszeichen, die schwer zu lesen, zu sortieren und zu identifizieren sind. Wir möchten, dass API-Schlüssel ästhetisch ansprechend und symmetrisch sind, wie die guten Dinge im Leben.
Von uns abgelehnte Ausweise:
Zu zufällig, leicht zu erraten, hässlich im Aussehen ... alles unbefriedigend.
Unsere Lösung:
Aufgrund der mangelnden Ästhetik (Symmetrie) bestehender Lösungen haben wir unseren eigenen Ansatz entwickelt:
Ergebnis:
<code>key, _ := uuidkey.Encode("d1756360-5da0-40df-9926-a76abff5601d") fmt.Println(key) // Output: 38QARV0-1ET0G6Z-2CJD9VA-2ZZAR0X</code>
Unser Schlüssel:
Warum UUIDv7 wählen?
Zusätzlich zu den Vorteilen von Zeitstempeln wird UUIDv7 in Postgres v18 native Unterstützung erhalten. Während es derzeit möglich ist, UUIDv7 mithilfe von Erweiterungen serverseitig zu generieren, würde die native Postgres-Unterstützung definitiv eine bessere Leistung erbringen und gut mit uuidkey.Encode()
funktionieren.
In unserer Implementierung generieren wir derzeit Schlüssel auf der Anwendungsebene und speichern sie als UUIDs zum Sortieren und Indizieren. Sobald Postgres v18 veröffentlicht wird, werden wir auf Postgres-Builds umsteigen, um die Belastung der Anwendungsschicht zu reduzieren und eine bessere Leistung zu erzielen.
Warum Crockford Base32 wählen?
Wir haben uns für die Crockford Base32-Kodierung entschieden, weil sie:
Warum Dash verwenden?
Dash-Tasten sind „blockig“ und symmetrisch. Wenn Sie die einzelnen Zeichen ausgrauen, sehen sie fast wie ein Barcode aus. Wir sind der Meinung, dass dies das schnelle Lesen eines Teils eines Schlüssels erleichtert, um ihn zu identifizieren.
Durch den Bindestrich entfällt zwar die praktische Doppelklick-Kopierfunktion, wir sind jedoch der Meinung, dass dies einen lohnenswerten Kompromiss im Hinblick auf die Lesbarkeit darstellt. Wir möchten nicht, dass Benutzer sie überall kopieren und einfügen, vielmehr möchten wir, dass sie mit Sorgfalt behandelt werden. Im Idealfall würden Benutzer einen Schlüssel nur einmal kopieren, wenn sie ihn in unserem Dashboard generieren. Deshalb haben wir der Benutzeroberfläche eine Schaltfläche zum Kopieren hinzugefügt, um dieses Problem zu lösen.
uuidkey-Paket:
Wir haben diese Designoptionen als Open Source unter github.com/agentstation/uuidkey bereitgestellt. Wenn Sie mit unserer Ästhetik, Argumentation und Symmetrie einverstanden sind und Ihren eigenen schönen API-Schlüssel haben möchten, können Sie gerne unser Open-Source-Projekt ausprobieren.
uuidkey
Der Kern des Pakets besteht darin, eine UUID über den Base32-Crockford-Codec in ein lesbares Schlüsselformat zu kodieren und sie wieder in eine UUID zu dekodieren.
Kodierung:
Der Codeausschnitt wurde im Originaltext angegeben und wird hier nicht wiederholt.
Dekodierung:
Der Codeausschnitt wurde im Originaltext angegeben und wird hier nicht wiederholt.
Das Paket ist so konzipiert, dass es mit jeder UUID funktioniert, die der offiziellen UUID-Spezifikation (RFC 4122) entspricht. Wir testen und pflegen jedoch speziell die Kompatibilität mit den beiden beliebtesten UUID-Go-Generatoren:
Die Installation ist einfach:
<code>key, _ := uuidkey.Encode("d1756360-5da0-40df-9926-a76abff5601d") fmt.Println(key) // Output: 38QARV0-1ET0G6Z-2CJD9VA-2ZZAR0X</code>
Grundlegende Verwendung:
<code>go get github.com/agentstation/uuidkey</code>
Wir sind bestrebt, den Overhead auf ein Minimum zu beschränken:
Leistungsbenchtest-Testdaten wurden im Originaltext angegeben und werden hier nicht wiederholt.
Zu uuidkey beitragen:
Wir sind bestrebt, uuidkey
als zuverlässiges Open-Source-Tool aufrechtzuerhalten, da wir es in der Produktion verwenden – Beiträge willkommen!
Wenn Sie es nützlich finden oder Verbesserungsvorschläge haben, würden wir uns freuen, von Ihnen in unseren GitHub-Problemen oder der Discord-Community zu hören.
Frühere Technologie und die Schultern von Giganten:
Nachdem wir das Projekt veröffentlicht hatten, fanden wir einige Projekte mit ähnlichen Implementierungen, die jedoch immer noch nicht unsere Kriterien für die Kodierung und Dekodierung von UUIDs mit Go erfüllten.
Zusammenfassung:
Bei AgentStation bauen wir eine Plattform auf, die es KI-Agenten ermöglicht, über ihre eigene virtuelle Workstation zu verfügen, um Browser auszuführen, an Besprechungen teilzunehmen und Code auszuführen. Da wir auf Tausende von Workstations skalieren, ist die Verfügbarkeit sortierbarer, leistungsstarker Schlüssel eine praktische Infrastruktur.
Aber wir glauben auch, dass Entwickler die Schönheit der Symmetrie genauso schätzen wie wir, selbst bei API-Schlüsseln.
Wir hoffen, dass Sie uuidkey
sowohl praktisch als auch schön finden.
Die Fußnoten stammen aus dem Originaltext und werden hier nicht wiederholt.
Das obige ist der detaillierte Inhalt vonSchöne API-Schlüssel erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!