Skip to content

Conversation

@GaryZhous
Copy link
Contributor

Built on top of #2941, this pull request enhances the goose-cli session module by introducing functionality to estimate and display cost information for token usage based on provider pricing data. It includes new methods for normalizing model names, fetching pricing data, and calculating costs, as well as configuration updates to enable cost display. Instead of hard-coding the cost calculation, I make use of Jack's Pricing_Cache which he created in #2992.

Pricing Integration:

  • Added initialize_pricing_cache to session startup: Ensures pricing cache is initialized, with error handling to log warnings if initialization fails.
  • Introduced estimate_cost_usd function: Calculates token usage cost in USD using provider pricing data and normalized model names.
  • Added display_cost_usage function: Displays cost information in USD if pricing data is available, including token breakdown.

Model Name Normalization:

  • Implemented normalize_model_name function: Cleans up model names by removing suffixes (e.g., "-latest", date-like patterns) and converting version numbers for compatibility with pricing data. Otherwise we are not able to access the pricing info from the cache since Openrouter does the model naming differently. (e.g. claude-3-5-haiku-latest is claude-3.5-haiku on Openrouter)

Configuration Updates:

  • Added configuration parameters: Introduced GOOSE_CLI_SHOW_COST to toggle cost display and GOOSE_PROVIDER to specify the provider name.

These changes collectively improve the goose-cli tool by providing users with detailed cost insights based on their session's token usage. For models whose pricing is unknown, nothing will show up.

How to enable

# one-off
GOOSE_CLI_SHOW_COST=true goose chat

# persistent
# ~/.config/goose/config.yaml
GOOSE_CLI_SHOW_COST: true

After

image
image

@lily-de
Copy link
Contributor

lily-de commented Jul 10, 2025

This is great. LGTM with one ask -- can you update the docs to include the new variable you introduced? https://github.com/block/goose/blob/main/documentation/docs/guides/environment-variables.md thanks!

@GaryZhous
Copy link
Contributor Author

@lily-de done!

@lily-de lily-de merged commit c45e0ef into block:main Jul 11, 2025
8 checks passed
zanesq added a commit that referenced this pull request Jul 11, 2025
* 'main' of github.com:block/goose:
  docs: add max turns (#3372)
  feat(cli): add cost estimation per provider for Goose CLI (#3330)
@GaryZhous GaryZhous deleted the GaryZ/Refine-CLI branch July 13, 2025 03:17
michaelneale added a commit to jackjackbits/goose that referenced this pull request Jul 14, 2025
* main: (51 commits)
  docs: reflecting benefits of CLI providers (block#3399)
  feat: fetch openrouter supported models in `goose configure` (block#3347)
  Add the ability to configure rustyline to use a different edit mode (e.g. vi) (block#2769)
  docs: update CLI provider guide (block#3397)
  Streamable HTTP CLI flag (block#3394)
  docs: Show both remote options for extensions in CLI (block#3392)
  docs: fix YouTube Transcript MCP package manager (block#3390)
  docs: simplify alby mcp (block#3379)
  docs: add max turns (block#3372)
  feat(cli): add cost estimation per provider for Goose CLI (block#3330)
  feat: Allow Ollama for non-tool models for chat only (block#3308)
  [cli] Add --provider and --model CLI options to run command (block#3295)
  Docs: Lead/worker model in Goose Desktop (block#3342)
  revert: refactor: abstract keyring logic to better enable DI (block#3358)
  Drop temporal-service binary (block#3340)
  docs: add fuzzy search (block#3357)
  Fix name of GPT-4.1 System Prompt (block#3348) (block#3351)
  docs: add goose-mobile (block#3315)
  refactor: abstract keyring logic to better enable DI (block#3262)
  fix: correct tool use for anthropic (block#3311)
  ...
atarantino pushed a commit to atarantino/goose that referenced this pull request Jul 14, 2025
s-soroosh pushed a commit to s-soroosh/goose that referenced this pull request Jul 18, 2025
kwsantiago pushed a commit to kwsantiago/goose that referenced this pull request Jul 19, 2025
cbruyndoncx pushed a commit to cbruyndoncx/goose that referenced this pull request Jul 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants