Skip to content

feat(decisions): backport Microsoft-Decision-1 and the decision models Admin UI to rc/1.106.0 (#45639, #45673, #45654, #45717) - #45735

Merged
mateo-berri merged 4 commits into
rc/1.106.0from
litellm_backport_decisions_rc_1_106_0
Oct 10, 2026
Merged

mateo-berri merged 4 commits into
rc/1.106.0from
litellm_backport_decisions_rc_1_106_0

Conversation

@mateo-berri

@mateo-berri mateo-berri commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

TLDR

This backports the decisions launch onto rc/1.106.0 as a key feature (# key-feature: decisions), so it ships in the next 1.106.0 rc

Problem this solves:

  • The rc cannot call Microsoft-Decision-1 on /v1/systemone or /v1/decisions
  • The rc's bundled cost map has no price for Microsoft-Decision-1
  • Admins on the rc cannot find, call, or test decision models in the Admin UI

How it solves it:

Intentional product change (from #45654): the cost optimization feedback banner on Models + Endpoints is replaced by the decision models announcement, so admins lose that page's link to the feedback form. The announcement has its own dismissal, so admins who closed the old banner still see it once

User Flow

Before

A proxy admin on rc/1.106.0 with a Microsoft-Decision-1 deployment on Azure AI Foundry cannot call it, price it, find it, or test it

  1. They add the deployment as azure_ai/decision-1 and send POST https://litellm-domain/v1/systemone. It answers 400 "Unknown Decisions provider 'azure_ai'"
  2. GET https://litellm-domain/v1/model/info shows no input or output price for it
  3. On https://litellm-domain/ui/models-and-endpoints the banner asks for cost optimization feedback, and nothing mentions decision models
  4. In Add Model, typing decision into Provider shows "No providers found"
  5. https://litellm-domain/ui/playground?tab=system-one on /v1/systemone has no Model picker, and Send fails with "Invalid model name passed in model=your-decision-model"

before: Models + Endpoints banner
before: Provider search for decision
before: System One playground Send

After

The same admin gets calibrated answers from Microsoft-Decision-1, billed for input tokens at its Azure price, and can find and test it in the Admin UI

  1. The same POST https://litellm-domain/v1/systemone answers 200 with noul and choice answers and an input-only x-litellm-response-cost
  2. GET https://litellm-domain/v1/model/info shows $0.042 per 1M input tokens and $0 for output, and the Deployed Models table shows IN $0.04 and OUT $0.00
  3. The banner says "Decision models are now supported" with "Add a decision model" and "Try decision models" buttons
  4. Typing decision into Provider lists Azure AI Foundry (Studio) with "Decision models: Microsoft-Decision-1", plus the other decision providers
  5. The playground on /v1/systemone has a Model picker with microsoft-decision-1, and Send shows calibrated probabilities

after: Models + Endpoints banner
after: Provider search for decision
after: System One playground Send

Picks

Cherry-picked from main in merge order, one commit per PR, with the original author kept

Every added and removed line in each pick is identical to its source commit (2 files +14, 9 files +216, 29 files +1135 -162, and 4 files +114 -8). #45717 applied clean. The other conflicts were only in context lines that main has and the rc does not, and each was resolved by keeping just the pick's own lines

#45717 merged after this backport started and is in because it fixes the price row #45639 adds. Without it the rc would bill output tokens at a price main already dropped

No hidden prerequisite was needed. The picked tests pass on the line without #44955, #45200, #45501, or #45640, which stay off the rc

Tests on the backport tip

  • tests/unit/decisions/test_main.py and tests/unit/test_cost_map_guard.py pass (80 tests, the new azure_ai and evaluation-row ones included)
  • ci_cd/cost_map_guard.py passes against the rc base
  • The lazy import and cost map tests pass (46 passed, 1 skipped)
  • The dashboard vitest files the picks touch pass (11 files, 145 tests), and npm run typecheck exits 0

Pre-Submission checklist

Please complete all items before asking a LiteLLM maintainer to review your PR

  • I have added meaningful tests
  • The handful of test files covering my change pass locally, e.g. uv run pytest tests/unit/<your_test_file>.py -v. Leave the suites (make test-unit-*, make test-unit) to CI: it finishes in ~15 minutes where a laptop takes an hour or more
  • My PR passes all required CI/CD checks (e.g., lint, schema.d.ts sync check, etc.)
  • My PR's scope is as isolated as possible; it only solves 1 specific problem
  • I have received a Greptile Confidence Score of at least 4/5 before requesting a maintainer review (Greptile reviews automatically once the PR is opened; only comment @greptileai to re-request a review after pushing changes)

Delays in PR merge?

If you're seeing a delay in your PR being merged, ping the LiteLLM Team on Slack (#pr-review).

Screenshots / Proof of Fix

Two local proxies with Postgres, one at the rc tip and one at this PR's tip, each run with LITELLM_LOCAL_MODEL_COST_MAP=True so the bundled cost map is the one priced. Both call the same real Microsoft-Decision-1 GlobalStandard deployment (decision-1) on Azure AI Foundry. The Admin UI ran through each side's dashboard dev server in headless Chromium at 1440x900, logged in as the proxy admin

model_list:
  - model_name: microsoft-decision-1
    litellm_params:
      model: azure_ai/decision-1
      api_base: https://lit6549-audio-qa.services.ai.azure.com
      api_key: os.environ/AZURE_AI_API_KEY
    model_info:
      mode: evaluation
      base_model: azure_ai/Microsoft-Decision-1

systemone.json

{"model":"microsoft-decision-1","state":"Ticket (billing): The export job hangs at 99% and never finishes","questions":{"defect":{"type":"noul","instructions":"Is this a defect?"},"severity":{"type":"choice","instructions":"How severe is it?","criteria":{"low":"cosmetic","high":"blocks users"}}}}

Before (bbcc985, rc/1.106.0 tip)

System One call (#45673)

  1. curl -sS -i -X POST http://localhost:$PORT/v1/systemone -H "Authorization: Bearer $LITELLM_MASTER_KEY" -H 'Content-Type: application/json' -d @systemone.json
  2. Output
HTTP/1.1 400 Bad Request
x-litellm-version: 1.106.0
x-litellm-response-cost: 0
{"error":{"message":"litellm.BadRequestError: Unknown Decisions provider 'azure_ai'. Supported providers: openai, openrouter, perplexity, typesafe, strands_decider, cloudflare\n\nLiteLLM: model group 'microsoft-decision-1' failed with the error above. No fallback was attempted.","type":"invalid_request_error","param":null,"code":"400"}}

Price (#45639)

  1. curl -sS http://localhost:$PORT/v1/model/info -H "Authorization: Bearer $LITELLM_MASTER_KEY"
  2. The microsoft-decision-1 entry has "key": "azure_ai/decision-1", "input_cost_per_token": null, and "output_cost_per_token": null

Admin UI (#45654)

  1. Open http://localhost:$DEV/ui/models-and-endpoints. The banner asks for cost optimization feedback (first screenshot under User Flow Before)
  2. Click Add Model and type decision into Provider. It shows "No providers found" (second screenshot)
  3. Open http://localhost:$DEV/ui/playground?tab=system-one, pick System One /v1/systemone as the Endpoint, and click Send. There is no Model picker, and the response panel says "System One request failed /decisions: Invalid model name passed in model=your-decision-model" (third screenshot)

After (8b631ac)

System One call (#45673)

  1. The same curl
  2. Output
HTTP/1.1 200 OK
x-litellm-model-api-base: https://lit6549-audio-qa.services.ai.azure.com
x-litellm-version: 1.106.0
x-litellm-response-cost: 2.73e-06
x-litellm-response-cost-input: 2.73e-06
x-litellm-response-cost-output: 0.0
{"model":"microsoft-decision-1","answers":{"defect":{"type":"noul","noul":0.982013764002278},"severity":{"type":"choice","choice":"high","confidence":0.9866142978108987,"probabilities":{"high":0.9933071489054494,"low":0.006692851094550702}}},"usage":{"input_tokens":65,"output_tokens":2}}

The cost is 65 input tokens at $0.042 per 1M, the row #45639 adds, and output is free per #45717

Price (#45639, #45717)

  1. The same /v1/model/info curl
  2. The entry now has "key": "azure_ai/Microsoft-Decision-1", "input_cost_per_token": 4.2e-08, and "output_cost_per_token": 0.0

Admin UI (#45654)

  1. Open http://localhost:$DEV/ui/models-and-endpoints. The banner says "Decision models are now supported", and the deployment's Costs column shows IN $0.04 and OUT $0.00 (first screenshot under User Flow After)
  2. Click Add Model and type decision into Provider. Azure AI Foundry (Studio) is listed with "Decision models: Microsoft-Decision-1", followed by Cloudflare, OpenAI, OpenRouter, Perplexity, Strands Decider, and TypeSafe (second screenshot)
  3. Open http://localhost:$DEV/ui/playground?tab=system-one, pick System One /v1/systemone, and click Send. The Model picker shows microsoft-decision-1, and the panel shows calibrated probabilities from it, with 215 input and 3 output tokens (third screenshot)

Type

🆕 New Feature

Caveats (if any)

Copied from the source PRs and re-read against rc/1.106.0. #45639 and #45673 listed none

Low

Final Attestation

  • The tests check the right things, including the edge cases, and regressions in the respective real-world customer use-cases are not possible after this PR

Backport of #45639 to rc/1.106.0.
Cherry-picked from de6a071 (main).
…min UI (#45654)

Backport of #45654 to rc/1.106.0.
Cherry-picked from e2276ac (main).
@CLAassistant

CLAassistant commented Oct 10, 2026 •

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
0 out of 3 committers have signed the CLA.

❌ devin-ai-integration[bot]
❌ moyai-devin-berriai[bot]
❌ berriai-litellm-provider-info-sync[bot]
You have signed the CLA already but the status is still pending? Let us recheck it.

@greptile-apps

greptile-apps Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Medium impact] The PR appears safe to merge, with no new blocking issue established.

Summary

Backports Azure AI decision calls, model pricing, and Admin UI discovery and testing. The latest changes set Microsoft decision output pricing to zero and add a check for evaluation models with output prices.

  • Azure AI Foundry deployments can answer LiteLLM decision requests.
  • Microsoft-Decision-1 requests now have a bundled input price.
  • Admins can find decision models and see how to call them.
  • The System One playground can pick a decision model from the active key.

Reviews (2) · Last reviewed commit: "fix(model_prices): drop unverified outpu..." · Reviewed by Greptile

Comment thread ui/litellm-dashboard/src/components/AIHub/modelUsageExample.ts
@mateo-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

…t-Decision-1 (#45717)

Backport of #45717 to rc/1.106.0.
Cherry-picked from 674208b (main).

Co-authored-by: kerry <kerry@berri.ai>

@cursor cursor Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

@mateo-berri

Copy link
Copy Markdown
Contributor Author

@greptileai

@mateo-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 8b631ac. Configure here.

@mateo-berri mateo-berri changed the title feat(decisions): backport Microsoft-Decision-1 and the decision models Admin UI to rc/1.106.0 (#45639, #45673, #45654) feat(decisions): backport Microsoft-Decision-1 and the decision models Admin UI to rc/1.106.0 (#45639, #45673, #45654, #45717) Oct 10, 2026
@mateo-berri
mateo-berri merged commit 98f717a into rc/1.106.0 Oct 10, 2026
8 checks passed
@mateo-berri
mateo-berri deleted the litellm_backport_decisions_rc_1_106_0 branch October 10, 2026 05:34
mateo-berri added a commit that referenced this pull request Oct 10, 2026
…kport_45721_rc_1_106_0

Brings in the #45717 pick so this branch keeps matching #45735.
mateo-berri added a commit that referenced this pull request Oct 10, 2026
The rc tree equals this branch's #45735 commits, so the merge keeps this tree as is.
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