Skip to main content

Überblick

Devin Desktop unterstützt eine API für benutzerdefinierte Analysen. Damit lassen sich Daten aus Autovervollständigung, Chat und Befehlen mit einer Vielzahl von Filtern, Gruppierungen und Aggregationen abfragen. Wir stellen alle Beispiele in curl bereit; sie können anschließend in HTTP-Anfragen in anderen Sprachen übertragen werden.
Die Analytics API ist in Enterprise-Plänen verfügbar

Spezifikation der Analytics API für Nutzerdaten

Daten aus der Tabelle „Nutzer“ auf der Teams-Seite können mit dem folgenden Befehl abgerufen werden:
SERVICE_KEY: Der Service-Schlüssel – ein Admin kann ihn im Service-Schlüssel-Bereich der Settings-Seite erstellen. Die Rolle des Service-Schlüssels muss über die Berechtigung “Teams Read-only” verfügen. GROUP_NAME: Der Name einer Gruppe, nach der gefiltert werden soll. Dieses Feld ist optional. START_TIMESTAMP/END_TIMESTAMP: Zeitstempel im RFC-3339-Format, also z. B. 2023-01-01T00:00:00Z

Beispielausgabe

Spezifikation der Cascade Analytics API

Die auf der Analytics-Seite angezeigten spezifischen Cascade-Daten können per API abgefragt werden.
SERVICE_KEY: Der Service-Schlüssel – ein Admin kann in den Team Settings einen neuen erstellen GROUP_NAME: Der Name einer Gruppe, nach der gefiltert werden soll. Dieses Feld ist optional. Kann nicht gesetzt werden, wenn emails gesetzt ist. START_TIMESTAMP/END_TIMESTAMP: Zeitstempel im RFC-3339-Format, z. B. 2023-01-01T00:00:00Z EMAILS: Eine Liste von E-Mail-Adressen, nach denen gefiltert werden soll. Dieses Feld ist optional. Kann nicht gesetzt werden, wenn group_name gesetzt ist. IDE_TYPES: Eine Liste von IDE-Typen, nach denen gefiltert werden soll. Dieses Feld ist optional. Die möglichen Werte sind unten beschrieben. QUERY_REQUESTS: Eine Liste von Query-Anfragen, die ausgeführt werden sollen. Dieses Feld ist erforderlich. Die möglichen Werte von CASCADE_DATA_SOURCE sind unten beschrieben.

Beispielabfrage

IDE-Typen

Wir unterteilen Cascade-Daten nach IDE-Typen in Kategorien. Wenn Sie das Feld ide_types in der Abfrage weglassen, werden Daten für alle IDE-Typen zurückgegeben. Wenn Sie Daten nur für eine bestimmte IDE abfragen möchten, können Sie eine der folgenden Optionen verwenden:
  • “editor” für den Devin Desktop Editor
  • “jetbrains” für das JetBrains-Plugin
  • “cli” für Devin CLI
Beim Filtern nach Devin CLI ("cli") liefert nur cascade_runs Daten. Die Datenquellen cascade_lines und cascade_tool_usage werden für Devin CLI nicht unterstützt und geben leere Ergebnisse zurück.

Cascade-Datenquellen

Für CASCADE_DATA_SOURCE gibt es drei mögliche Werte

Quelle: cascade_lines

Verwenden Sie cascade_lines, um Daten dazu abzufragen, wie viele Cascade-Zeilen pro Tag vorgeschlagen und akzeptiert wurden. Beispielausgabe:
linesSuggested: Die Anzahl der für den jeweiligen Tag vorgeschlagenen Zeilen. linesAccepted: Die Anzahl der für den jeweiligen Tag akzeptierten Zeilen.

Quelle: cascade_runs

Verwenden Sie cascade_runs, um Daten zur Modellnutzung, zum Verbrauch von Credits und zum Modus abzufragen. Beispielausgabe:
day: Das Datum der Ausführung. model: Das für die Nachricht verwendete Modell. mode: Der Modus der Ausführung. Einer von CONVERSATIONAL_PLANNER_MODE_DEFAULT (für den Schreibmodus), CONVERSATIONAL_PLANNER_MODE_READ_ONLY (für den Lesemodus), CONVERSATIONAL_PLANNER_MODE_NO_TOOL (für den Legacy-Modus) oder UNKNOWN. messagesSent: Die Anzahl der gesendeten Nachrichten. cascadeId: Die ID der Ausführung. Anhand dieser ID lässt sich nachvollziehen, wie viele unterschiedliche Unterhaltungen gestartet wurden (im Gegensatz dazu, wie oft der Nutzer eine Nachricht sendet). promptsUsed: Die Anzahl der verwendeten Credits. Dieser Wert wird in Cent zurückgegeben. Zum Beispiel werden 0,25 Credits als 25 zurückgegeben und 1 Credit als 100. Die von der API zurückgegebenen Daten liegen in einem Rohformat vor, was etwaige “UNKNOWN”-Werte erklären kann. Wenn Sie diese Datenquelle für Ihre eigenen Metriken verwenden, empfiehlt es sich, nach den für Sie relevanten spezifischen Metriken zu aggregieren (z. B. das Feld promptsUsed zu summieren, um Nutzungsmuster der Nutzer zu verstehen, oder messagesSent, um das Nutzerengagement zu verstehen), da Modus- und Prompt-Daten auf mehrere Einträge verteilt sein können.

