1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「DevinのACU消費量をざっくり計算して」と頼まれて調べたら絶望した話

1
Posted at

はじめに

「Devinを導入したいんだけど、月額どれくらいかかるか見積もってくれない?」

上司からそう頼まれたのは、先月のことでした。Devinは話題のAIソフトウェアエンジニア。チームの生産性を上げるために導入を検討しているとのこと。単純な話だと思いました。料金プランを調べて、想定使用量を掛ければいいだけだと。

しかし、調べ始めてすぐに気づきました。Devinのコスト見積もりは、OpenAI APIのトークン見積もりと同じくらい、いやそれ以上に難しいということに。

ACUとは何か

Devinの課金単位は「ACU(Agent Compute Units)」です。公式サイトによると、これはDevinがタスクを完了するために使用する計算リソースを正規化した単位で、仮想マシンの稼働時間、モデル推論、ネットワーク帯域幅などが含まれます。

料金はCoreプランで1ACUあたり$2.25の従量課金、Teamsプランなら月額$500で250ACUが含まれ、追加分は$2.00/ACUです。

一部のメディア報道(TechCrunchなど)では、15分間のアクティブな作業が約1ACUに相当すると推測されていますが、Cognition社の公式ドキュメントには具体的な時間換算の記載はありません

「なるほど、仮に15分で1ACUなら、Teamsプランで月62.5時間使える計算か」

そう計算して、上司に報告しようとしました。しかし、実際に使い始めてみると、この計算がいかに甘かったかを思い知ることになります。

絶望その1: 同じ作業でもACU消費が全く違う

最初に驚いたのは、似たような作業でもACU消費量が大きく異なることでした。

「Reactコンポーネントを1つ作って」という単純なタスクを3回試してみたところ、消費ACUに大きなばらつきが出ました。1回目はシンプルに実装しただけでしたが、2回目はテストコードも追加し、3回目はStorybookまで作成していたのです。

公式ドキュメントにも、ACU消費に影響する要因として「task complexity(タスクの複雑さ)」「prompt quality or specificity(プロンプトの質や具体性)」が挙げられています。AIエージェントは「良かれと思って」余計な作業をすることがあり、それがACU消費の予測を困難にしているのです。

絶望その2: コンテキストの大きさで消費が激変

リポジトリのサイズによる影響も無視できませんでした。

公式ドキュメントでは、ACU消費に影響する要因として「size of the codebase or number of files Devin touches/edits(コードベースのサイズや編集ファイル数)」が明記されています。

小さなプロジェクトと大きなプロジェクトで同じタスクを実行すると、大きなプロジェクトの方が明らかにACU消費が多くなりました。Devinは作業を始める前に関連ファイルを探索してコンテキストを収集する(「required context gathering for the task」)ため、大きなプロジェクトではこの探索フェーズだけで相当なACUを消費するのです。

絶望その3: 日本語プロンプトの影響

OpenAI APIで日本語が不利なのと同様に、Devinでも日本語プロンプトには注意が必要だと考えられます。

注意: Devinの公式ドキュメントには、言語によるACU消費の差についての記載はありません。ただし、Devinの内部ではプロンプトの解析やコード生成にLLMを使用しており、一般的にLLMでは日本語は英語の2〜3倍のトークンを消費することが知られています(参考: Token効率に関する一般的な知見)。

そのため、日本語プロンプトを使用した場合、ACU消費が増加する可能性があります。具体的な影響度はDevinの内部実装に依存するため、実際に計測して確認することをお勧めします。

絶望その4: ACUが消費されないタイミングが分かりにくい

公式ドキュメントによると、以下の状況ではACUは消費されません。

  • ユーザーの返答を待機しているとき("Waiting for your response")
  • テストスイートの実行を待機しているとき("Waiting for a test suite to run")
  • リポジトリのセットアップとクローン作成時

また、アイドル状態が続くとDevinは自動的にスリープし、メッセージを送信すると再起動されます。

しかし、実際の作業中に「今ACUが消費されているのか、待機中なのか」を判断するのは困難です。Devinが「考えている」ように見えるとき、それが計画立案(ACU消費あり)なのか、外部処理の待機(ACU消費なし)なのか、画面からは分かりません。

では、どうすればいいのか

絶望ばかりしていても仕方がありません。公式ドキュメントでは、ACU効率を高めるために「clearly scoped tasks(明確にスコープを定めたタスク)」を推奨しています。これをもとに、実務で使えるコスト管理の方法を考えてみました。

レベル1: ざっくり見積もり(初期提案用)

最も単純な見積もり方法は、1時間のアクティブ作業を4ACUと見積もることです。1日8時間×20営業日×4ACUで、月間640ACU/人という計算になります。Teamsプラン(250ACU)では、1人が約10営業日分使える計算です。

ただし、公式ドキュメントにも「There are many variables that impact ACU consumption(ACU消費に影響する変数は多い)」と記載されているように、これはあくまで目安です。実際には待機時間やアイドル時間があるため、もう少し効率的に使えることが多いでしょう。

レベル2: Session Insightsでの実測

公式ドキュメントによると、すべてのユーザーは「Session Insights」で個別セッション単位のACU消費状況を確認できます。また、Enterprise/Organization管理者は「consumption analytics pages」で月単位のACU使用量を監視できます。

よく実行するタスクの種類ごとにACU消費を実測し、パターンを把握することで、見積もり精度を向上させることができます。

レベル3: Knowledgeによる最適化

ここからが本題です。ACU消費を削減するために、DevinのKnowledge機能を活用しました。

Knowledgeでコストを制御する

公式ドキュメントによると、Knowledgeは「tips, documentation, and instructions that Devin "knows" across all future sessions(すべての将来のセッションでDevinが"知っている"ヒント、ドキュメント、指示)」です。

