Foundry Toolkit Copilot model provider drops token usage and always reports zero context tokens

オープン
#940 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
github, javascript, vscode

調査の方向性

The report identifies provideTokenCount() and provideLanguageModelResponse in the bundled dist/extension.js, and mentions convertOpenAIChunkToChatChunk as the usage conversion point. Start by locating these in the unminified extension source and tracing how response chunks reach Copilot. Done means actual input, output, and cached token usage is forwarded and token counting no longer always returns zero; the issue names no tests to run.

索引モデルが issue の本文から書いたものです。

説明

needs attention

Title: Foundry Toolkit Copilot model provider drops token usage and always reports zero context tokens

Environment
  • VS Code: 1.142.0
  • Integrated Copilot extension: 0.70.0
  • Microsoft Foundry Toolkit: 1.6.19
  • OS: Windows x64
  • Model: Azure Foundry deployment gpt-5.6-sol
  • Integration: Foundry Toolkit language model provider in VS Code Copilot Chat
Problem

When using an Azure Foundry model through Foundry Toolkit in GitHub Copilot Chat, token usage is not reported correctly.

Observed behavior:

  • Context window indicator always displays 0 / 1M tokens.
  • Agent Debug Logs report 0 input and output tokens.
  • Copilot /usage reports AI Units but no Azure API token usage.
  • OpenTelemetry file export is enabled, but no chat token usage metrics are recorded.

Azure Foundry itself processes and bills the model requests normally. A separate direct API test confirms that the service returns valid usage information, including prompt_tokens, completion_tokens, and total_tokens.

Root cause identified through local extension analysis

1. Token counting always returns zero

In the installed Foundry Toolkit bundle:

dist/extension.js, around line 2520:

async provideTokenCount(i,a,o){return 0}

This explains why the Copilot context window indicator always displays zero.

2. API usage is not forwarded to Copilot

The internal response conversion handles the API usage information:

convertOpenAIChunkToChatChunk, around line 4988.

However, the language model provider implementation:

provideLanguageModelResponse, around line 2517

appears to forward text and tool-call content without forwarding the token usage data.

In the integrated Copilot extension, around line 7013, the consumer expects usage information as a LanguageModelDataPart. When it is missing, input, output, and cache token counts are set to zero.

These findings are based on inspection of the installed, bundled JavaScript code and have not been independently validated against the unminified source.

Expected behavior
  • Forward actual API input, output, and cached token usage to VS Code Copilot.
  • Implement meaningful token counting instead of returning zero.
  • Make token usage available to the Agent Debug Logs and supported telemetry consumers.
  • Allow developers using Azure Foundry BYOK deployments to monitor token consumption per model request.
Additional observation

OpenTelemetry file export works and produces telemetry data, but the inspected file contains no model-request token usage metrics. The missing model-turn spans may require separate investigation.

Impact

Without reliable token reporting, developers cannot monitor or optimize API token consumption within Copilot Chat.

In our environment, 296 Azure requests consumed approximately 3.28 million tokens, while the Copilot UI continued displaying zero usage.

Request

Could you confirm whether forwarding token usage from Foundry Toolkit language model providers to Copilot is currently supported?

If supported, please investigate the missing usage forwarding and the provideTokenCount() implementation.

If not yet supported, please consider implementing it so that users of Azure Foundry BYOK models can monitor their actual token consumption.

主要言語
JavaScript
スター
2.1k
フォーク
260
平均マージ
3時間 18分
マージ済み PR(30日)
43

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

microsoft/foundry-dev-tools のほかの issue

microsoft/foundry-dev-tools の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。