Quelle: cascade_tool_usage

Verwenden Sie cascade_tool_usage, um Daten zur Tool-Nutzung abzufragen. Hinweis: Dies gibt die aggregierte Anzahl von Tools im angegebenen Zeitraum zurück. Beispielausgabe:
tool: Das Tool, das für die Nachricht verwendet wurde. count: Die Anzahl der Verwendungen des Tools. Hier ist eine Zuordnung der zurückgegebenen Enums zu den menschenlesbaren Namen, wie sie in der UI angezeigt werden:
  • CODE_ACTION: ‘Code bearbeiten’
  • VIEW_FILE: ‘Datei anzeigen’
  • RUN_COMMAND: ‘Befehl ausführen’
  • FIND: ‘Such-Tool’
  • GREP_SEARCH: ‘Grep-Suche’
  • VIEW_FILE_OUTLINE: ‘Dateiübersicht anzeigen’
  • MQUERY: ‘Riptide’
  • LIST_DIRECTORY: ‘Verzeichnis auflisten’
  • MCP_TOOL: ‘MCP-Tool’
  • PROPOSE_CODE: ‘Code vorschlagen’
  • SEARCH_WEB: ‘Web durchsuchen’
  • MEMORY: ‘Memory’
  • PROXY_WEB_SERVER: ‘Browser-Vorschau’
  • DEPLOY_WEB_APP: ‘Web-App bereitstellen’

Spezifikation der Custom Analytics API

Bestimmte Datenquellen unterstützen anpassbare Abfragen über die Custom Analytics API. Die vollständigen Schemas für Selektionen, Filter, Aggregationen und Sortierungen finden Sie im folgenden Abschnitt im JSON-Format. Beispielabfragen für jede der drei Datenquellen sowie Tipps zum Debuggen von Abfragen finden Sie am Ende des Dokuments.
DATA_SOURCE: Wählen Sie je nach Anwendungsfall USER_DATA, CHAT_DATA, COMMAND_DATA, PCW_DATA oder CASCADE_DATA aus – je nachdem, ob Sie nach Daten zu Autovervollständigung, Chat, Command, PCW oder Cascade suchen. SERVICE_KEY: Der Service-Schlüssel – ein Admin-Nutzer kann in den Team Settings einen neuen erstellen. Die Rolle des Service-Schlüssels muss über die Berechtigung “Analytics Read” verfügen. GROUP_NAME: Der Name einer Gruppe, nach der gefiltert werden soll. Dieses Feld ist optional.

Schemata

Auswahlmöglichkeiten

Auswahlmöglichkeiten sind erforderlich. Jede Auswahlmöglichkeit entspricht einem Wert, der abgefragt werden soll.
FIELD_NAME: Das Feld, das Sie abfragen möchten. Siehe unten den Abschnitt „Verfügbare Felder“. NAME: Ein Alias für das Feld. Wenn kein Wert angegeben ist, wird die kleingeschriebene Form von <AGGREGATION_FUNCTION>_<FIELD_NAME> verwendet, z. B. sum_num_acceptances. Der Name muss sich von allen anderen Feld- und Aggregationsnamen unterscheiden. AGGREGATION_FUNCTION: Sollte einer der folgenden Werte sein: UNSPECIFIED, COUNT, SUM, AVG, MAX, MIN. Wenn “aggregation_function” nicht angegeben ist, wird standardmäßig UNSPECIFIED verwendet.

Filter

Filter werden verwendet, um Daten so einzugrenzen, dass sie nur Elemente enthalten, die bestimmte Kriterien erfüllen. Sie sind optional.
NAME: Der Name des Felds, nach dem Sie filtern möchten. Wenn das gefilterte Element mit einer Selection/Aggregation identisch ist, muss er dem Namen des Felds/der Aggregation entsprechen. VALUE: der Wert, der verglichen wird. FILTER: Einer der folgenden Werte: EQUAL, NOT_EQUAL, GREATER_THAN, LESS_THAN, GE (größer als oder gleich), LE (kleiner als oder gleich).

Aggregationen

Mit Aggregationen lassen sich die Daten anhand eines angegebenen Kriteriums in Gruppen aufteilen. Sie sind optional.
FIELD_NAME: Das Feld, das Sie abfragen möchten. Siehe den Abschnitt „Verfügbare Felder“. NAME: Ein Alias für das Feld. Muss sich von allen anderen Feld- und Aggregationsnamen unterscheiden.

Verfügbare Felder

Nutzerdaten

Alle Daten aus der Quelle USER_DATA werden pro Nutzer und pro Stunde aggregiert. Hinweis: PCW (percent code written) hat jetzt eine eigene Tabelle und ist nicht mehr von der Tabelle user_data abhängig.

Chat-Daten

Hinweis: Alle in der Chat-Daten-API bereitgestellten Daten beziehen sich auf die Antworten des Chat-Modells, nicht auf die Fragen der Nutzer.

Befehlsdaten

Beachten Sie, dass die Datenquelle „Befehlsdaten“ alle Befehle enthält, auch die, die abgelehnt wurden. Mit dem Feld „accepted“ können Sie auf nur akzeptierte Befehle filtern.

PCW-Daten

Gültige Auswahlmöglichkeiten

Cascade Data

Die Datenquelle Cascade Data enthält für jede an Cascade gesendete Nachricht einen Eintrag.
Um auf alle unten aufgeführten Felder zuzugreifen, stellen Sie bitte sicher, dass Sie Version 1.11.2 oder höher verwenden.

Gültige Filter

Um nach Datum zu filtern, verwenden Sie start_timestamp und end_timestamp. Diese sollten im RFC 3339-Format vorliegen (z. B. 2023-01-01T00:00:00Z; siehe Beispiel unten).

Beispiele

Nutzerdaten

Diese Abfrage berechnet den Gesamtwert von „Percent Code Written“ für Januar 2024. Beispielantwort (zur besseren Lesbarkeit als JSON formatiert):

Chat-Daten

Diese Abfrage zeigt die Anzahl der aus der CodeLens „Generate Docstring“ akzeptierten Codezeilen für den gesamten Zeitraum, gruppiert nach IDE. Beispielantwort:

Befehlsdaten

Diese Abfrage ermittelt die Anzahl der durch „edit“-Befehle hinzugefügten und entfernten Zeilen, aufgeschlüsselt nach Programmiersprache. Beispielantwort:

PCW-Daten

Diese Abfrage ruft die PCW-Daten (Percent Code Written) sowie die nach der Programmiersprache go gefilterten Bytes ab. Beispielantwort:

Fehlerbehebung bei Abfragen

Ab Version 1.10.0 geben ungültige Abfragen eine Fehlermeldung zurück. Dieser Abschnitt enthält einige häufige Fehlermeldungen, ihre Bedeutung und Hinweise zur Fehlerbehebung bei den entsprechenden Abfragen.
FehlermeldungErklärung
at least one field or aggregation is requiredEs wurden keine Auswahlen oder Aggregationen erkannt. Stelle sicher, dass die Anfrage mindestens eine davon enthält.
invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUMEine der Auswahlen verwendet eine ungültige Aggregationsfunktion. In diesem Fall wurde versucht, SUM für das Feld „ide“ zu verwenden, aber dieses unterstützt nur COUNT und UNSPECIFIED.
invalid query table: QUERY_DATA_SOURCE_UNSPECIFIEDWahrscheinlich gibt es einen Tippfehler im Feld data_source. Überprüfe die Schreibweise noch einmal.
all selection fields should have an aggregation function, or none of them shouldWenn es mehrere Auswahlfelder gibt, sollten entweder alle eine aggregation_function enthalten oder keines davon. Zum Beispiel ist diese Auswahl ungültig, weil num_acceptances summiert wird, num_lines_accepted aber nicht:
Hinweis: PCW gilt immer als aggregiert. Wenn keine aggregation_function explizit ausgewählt wird, gilt sie als unspecified. Wenn du Informationen zu beiden Feldern erhalten möchtest, verwende zwei separate Abfragen.
invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUMNicht jedes Feld unterstützt jede Aggregationsfunktion. Welche Kombinationen möglich sind, findest du im Abschnitt zu den verfügbaren Feldern. In diesem Fall verwendet die Abfrage die Aggregationsfunktion QUERY_AGGREGATION_SUM mit dem Feld „ide“, was ungültig ist.
tried to aggregate on a distinct field: distinct_developer_days. Consider aggregating on the non-distinct fields instead: [api_key date]Felder mit dem Muster „distinct_*“ können nicht im Abschnitt aggregations verwendet werden. Die Fehlermeldung schlägt stattdessen alternative Felder zum Aggregieren vor. Also statt:
Verwende:
duplicate field alias for selection/aggregation: num_acceptancesAlle Auswahlen und Aggregationen müssen unterschiedliche Namen haben. Beachte, dass der Name standardmäßig auf <AGGREGATION_FUNCTION>_<FIELD_NAME> gesetzt wird, wenn er nicht angegeben ist.
invalid group name: GroupNameDie group mit dem angegebenen Namen wurde nicht gefunden. Überprüfe die Schreibweise noch einmal.