Knowledgeの設定方法

Knowledgeは、Settings & Libraryページの「Knowledge」タブから追加します。各Knowledge項目には以下の要素があります。

Trigger Description(トリガー説明): Devinがこの知識を呼び出すきっかけとなるフレーズや文。公式ドキュメントには「Devin will retrieve a Knowledge item when its current work is related to the specified triggers(Devinは現在の作業が指定されたトリガーに関連するときにKnowledge項目を取得する)」と記載されています。

Content(内容): 実際の指示やヒント。公式では「a handful of sentences with relevant information(関連情報を含む数文)」が推奨されています。

Knowledge の適用範囲

公式ドキュメントでは、Knowledgeの適用範囲を以下の3つから選べます。

  • Pinning to no repo: Devinが関連性があると判断した場合のみ使用
  • Pinning to a specific repo: 特定のリポジトリで作業中は常に使用
  • Pinning to all repos: すべてのリポジトリで常に使用

ACU削減のためのKnowledge例

私たちが設定したKnowledgeの例を紹介します。

Knowledge 1: コンポーネント作成時の制限

Trigger Description:
React component, create component, 新規コンポーネント

Content:
新規コンポーネント作成時は、以下のルールに従ってください。
- 実装のみに集中し、テストコードは作成しない
- Storybookファイルは作成しない
- 最小限の実装で完了させる
テストとStorybookは別タスクで依頼します。

Knowledge 2: バグ修正時の方針

Trigger Description:
bug fix, バグ修正, fix issue

Content:
バグ修正時は最小限の変更で対応してください。
- 関係のないコードのリファクタリングは行わない
- 修正に直接関係するファイルのみ変更する
- 周辺コードの改善は別タスクで依頼します

これらのKnowledgeを設定することで、Devinが「良かれと思って」余計な作業をすることを防ぎ、ACU消費を抑制できます。

Enterprise Knowledge

公式ドキュメントによると、Enterpriseプランでは「Enterprise Knowledge」機能が利用できます。これは組織全体に適用されるKnowledgeで、Enterprise管理者が作成・管理できます。

「If an organization-level knowledge item proves useful enough to share across your entire enterprise, you can promote it directly from the knowledge editor(組織レベルのKnowledge項目がEnterprise全体で共有するに値するほど有用な場合、Knowledgeエディタから直接昇格できる)」という機能もあります。

実測データの活用

Knowledgeで最適化しても、予測と実測のギャップは発生します。そこで、ACU消費の実績データを継続的に収集し、見積もり精度を向上させることにしました。

公式ドキュメントによると、Enterprise/Organization管理者は「consumption analytics pages」で使用量を監視できます。このダッシュボードを活用して、チームのACU消費パターンを分析しました。

1ヶ月間のデータを収集したところ、興味深いパターンが見えてきました。プロンプトの具体性が高いほどACU消費が低い傾向があり、曖昧なプロンプトはDevinの探索範囲を広げてしまうことが分かりました。

このデータをもとにKnowledgeを改善し、チームメンバーにも具体的なプロンプトの書き方を共有しました。

最適化の効果

Knowledgeの設定と、プロンプトの改善を導入してから数週間が経ちました。

具体的な削減率は環境やタスクによって異なりますが、公式ドキュメントが推奨する「clearly scoped tasks」を徹底することで、無駄なACU消費を抑えられることを実感しています。

結論: ACU見積もりの現実解

「DevinのACU消費量をざっくり計算して」という依頼に対する私の結論は、ざっくり計算は難しいということです。

公式ドキュメントにも記載されている通り、ACU消費は「task complexity, prompt quality (or specificity), size of the codebase or number of files Devin touches/edits, and session runtime」など多くの変数に依存します。

しかし、絶望する必要はありません。最初は実測でパターンを把握し、Knowledgeで制御し、Session Insightsで継続的に改善する。このアプローチで、予測可能性を高めることができます。

AIエージェントのコスト管理は、APIのトークン管理と同じくらい重要なスキルになりつつあります。この記事が、これからDevinを導入する方の参考になれば幸いです。


技術的な補足: この記事の情報源

この記事で参照した公式ドキュメントと、修正した点を明記します。

参照した公式ドキュメント

情報 出典
ACU定義、料金プラン Devin Pricing
ACU消費の要因、非消費条件 Devin Billing
Knowledge機能の詳細 Knowledge - Devin Docs
Enterprise Knowledge Knowledge - Devin Docs

参照した第三者メディア

情報 出典 注記
15分≒1ACUの推測 TechCrunch 公式発表ではなくメディアの分析

当初の記事から修正した点

当初の記載 問題点 修正後
「Cognition社の説明では15分=1ACU」 Devin PricingおよびBilling Docsに時間換算の記載なし。TechCrunch等の第三者メディアの推測 「メディア報道では〜と推測」「公式には記載なし」と明記
Enterprise KnowledgeはYAML形式 Knowledge DocsにYAML形式の記載なし。実際はUIでTrigger DescriptionとContentを入力 実際のKnowledge形式に修正
file_scope設定(include/exclude) Knowledge Docsに該当機能の記載なし。Knowledgeはリポジトリ単位での適用のみ 削除
max_files_per_session設定 公式ドキュメントに該当設定の記載なし 削除
日本語プロンプトで27%増加 Devin固有のデータなし。一般的なLLMの知見を根拠なくDevinに適用していた 「可能性がある」と明記し、実測を推奨
33%のコスト削減 実測データに基づかない架空の数値 具体的な数値を削除

参考リンク

公式ドキュメント

第三者メディア(参考情報)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?