Skip to content

Python: [Feature]: Support Microsoft-Decision-1 (Microsoft Foundry) through the TypeSafe connector #9489

Description

Problem

Microsoft released Microsoft-Decision-1 in Microsoft Foundry on 9 October 2026, a decision model for routing, classification, validation and workflow control. Foundry serves it on the System One protocol, the same contract that agent-framework-typesafe already implements: POST <resource endpoint>/providers/microsoft/v1/systemone, with the key sent as a bearer token and the deployment name as model.

Agent Framework users who want a first-party decision model at agent decision points (judge, routing, tool gating) have no documented way to call it from Python today.

Use Case and Evidence

TypeSafeChatClient already accepts a base_url and appends /v1/systemone, so pointing it at https://<resource>.services.ai.azure.com/providers/microsoft may already work with an API key. This is not documented or tested, and there is no Microsoft Entra ID authentication path, which most enterprise Foundry deployments require.

Example scenario: an agent routes incoming support tickets with a Choice question (billing / engineering / sales) and hands off to a human when the top probability is below a threshold. The same Questions / SystemOneResponse code should work against Jev or a Foundry deployment of Microsoft-Decision-1.

Desired Outcome

Python users can call a Microsoft Foundry deployment of Microsoft-Decision-1 from Agent Framework, with either an API key or Microsoft Entra ID, using a documented and tested configuration and a sample.

Alternatives Considered

  • Pointing the existing connector at the Foundry endpoint through base_url: may work with an API key, but it is undocumented, untested and has no Entra ID option.
  • Calling the REST endpoint directly outside the framework: loses the chat client integration (agent loop judge, tool planning, structured SystemOneResponse).

Proposed Direction

  1. Document and test calling a Foundry deployment of Microsoft-Decision-1 with the existing connector (base_url, deployment name as model, API key).
  2. Accept an async token credential (azure.identity) as an alternative to api_key, sending the Entra token as the bearer.
  3. Add a sample (for example, ticket routing with a Choice question and a confidence threshold that hands off to a human).

Question for maintainers: should this live in the TypeSafe package (shared protocol), or in a separate foundry decision client aligned with the .NET IDecisionClient work in #8562 / #8563?

I don't have a Foundry deployment to run a live test, so the PR would include offline tests based on the documented request and response contract. Validation by someone with access would be welcome.

Scope and Non-Goals

Language

Python

Contribution Intent

I am willing to implement this

Acknowledgements

  • I searched existing issues and did not find a duplicate.
  • I will wait for explicit maintainer agreement before starting implementation of a non-trivial change.

Activity

  1. added
    pythonUsage: [Issues, PRs], Target: Python
    triageUsage: [Issues], Target: All issues that still need to be triaged
    on Oct 18, 2026
  2. removed
    triageUsage: [Issues], Target: All issues that still need to be triaged
    on Oct 18, 2026
  3. eavanvalkenburg commented on Oct 26, 2026

    @eavanvalkenburg
    Member

    We will consider Microsoft-Decision-1 support as a Foundry-based client capability, not as an extension that depends on the TypeSafe package. The design may reuse relevant decision-model concepts, but Foundry users should not need agent-framework-typesafe or its SDK dependency for this support. We will request planning for the client/API boundary and documented authentication contract before agreeing to implementation. This does not promise delivery or timing; please wait for agreement on the resulting approach.

  4. eavanvalkenburg commented on Oct 26, 2026

    @eavanvalkenburg
    Member

    /plan Design Microsoft-Decision-1 support in a Foundry-based Python client. Maintainer direction: do not implement this as a TypeSafe connector feature and do not introduce a direct or transitive dependency on agent-framework-typesafe or its TypeSafe SDK. Relevant decision concepts may be reused without that package dependency. Establish whether an existing Foundry client surface or a dedicated Foundry decision client is appropriate; do not force a typed decision protocol into generative-chat semantics without a justified contract. Reuse existing Foundry authentication/client lifecycle patterns where suitable. Verify the model-specific contract at https://learn.microsoft.com/en-us/azure/foundry/foundry-models/how-to/use-foundry-models-microsoft-decision : /providers/microsoft/v1/systemone, deployment-name request model, documented api-key header, and Entra token scope https://cognitiveservices.azure.com/.default. Do not assume the issue-suggested API-key bearer configuration or full TypeSafe wire compatibility. Address credential refresh, caller-owned versus framework-owned resources, errors, typed questions/answers, package/API compatibility and optional dependencies. Consult #8562/#8563 for conceptual alignment, leaving .NET implementation to its owners. Propose offline contract/auth/lifecycle coverage and an explicit live-validation gap; no live deployment access has been established. Keep ticket-routing policy in a sample. Recommend a bounded design before implementation; no delivery promise.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

pythonUsage: [Issues, PRs], Target: Python

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions