Skip to main content

概要

Devin Desktop は、カスタム分析用の API をサポートしています。オートコンプリート、チャット、Command に関するデータをクエリできるほか、さまざまなフィルタ、グループ化、集計にも対応しています。 すべての使用例は curl で示していますが、他の言語の HTTP リクエストにも置き換えられます。
Analytics API は Enterprise プランで利用できます

ユーザーデータ Analytics API の仕様

TeamsページのUsersテーブルのデータは、次のコマンドで取得できます。
SERVICE_KEY: サービスキーです。管理者ユーザーは、設定ページのサービスキーセクションから作成できます。サービスキーのロールには、“Teams Read-only” 権限が必要です。 GROUP_NAME: 絞り込みに使用するグループ名です。このフィールドは任意です。 START_TIMESTAMP/END_TIMESTAMP: RFC 3339 形式のタイムスタンプです。例: 2023-01-01T00:00:00Z

出力例

Cascade Analytics API 仕様

アナリティクスページで確認できるCascade固有のデータは、API経由で取得できます。
SERVICE_KEY: サービスキーです。管理者ユーザーは チーム設定 から新しいキーを作成できます GROUP_NAME: フィルタリング対象のグループ名です。このフィールドは任意です。emails が設定されている場合は設定できません。 START_TIMESTAMP/END_TIMESTAMP: RFC 3339 形式のタイムスタンプです。たとえば 2023-01-01T00:00:00Z です EMAILS: フィルタリング対象のメールアドレスのリストです。このフィールドは任意です。group_name が設定されている場合は設定できません。 IDE_TYPES: フィルタリング対象の IDE タイプのリストです。このフィールドは任意です。指定可能な値は以下で説明します。 QUERY_REQUESTS: 実行するクエリリクエストのリストです。このフィールドは必須です。CASCADE_DATA_SOURCE の指定可能な値は以下で説明します。

クエリの例

IDE の種類

cascade データは IDE の種類ごとに分類されています。クエリで ide_types フィールドを指定しない場合は、すべての IDE のデータが返されます。特定の 1 つの IDE のデータだけをクエリする場合は、次のいずれかのオプションを利用できます。
  • Devin Desktop Editor の場合は "editor"
  • JetBrains Plugin の場合は "jetbrains"
  • Devin CLI の場合は "cli"
Devin CLI ("cli") で絞り込む場合、データが返されるのは cascade_runs のみです。cascade_linescascade_tool_usage のデータソースは Devin CLI ではサポートされておらず、空の結果が返されます。

Cascade のデータソース

CASCADE_DATA_SOURCE には、3 つの値を設定できます

ソース: cascade_lines

1日ごとの、提案および受け入れられた cascade_lines のデータをクエリするには、cascade_lines を利用します。 出力例:
linesSuggested: 指定日に提案された行数。 linesAccepted: 指定日に採用された行数。

ソース: cascade_runs

モデルの使用量、クレジット消費量、モードのデータをクエリするには、cascade_runs を利用します。 出力例:
day: 実行日。 model: メッセージに使用されたモデル。 mode: 実行モード。CONVERSATIONAL_PLANNER_MODE_DEFAULT (書き込みモード) 、CONVERSATIONAL_PLANNER_MODE_READ_ONLY (読み取りモード) 、CONVERSATIONAL_PLANNER_MODE_NO_TOOL (レガシーモード) 、または UNKNOWN のいずれかです。 messagesSent: 送信されたメッセージ数。 cascadeId: 実行の ID。この ID を使うと、ユーザーがメッセージを何回送信したかではなく、開始された個別の会話数を把握できます。 promptsUsed: 使用されたクレジット数。この値はセント単位で返されます。たとえば、0.25 クレジットは 25、1 クレジットは 100 として返されます。 API から返されるデータは生の形式であるため、“UNKNOWN” の値が含まれることがあります。このデータソースを独自のメトリクスに利用する場合は、関心のある具体的なメトリクスごとに集計することをおすすめします (例: promptsUsed フィールドを合計してユーザーの使用量パターンを把握する、messagesSent を集計してユーザーの利用状況を把握する、など) 。これは、mode と prompt のデータが複数のエントリに分かれて記録される可能性があるためです。

ソース: cascade_tool_usage

ツール使用量に関するデータをクエリするには、cascade_tool_usage を利用します。なお、返されるのは指定された期間内のツール利用回数の集計値です。 出力例:
tool: そのメッセージで使用されたツール。 count: ツールが使用された回数。 以下は、返される列挙値と、UI に表示される表示名の対応表です。
  • CODE_ACTION: ‘コード編集’
  • VIEW_FILE: ‘ファイルを閲覧’
  • RUN_COMMAND: ‘コマンドを実行’
  • FIND: ‘検索ツール’
  • GREP_SEARCH: ‘Grep 検索’
  • VIEW_FILE_OUTLINE: ‘ファイルのアウトラインを閲覧’
  • MQUERY: ‘Riptide’
  • LIST_DIRECTORY: ‘ディレクトリを一覧表示’
  • MCP_TOOL: ‘MCP ツール’
  • PROPOSE_CODE: ‘コードを提案’
  • SEARCH_WEB: ‘Web を検索’
  • MEMORY: ‘メモリ’
  • PROXY_WEB_SERVER: ‘ブラウザプレビュー’
  • DEPLOY_WEB_APP: ‘Web アプリをデプロイ’

Custom Analytics API の仕様

一部のデータソースでは、Custom Analytics API を介してクエリを柔軟にカスタマイズできます。 選択、フィルター、集計、並べ替えの完全なスキーマは、次のセクションに JSON 形式で記載されています。3 つのデータソースそれぞれのクエリ例と、クエリのデバッグに関するヒントは、ドキュメントの末尾に記載しています。
DATA_SOURCE: オートコンプリート、チャット、Command、PCW、または Cascade のどのデータを参照するかに応じて、USER_DATA、CHAT_DATA、COMMAND_DATA、PCW_DATA、または CASCADE_DATA のいずれかを選択します。 SERVICE_KEY: サービスキーです。管理者ユーザーは チーム設定 から新しいサービスキーを作成できます。サービスキーのロールには、“Analytics Read” 権限が必要です。 GROUP_NAME: フィルタリング対象のグループ名です。このフィールドは任意です。

スキーマ

選択

選択は必須です。各選択項目は、クエリする値に対応します。
FIELD_NAME: クエリするフィールドです。以下の「Available Fields」セクションを参照してください。 NAME: フィールドの別名です。指定しない場合は、<AGGREGATION_FUNCTION>_<FIELD_NAME> の小文字版 (例: sum&#95;num&#95;acceptances) になります。他のすべてのフィールド名および集計名と重複しないようにする必要があります。 AGGREGATION_FUNCTION: UNSPECIFIED、COUNT、SUM、AVG、MAX、MIN のいずれかを指定する必要があります。“aggregation_function” が指定されていない場合、デフォルトは UNSPECIFIED です。

フィルター

フィルターは、特定の条件を満たす要素のみを含むようにデータを絞り込むために利用されます。省略可能です。
NAME: フィルタするフィールドの名前です。フィルタ対象の項目が Selection/Aggregation と同じ場合、これはそのフィールド/集計の名前と一致している必要があります。 VALUE: 比較対象の値です。 FILTER: EQUAL、NOT_EQUAL、GREATER_THAN、LESS_THAN、GE (以上) 、LE (以下) のいずれかです。

集計

集計は、指定した条件に基づいてデータをグループ分けするために利用されます。省略可能です。
FIELD_NAME: クエリする対象のフィールドです。「Available Fields」セクションを参照してください。 NAME: フィールドの別名です。他のすべてのフィールド名および集計名と重複しない必要があります。

使用可能なフィールド

ユーザーデータ

USER_DATA ソースのすべてのデータは、ユーザーごと・時間ごとに集計されます。 注: PCW (コード記述率) は現在、専用のテーブルを持っており、user_data テーブルには依存していません。

チャットデータ

チャットデータ API で提供されるすべてのデータは、ユーザーの質問ではなく、チャットモデルの応答に関するものであることに注意してください。

Command データ

Command データソースには、拒否されたものも含めてすべてのコマンドが含まれます。“採用” フィールドを利用すると、採用されたコマンドのみに絞り込めます。

PCWデータ

有効な選択項目

Cascade Data

Cascade Dataソースには、Cascade に送信される各メッセージごとにエントリが含まれます。
以下に記載されているすべてのフィールドにアクセスするには、バージョン 1.11.2 以降を使用していることを確認してください。

有効なフィルター

日付でフィルタリングするには、start_timestamp と end_timestamp を使用します。これらは RFC 3339 形式で指定する必要があります (例: 2023-01-01T00:00:00Z。以下の例を参照してください) 。

使用例

ユーザーデータ

このクエリは、2024年1月の Percent Code Written の月間全体値を算出します。レスポンス例 (読みやすくするために JSON を整形しています) :

チャットデータ

このクエリは、“Generate Docstring” コードレンズから承認されたコード行数の累計を、IDE ごとに集計して表示します。 レスポンス例:

Command データ

このクエリは、“edit” コマンドで追加・削除された行数を、プログラミング言語別に取得します。 レスポンス例:

PCW データ

このクエリは、PCW (Percent Code Written) データと、言語 go でフィルタしたバイト数を取得します。 レスポンス例:

クエリのデバッグ

1.10.0 以降では、無効なクエリに対してエラーメッセージが返されます。このセクションでは、よくあるエラーメッセージ、その意味、および該当するクエリのデバッグ方法を説明します。
エラーメッセージ説明
at least one field or aggregation is required選択または集計が 1 つも検出されませんでした。クエリリクエストに少なくとも 1 つ含まれていることを確認してください。
invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUM選択項目の 1 つで無効な集計関数が利用されています。この場合、“ide” フィールドに SUM を利用しようとしていますが、このフィールドがサポートしているのは COUNT と UNSPECIFIED のみです。
invalid query table: QUERY_DATA_SOURCE_UNSPECIFIEDdata_source フィールドにスペルミスがある可能性があります。スペルを再確認してください。
all selection fields should have an aggregation function, or none of them should複数の選択フィールドがある場合は、すべてに aggregation_function を含めるか、どれにも含めないようにする必要があります。たとえば、次の選択は無効です。num_acceptances には合計が指定されていますが、num_lines_accepted には指定されていないためです。
注: PCW は常に集計済みとして扱われます。aggregation_function が明示的に選択されていない場合は、unspecified と見なされます。これら両方のフィールドの情報が必要な場合は、別々の 2 つのクエリを利用してください。
invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUMすべてのフィールドがすべての集計関数をサポートしているわけではありません。対応関係については、利用可能なフィールドのセクションを参照してください。この場合、クエリでは “ide” フィールドに QUERY_AGGREGATION_SUM 集計関数を利用していますが、これは無効です。
tried to aggregate on a distinct field: distinct_developer_days. Consider aggregating on the non-distinct fields instead: [api_key date]“distinct_*” パターンのフィールドは aggregations セクションに含めることはできません。このエラーでは、代わりに集計対象として利用できるフィールドが提案されています。したがって、次の代わりに:
次を試してください:
duplicate field alias for selection/aggregation: num_acceptancesすべての selections と aggregations には異なる name が必要です。name が指定されていない場合、デフォルトでは <AGGREGATION_FUNCTION>_<FIELD_NAME> に設定されることに注意してください。
invalid group name: GroupName指定された名前のグループが見つかりませんでした。スペルを再確認してください。