Delen via


Handleiding voor belangrijke wijzigingen in Python 2026

Dit document bevat alle belangrijke wijzigingen in Python-releases sinds het begin van 2026, waaronder belangrijke wijzigingen en belangrijke verbeteringen die van invloed kunnen zijn op uw code. Elke wijziging wordt gemarkeerd als:

  • 🔴 Doorbrekend - vereist codewijzigingen om te upgraden
  • 🟡 Uitbreiding — Nieuwe mogelijkheid of verbetering; bestaande code blijft werken

Dit document wordt verwijderd zodra we de stabiele versie 1.0.0 hebben bereikt. Raadpleeg het document dus bij het upgraden tussen versies in 2026 om ervoor te zorgen dat u geen belangrijke wijzigingen mist. Raadpleeg voor gedetailleerde upgrade-instructies over specifieke onderwerpen, zoals migratie van opties, de gekoppelde handleidingen voor upgrades of de gekoppelde pull requests.


python-1.0.0rc6

In deze sectie worden de belangrijke Python-wijzigingen opgenomen die momenteel worden gevolgd voor python-1.0.0rc6.

🔴 Provider-leidend clientontwerp en pakketscheiding

PR:#4818

PR #4818 herordent de Python-provider rond providerspecifieke pakketten en namespaces.

  • OpenAI-clients leven nu in het agent-framework-openai pakket, terwijl ze nog steeds vanuit de agent_framework.openai naamruimte worden geïmporteerd.
  • Microsoft Foundry-clients wonen nu in het agent-framework-foundry pakket en de agent_framework.foundry naamruimte.
  • Foundry Local wordt ook aangeboden via agent_framework.foundry als FoundryLocalClient.
  • OpenAIResponsesClient wordt gewijzigd in OpenAIChatClient.
  • OpenAIChatClient wordt gewijzigd in OpenAIChatCompletionClient.
  • Clientconfiguratie is gestandaardiseerd op model, waarbij oudere parameters, zoals model_id, deployment_name en model_deployment_name worden vervangen.
  • Gebruik de agent_framework.openai clients voor nieuwe Azure OpenAI-code. De oudere AzureOpenAI* klassen bestaan nog steeds onder agent_framework.azure als verouderde compatibiliteitsshims.
  • Gebruik voor nieuwe Foundry-code FoundryChatClient voor directe projectdeductie, FoundryAgent voor Prompt Agents en HostedAgents en FoundryLocalClient voor lokale runtimes.
  • AzureAIClient, AzureAIProjectAgentProvider, AzureAIAgentClient, AzureAIAgentsProvider, en OpenAIAssistantsClient bevinden zich nu op afgeschafte of compatibiliteitspaden. AzureAIAgentClient en gerelateerde klassen zijn gericht op de v1 Agent Service-interface en worden verwijderd voordat het algemeen beschikbaar is.
  • De voorbeelddekking is opnieuw geordend zodat deze overeenkomt met de nieuwe provider-geleide indeling, waaronder Foundry-voorbeelden onder samples/02-agents/providers/foundry/.

Pakkettoewijzing

Scenario Installeren Primaire naamruimte
OpenAI en Azure OpenAI pip install agent-framework-openai --pre agent_framework.openai
Microsoft Foundry-projecteindpunten en Agentservice pip install agent-framework-foundry --pre agent_framework.foundry
Gieterij Lokaal pip install agent-framework-foundry-local --pre agent_framework.foundry
Verouderde/lagere Azure AI-clients pip install agent-framework-azure-ai --pre agent_framework.azure

Before:

from agent_framework.openai import OpenAIResponsesClient

client = OpenAIResponsesClient(model_id="gpt-5.4")

After:

from agent_framework.openai import OpenAIChatClient

client = OpenAIChatClient(model="gpt-5.4")

Als u Azure OpenAI eerder rechtstreeks hebt gebruikt, wijst u de oude toegewezen klassen toe aan de nieuwe, toonaangevende OpenAI-klassen:

  • AzureOpenAIResponsesClientOpenAIChatClient
  • AzureOpenAIChatClientOpenAIChatCompletionClient
  • AzureOpenAIEmbeddingClientOpenAIEmbeddingClient
  • AzureOpenAIAssistantsClient OpenAIAssistantsClient→ ofOpenAIAssistantProvider

De codewijziging is meestal een klassenaamverplaatsing plus deployment_namemodel. Gebruik expliciete Azure-invoer voor de nieuwe OpenAI-clients voor compatibiliteit met Azure OpenAI. credential= is nu het voorkeursoppervlak voor Azure-verificatie, terwijl een aanroepbaar api_key compatibiliteitspad blijft:

Voor (AzureOpenAIResponsesClient):

from agent_framework.azure import AzureOpenAIResponsesClient

client = AzureOpenAIResponsesClient(
    endpoint=azure_endpoint,
    deployment_name=deployment_name,
    credential=credential,
)

Na (OpenAIChatClient):

from agent_framework.openai import OpenAIChatClient
from azure.identity import AzureCliCredential

api_version = "your-azure-openai-api-version"

client = OpenAIChatClient(
    azure_endpoint=azure_endpoint,
    model=deployment_name,
    credential=AzureCliCredential(),
    api_version=api_version,
)

Voor (AzureOpenAIChatClient):

from agent_framework.azure import AzureOpenAIChatClient

client = AzureOpenAIChatClient(
    endpoint=azure_endpoint,
    deployment_name=deployment_name,
    credential=credential,
)

Na (OpenAIChatCompletionClient):

from agent_framework.openai import OpenAIChatCompletionClient
from azure.identity import AzureCliCredential

api_version = "your-azure-openai-api-version"

client = OpenAIChatCompletionClient(
    azure_endpoint=azure_endpoint,
    model=deployment_name,
    credential=AzureCliCredential(),
    api_version=api_version,
)

Als u wilt overstappen van Azure OpenAI-eindpunten naar een Microsoft Foundry-projecteindpunt, gebruikt u in plaats daarvan het foundry-georiënteerde oppervlak:

Vóór (Azure OpenAI-eindpunt):

from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity import AzureCliCredential

client = AzureOpenAIResponsesClient(
    deployment_name="gpt-4.1",
    credential=AzureCliCredential(),
)

Na (Foundry-project):

from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential

client = FoundryChatClient(
    project_endpoint="https://your-project.services.ai.azure.com",
    model="gpt-4.1",
    credential=AzureCliCredential(),
)

agent = Agent(client=client)

Voor lokale Microsoft Foundry-runtimes gebruikt u de Foundry-naamruimte plus de lokale connector:

from agent_framework.foundry import FoundryLocalClient

client = FoundryLocalClient(model="phi-4-mini")

Als u model weglaat, stel dan FOUNDRY_LOCAL_MODEL in in uw omgeving.

Werk indien van toepassing ook omgevings-/configuratienamen bij:

  • OPENAI_RESPONSES_MODEL_ID / OPENAI_CHAT_MODEL_IDOPENAI_MODEL
  • Namen van Azure OpenAI-implementaties worden nu toegewezen aan het model argument op OpenAIChatClient / OpenAIChatCompletionClient
  • Gebruiken azure_endpoint voor Azure OpenAI-resource-URL's of base_url als u al een volledige .../openai/v1 URL hebt en instelt api_version voor het Azure OpenAI API-oppervlak dat u gebruikt
  • Foundry-specifieke instellingen gebruiken, zoals FOUNDRY_PROJECT_ENDPOINT, FOUNDRY_MODELen FOUNDRY_AGENT_NAMEFOUNDRY_AGENT_VERSION voor cloud Foundry-clients
  • Gebruik FOUNDRY_LOCAL_MODEL voor Foundry Local

Deze wijziging wordt momenteel bijgehouden onder python-1.0.0rc6; voeg de koppeling releaseopmerkingen toe zodra de bijbehorende Python-release is gepubliceerd.


🔴 Kernafhankelijkheden zijn nu opzettelijk minimalistisch

PR:#4904

PR #4904 volgt de opsplitsing van het providerpakket van #4818 door agent-framework-core te verkleinen en meer transitieve providerafhankelijkheden uit het kernpakket te verwijderen.

  • agent-framework-core is nu opzettelijk minimaal.
  • Als u agent_framework.openai importeert, installeert u agent-framework-openai --pre.
  • Als u Azure-compatibiliteit of Azure AI-clients op een lager niveau importeert vanuit agent_framework.azure, installeer agent-framework-azure-ai --pre.
  • Als u MCP-hulpprogramma's Agent.as_mcp_server()of andere MCP-integraties gebruikt op een minimale installatie, installeert u mcp --pre deze handmatig. Installeer voor WebSocket MCP-ondersteuning mcp[ws] --pre.
  • Als u de brede ervaring 'alles inbegrepen' wilt, installeert u het metapakket agent-framework --pre.

Hiermee wordt het provideroppervlak niet opnieuw ontworpen; het wijzigt wat standaard wordt geïnstalleerd wanneer u alleen kernen binnenbrengt.

Voordat (core-only-installaties vaak automatisch meer providerfunctionaliteit meebrachten):

pip install agent-framework-core --pre

Na (installeer het providerpakket dat u daadwerkelijk gebruikt):

pip install agent-framework-core --pre
pip install agent-framework-openai --pre

or:

pip install agent-framework-core --pre
pip install agent-framework-azure-ai --pre

Als u een bestaand project bijwerkt dat eerder afhankelijk was van core plus luie providerimport, controleert u de importbewerkingen en maakt u de providerpakketten expliciet in uw omgevings- of afhankelijkheidsbestanden. Doe hetzelfde voor MCP-afhankelijkheden als u afhankelijk bent van MCP-hulpprogramma's of MCP-serverhosting.


🔴 Algemene OpenAI-clients geven nu de voorkeur aan expliciete routeringssignalen

PR:#4925

Pull request #4925 wijzigt hoe de generieke agent_framework.openai clients een keuze maken tussen OpenAI en Azure OpenAI.

  • Algemene OpenAI-clients schakelen niet langer over naar Azure omdat AZURE_OPENAI_* er omgevingsvariabelen aanwezig zijn.
  • Als OPENAI_API_KEY is geconfigureerd, blijven de algemene clients op OpenAI, tenzij u een expliciet Azure-routeringssignaal, zoals credential of azure_endpoint, doorgeeft.
  • Als er alleen AZURE_OPENAI_* instellingen aanwezig zijn, kunnen de algemene clients nog steeds terugvallen op routering op basis van een Azure-omgeving.
  • Het voorkeurspatroon van Azure OpenAI is nu om expliciete Azure-instellingen door te geven plus credential=AzureCliCredential() aan OpenAIChatClient, OpenAIChatCompletionClient, en de embedding client.
  • Afgeschafte AzureOpenAI* wrappers behouden hun compatibiliteitsgedrag, zodat bestaande code op basis van wrapper niet voldoet aan de nieuwe regels voor algemene clientprioriteit.

Voor (OpenAIChatClient kan naar Azure worden gerouteerd omdat Azure-env vars aanwezig waren):

import os
from agent_framework.openai import OpenAIChatClient

os.environ["OPENAI_API_KEY"] = "sk-openai"
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://your-resource.openai.azure.com"
os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"] = "gpt-4o-mini"

client = OpenAIChatClient(model="gpt-4o-mini")

Nadat (generieke OpenAI op OpenAI blijft; voer expliciete Azure-gegevens in om Azure-routering af te dwingen):

import os
from agent_framework.openai import OpenAIChatClient
from azure.identity import AzureCliCredential

client = OpenAIChatClient(
    model=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    credential=AzureCliCredential(),
)

Als uw omgeving zowel OPENAI_* als AZURE_OPENAI_* waarden bevat, controleert u de algemene agent_framework.openai clientconstructie en maakt u de keuze voor de provider expliciet. De Azure-providervoorbeelden zijn om deze reden bijgewerkt om Azure-invoer rechtstreeks door te geven.

Azure-insluitingen volgen nu hetzelfde routeringsmodel:

import os
from agent_framework.openai import OpenAIEmbeddingClient
from azure.identity import AzureCliCredential

client = OpenAIEmbeddingClient(
    model=os.environ["AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    credential=AzureCliCredential(),
)

Voor insluitingsscenario's wijst u het volgende toe:

  • AzureOpenAIEmbeddingClientOpenAIEmbeddingClient
  • AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAMEmodel
  • OPENAI_EMBEDDING_MODEL blijft de omgevingsvariabele aan de OpenAI-kant voor embedding

python-1.0.0rc5 / python-1.0.0b260319 (19 maart 2026)

🔴 Opnieuw gerangschikte chatclientpijplijn: FunctionInvocation verpakt nu ChatMiddleware

PR:#4746

De volgorde van de ChatClient-pijplijn is gewijzigd. FunctionInvocation is nu de buitenste laag en omvat ChatMiddleware, wat betekent dat chat-middleware wordt uitgevoerd per modeloproep (inclusief elke iteratie van de aanroeplus van de tool) in plaats van één keer rond de volledige aanroepvolgorde van de functie.

Oude pijplijnvolgorde:

ChatMiddleware → FunctionInvocation → RawChatClient

Nieuwe pijplijnvolgorde:

FunctionInvocation → ChatMiddleware → ChatTelemetry → RawChatClient

Als u aangepaste chat-middleware hebt die ervan uitging dat deze slechts eenmaal per agent aanroep werd uitgevoerd (de hele aanroeplus van het hulpprogramma verpakken), werkt u deze bij zodat deze veilig is voor herhaalde uitvoering. Chat-middleware wordt nu aangeroepen voor elke afzonderlijke LLM-aanvraag, inclusief aanvragen die hulpprogrammaresultaten terugsturen naar het model.

Daarnaast is ChatTelemetry nu een aparte laag van ChatMiddleware in de pijplijn, die dichtst bij RawChatClient loopt.

🔴 Openbare runtime kwargs gesplitst in expliciete buckets

PR:#4581

Openbare Python-agent en chat-API's behandelen algemene openbare **kwargs doorsturen niet langer als het primaire mechanisme voor runtime gegevens. Runtimewaarden worden nu gesplitst op doel:

  • Gebruiken function_invocation_kwargs voor waarden die alleen hulpprogramma's of functie-middleware moeten zien.
  • Gebruik client_kwargs voor client-laag kwargs en client-middlewareconfiguratie.
  • Toegang tot hulpprogramma-/runtimegegevens via FunctionInvocationContext (ctx.kwargs en ctx.session).
  • Definieer hulpprogramma's met een geïnjecteerde contextparameter in plaats van **kwargs; geïnjecteerde contextparameters worden niet weergegeven in het schema dat het model ziet.
  • Wanneer u aan een subagent delegeert als een hulpmiddel, gebruikt u agent.as_tool(propagate_session=True) als de onderliggende agent de sessie van de beller moet delen.

Before:

from typing import Any

from agent_framework import tool


@tool
def send_email(address: str, **kwargs: Any) -> str:
    return f"Queued email for {kwargs['user_id']}"


response = await agent.run(
    "Send the update to finance@example.com",
    user_id="user-123",
    request_id="req-789",
)

After:

from agent_framework import FunctionInvocationContext, tool


@tool
def send_email(address: str, ctx: FunctionInvocationContext) -> str:
    user_id = ctx.kwargs["user_id"]
    session_id = ctx.session.session_id if ctx.session else "no-session"
    return f"Queued email for {user_id} in {session_id}"


response = await agent.run(
    "Send the update to finance@example.com",
    session=agent.create_session(),
    function_invocation_kwargs={
        "user_id": "user-123",
        "request_id": "req-789",
    },
)

Als u aangepaste openbare run() of get_response() methoden implementeert, voeg dan function_invocation_kwargs en client_kwargs toe aan die handtekeningen. Voor hulpprogramma's geeft u de voorkeur aan een parameter die is geannoteerd als FunctionInvocationContext : deze kan een naam ctxhebben, contextof een andere geannoteerde naam. Als u een expliciet schema/invoermodel opgeeft, wordt ook een ongeannoteerde parameter met de naam ctx herkend. Hetzelfde contextobject is beschikbaar voor functie-middleware en het is waar runtime-functie kwargs en sessiestatus nu live zijn. Hulpprogrammadefinities die nog steeds afhankelijk zijn van **kwargs gebruiken slechts een verouderd compatibiliteitspad en zullen worden verwijderd.


python-1.0.0rc4 / python-1.0.0b260311 (11 maart 2026)

Releaseopmerkingen:python-1.0.0rc4

🔴 Azure AI-integraties richten zich nu op azure-ai-projects 2.0 GA

PR:#4536

De Python Azure AI-integraties gaan nu uit van de GA 2.0-surface azure-ai-projects .

  • Het ondersteunde afhankelijkheidsbereik is nu azure-ai-projects>=2.0.0,<3.0.
  • foundry_features passthrough is verwijderd uit de creatie van een Azure AI-agent.
  • Het preview-gedrag maakt nu gebruik van allow_preview=True bij de ondersteunde clients/providers.
  • Gemengde bèta-/GA-compatibiliteits shims zijn verwijderd. Werk daarom alle import- en type-namen bij naar de 2.0 GA SDK-interface.

🔴 GitHub Copilot-hulpprogramma-handlers gebruiken ToolInvocation / ToolResult nu en Python 3.11+

PR:#4551

agent-framework-github-copilot volgt nu github-copilot-sdk>=0.1.32.

  • Toolhandlers ontvangen een ToolInvocation gegevensklasse in plaats van een onbewerkte dict.
  • Retourneer ToolResult met behulp van snake_case velden zoals result_type en text_result_for_llm.
  • Voor het agent-framework-github-copilot pakket is nu Python 3.11+ vereist.

Before:

from typing import Any


def handle_tool(invocation: dict[str, Any]) -> dict[str, Any]:
    args = invocation.get("arguments", {})
    return {
        "resultType": "success",
        "textResultForLlm": f"Handled {args.get('city', 'request')}",
    }

After:

from copilot.types import ToolInvocation, ToolResult


def handle_tool(invocation: ToolInvocation) -> ToolResult:
    args = invocation.arguments
    return ToolResult(
        result_type="success",
        text_result_for_llm=f"Handled {args.get('city', 'request')}",
    )

python-1.0.0rc3 / python-1.0.0b260304 (4 maart 2026)

Releaseopmerkingen:python-1.0.0rc3

🔴 Vaardighedenleverancier afgerond met betrekking tot codegedefinieerde Skill / SkillResource

PR:#4387

Python Agent Skills ondersteunt nu door code gedefinieerde Skill en SkillResource objecten naast op bestanden gebaseerde vaardigheden en het oppervlak van de openbare provider wordt gestandaardiseerd op SkillsProvider.

  • Als u de oudere preview/interne FileAgentSkillsProviderversie nog steeds importeert, schakelt u over naar SkillsProvider.
  • Zoeken naar resources op basis van bestanden is niet langer afhankelijk van verwijzingen die tussen backticks staan bij SKILL.md; in plaats daarvan worden resources gedetecteerd vanuit de vaardighedendirectory.

Als u preview-/interne code hebt geïmporteerd met FileAgentSkillsProvider, schakel dan over naar de huidige openbare interface.

from agent_framework import Skill, SkillResource, SkillsProvider

python-1.0.0rc2 / python-1.0.0b260226 (26 februari 2026)

Releaseopmerkingen:python-1.0.0rc2

🔴Declaratieve werkstromen vervangen door InvokeToolInvokeFunctionTool

PR:#3716

Declaratieve Python-werkstromen maken niet langer gebruik van het oude InvokeTool actietype. Vervang deze door InvokeFunctionTool En registreer Python-aanroepbare bestanden door WorkflowFactory.register_tool().

Before:

actions:
  - kind: InvokeTool
    toolName: send_email

After:

factory = WorkflowFactory().register_tool("send_email", send_email)
actions:
  - kind: InvokeFunctionTool
    functionName: send_email

python-1.0.0rc1 / python-1.0.0b260219 (19 februari 2026)

Release:agent-framework-core en agent-framework-azure-ai gepromoveerd tot 1.0.0rc1. Alle andere pakketten zijn bijgewerkt naar 1.0.0b260219.

🔴 Unified Azure-referentieverwerking voor alle pakketten

PR:#4088

De ad_token-, ad_token_provider- en get_entra_auth_token-parameters/-helpers zijn vervangen door een uniform credential-parameter voor alle Azure-gerelateerde Python-pakketten. De nieuwe benadering gebruiktazure.identity.get_bearer_token_provider voor automatische caching en hernieuwing van tokens.

Betrokken klassen:AzureOpenAIChatClient, AzureOpenAIResponsesClient, , AzureOpenAIAssistantsClient, AzureAIClient, AzureAIAgentClient, AzureAIProjectAgentProvider, , AzureAIAgentsProvider, AzureAISearchContextProvider, PurviewClient. PurviewPolicyMiddlewarePurviewChatPolicyMiddleware

Before:

from azure.identity import AzureCliCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    AzureCliCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAIResponsesClient(
    azure_ad_token_provider=token_provider,
    ...
)

After:

from azure.identity import AzureCliCredential

client = AzureOpenAIResponsesClient(
    credential=AzureCliCredential(),
    ...
)

De credential parameter accepteert TokenCredential, AsyncTokenCredentialof een aanroepbare tokenprovider. Tokencaching en vernieuwing worden automatisch afgehandeld.


🔴 Opnieuw ontworpen Python-uitzonderingshiërarchie

PR:#4082

De platte ServiceException familie is vervangen door domeingebonden uitzonderingstakken onder één AgentFrameworkException basis. Dit geeft bellers nauwkeurige except doelen en duidelijke foutsemantiek.

Nieuwe hiërarchie:

AgentFrameworkException
├── AgentException
│   ├── AgentInvalidAuthException
│   ├── AgentInvalidRequestException
│   ├── AgentInvalidResponseException
│   └── AgentContentFilterException
├── ChatClientException
│   ├── ChatClientInvalidAuthException
│   ├── ChatClientInvalidRequestException
│   ├── ChatClientInvalidResponseException
│   └── ChatClientContentFilterException
├── IntegrationException
│   ├── IntegrationInitializationError
│   ├── IntegrationInvalidAuthException
│   ├── IntegrationInvalidRequestException
│   ├── IntegrationInvalidResponseException
│   └── IntegrationContentFilterException
├── ContentError
├── WorkflowException
│   ├── WorkflowRunnerException
│   ├── WorkflowValidationError
│   └── WorkflowActionError
├── ToolExecutionException
├── MiddlewareTermination
└── SettingNotFoundError

Verwijderde uitzonderingen:ServiceException, ServiceInitializationError, ServiceResponseException, ServiceContentFilterException, ServiceInvalidAuthError, ServiceInvalidExecutionSettingsError, ServiceInvalidRequestError, ServiceInvalidResponseError, AgentExecutionException, AgentInvocationError, AgentInitializationError, AgentSessionException, ChatClientInitializationError, CheckpointDecodingError

Before:

from agent_framework.exceptions import ServiceException, ServiceResponseException

try:
    result = await agent.run("Hello")
except ServiceResponseException:
    ...
except ServiceException:
    ...

After:

from agent_framework.exceptions import AgentException, AgentInvalidResponseException, AgentFrameworkException

try:
    result = await agent.run("Hello")
except AgentInvalidResponseException:
    ...
except AgentException:
    ...
except AgentFrameworkException:
    # catch-all for any Agent Framework error
    ...

Opmerking

Init-validatiefouten gebruiken nu de ingebouwde ValueError/TypeError in plaats van aangepaste uitzonderingen. Agent Framework-uitzonderingen zijn gereserveerd voor fouten op domeinniveau.


🔴 Providerstaat afgebakend door source_id

PR:#3995

Provider-hooks ontvangen nu een toestandsdictionary op provider-niveau (state.setdefault(provider.source_id, {})) in plaats van de gehele sessiestatus. Dit betekent dat implementaties van providers die eerder toegang hebben tot geneste status via state[self.source_id]["key"], nu state["key"] direct moeten benaderen.

Daarnaast is de InMemoryHistoryProvider standaardinstelling source_id gewijzigd van "memory" ."in_memory"

Before:

# In a custom provider hook:
async def on_before_agent(self, state: dict, **kwargs):
    my_data = state[self.source_id]["my_key"]

# InMemoryHistoryProvider default source_id
provider = InMemoryHistoryProvider("memory")

After:

# Provider hooks receive scoped state — no nested access needed:
async def on_before_agent(self, state: dict, **kwargs):
    my_data = state["my_key"]

# InMemoryHistoryProvider default source_id changed
provider = InMemoryHistoryProvider("in_memory")

🔴 Chat-/agentberichten uitlijnen tijdens typen (run vs get_response)

PR:#3920

Implementaties van chat-clients get_response ontvangen nu consistent Sequence[Message]. agent.run(...) blijft flexibel (str, Content, Message of combinaties daarvan), en normaliseert invoer voordat de chatclients worden aangeroepen.

Before:

async def get_response(self, messages: str | Message | list[Message], **kwargs): ...

After:

from collections.abc import Sequence
from agent_framework import Message

async def get_response(self, messages: Sequence[Message], **kwargs): ...

🔴 FunctionTool[Any] generieke configuratie verwijderd voor schemapassthrough

PR:#3907

Hulpprogrammapaden op basis van schema's zijn niet langer afhankelijk van het vorige FunctionTool[Any] algemene gedrag. Gebruik FunctionTool rechtstreeks en geef indien nodig een pydantic BaseModel of expliciete schema's op (bijvoorbeeld met @tool(schema=...)).

Before:

placeholder: FunctionTool[Any] = FunctionTool(...)

After:

placeholder: FunctionTool = FunctionTool(...)

🔴 Pydantic Settings vervangen door TypedDict + load_settings()

PR's:#3843, #4032

De op pydantic-settings en AFBaseSettings gebaseerde TypedDict-klasse is vervangen door een lichtgewicht systeem voor instellingen, gebaseerd op functies. De pydantic-settings afhankelijkheid is volledig verwijderd.

Alle instellingenklassen (bijvoorbeeld OpenAISettings, , AzureOpenAISettingsAnthropicSettings) zijn nu TypedDict definities en instellingenwaarden worden geopend via de syntaxis van de woordenlijst in plaats van kenmerktoegang.

Before:

from agent_framework.openai import OpenAISettings

settings = OpenAISettings()  # pydantic-settings auto-loads from env
api_key = settings.api_key
model_id = settings.model_id

After:

from agent_framework.openai import OpenAISettings, load_settings

settings = load_settings(OpenAISettings, env_prefix="OPENAI_")
api_key = settings["api_key"]
model_id = settings["model_id"]

Belangrijk

Agent Framework laadt niet automatisch waarden uit .env bestanden. U moet zich expliciet aanmelden voor .env het laden door:

  • Het aanroepen van load_dotenv() vanuit het pakket python-dotenv aan het begin van uw toepassing
  • Doorgeven env_file_path=".env" aan load_settings()
  • Omgevingsvariabelen rechtstreeks in uw shell of IDE instellen

De load_settings resolutievolgorde is: expliciete onderdrukkingen → .env bestandswaarden (indien env_file_path opgegeven) → omgevingsvariabelen → standaardwaarden. Als u opgeeft env_file_path, moet het bestand bestaan of wordt er een FileNotFoundError gegenereerd.


🟡 De overdracht van de workflow van het redeneermodel en de serialisatie van de geschiedenis corrigeren

PR:#4083

Lost meerdere fouten op bij het gebruik van redeneringsmodellen (bijvoorbeeld gpt-5-mini, gpt-5.2) in werkstromen met meerdere agents. Redeneringsitems van de Antwoorden-API worden nu correct geserialiseerd en worden alleen opgenomen in de geschiedenis wanneer een function_call ook aanwezig is, waardoor API-fouten worden voorkomen. Versleutelde/verborgen redeneringsinhoud wordt nu correct verzonden en de summary veldindeling wordt gecorrigeerd. De service_session_id is ook gewist bij overdracht om te voorkomen dat de toestandinformatie tussen agenten lekt.


🟡 Bedrock toegevoegd aan core[all] en standaardkeuzes voor gereedschap gecorrigeerd

PR:#3953

Amazon Bedrock is nu inbegrepen in de agent-framework-core[all] extra's en is beschikbaar via de agent_framework.amazon lazy import surface. Gedrag van hulpprogrammakeuze is ook opgelost: niet-ingestelde waarden voor hulpprogramma's blijven nu niet ingesteld, zodat providers hun servicestandaarden gebruiken, terwijl expliciet ingestelde waarden behouden blijven.

from agent_framework.amazon import BedrockClient

🟡 AzureAIClient waarschuwt voor niet-ondersteunde runtime-overschrijvingen

PR:#3919

AzureAIClient registreert nu een waarschuwing wanneer runtime tools of structured_output verschilt van de configuratie van de aanmaaktijd van de agent. De Azure AI Agent-service biedt geen ondersteuning voor wijzigingen in runtime- of antwoordindelingen. Gebruik AzureOpenAIResponsesClient in dat geval als u dynamische overschrijvingen nodig hebt.


🟡 workflow.as_agent() nu wordt de lokale geschiedenis standaard ingesteld wanneer providers niet zijn ingesteld

PR:#3918

Wanneer workflow.as_agent() wordt gemaakt zonder context_providers, wordt InMemoryHistoryProvider("memory") nu standaard toegevoegd. Als contextproviders expliciet worden opgegeven, blijft die lijst ongewijzigd.

workflow_agent = workflow.as_agent(name="MyWorkflowAgent")
# Default local history provider is injected when none are provided.

🟡 OpenTelemetry-traceringscontext die naar MCP-verzoeken is doorgegeven

PR:#3780

Wanneer OpenTelemetry is geïnstalleerd, wordt traceringscontext (bijvoorbeeld W3C traceparent) automatisch geïnjecteerd in MCP-aanvragen via params._meta. Dit maakt end-to-end gedistribueerde tracering mogelijk voor agent-→ MCP-serveroproepen. Er zijn geen codewijzigingen nodig. Dit is additief gedrag dat wordt geactiveerd wanneer er een geldige spancontext bestaat.


🟡 Ondersteuning voor duurzame werkstromen voor Azure Functions

PR:#3630

Het agent-framework-azurefunctions pakket ondersteunt nu het uitvoeren Workflow van grafieken in Azure Durable Functions. Geef een workflow parameter door aan AgentFunctionApp om agententiteiten, activiteitsfuncties en HTTP-eindpunten automatisch te registreren.

from agent_framework.azurefunctions import AgentFunctionApp

app = AgentFunctionApp(workflow=my_workflow)
# Automatically registers:
#   POST /api/workflow/run          — start a workflow
#   GET  /api/workflow/status/{id}  — check status
#   POST /api/workflow/respond/{id}/{requestId} — HITL response

Ondersteunt fan-out-/fan-in-, gedeelde status- en human-in-the-loop patronen met configureerbare time-out en automatische afwijzing bij het verlopen.


python-1.0.0b260212 (12 februari 2026)

Releaseopmerkingen:python-1.0.0b260212

🔴 Hosted*Toolklassen vervangen door clientmethoden get_*_tool()

PR:#3634

De gehoste hulpprogrammaklassen zijn verwijderd ten gunste van clientspecifieke factorymethoden. Hierdoor is de beschikbaarheid van hulpprogramma's expliciet per provider.

Klasse verwijderd Replacement
HostedCodeInterpreterTool client.get_code_interpreter_tool()
HostedWebSearchTool client.get_web_search_tool()
HostedFileSearchTool client.get_file_search_tool(...)
HostedMCPTool client.get_mcp_tool(...)
HostedImageGenerationTool client.get_image_generation_tool(...)

Before:

from agent_framework import HostedCodeInterpreterTool, HostedWebSearchTool

tools = [HostedCodeInterpreterTool(), HostedWebSearchTool()]

After:

from agent_framework.openai import OpenAIResponsesClient

client = OpenAIResponsesClient()
tools = [client.get_code_interpreter_tool(), client.get_web_search_tool()]

🔴 Pijplijn van sessie-/contextprovider is voltooid (AgentSession, context_providers)

PR:#3850

De migratie van de Python-sessie en contextprovider is voltooid. AgentThread en de oude typen contextprovider zijn verwijderd.

  • AgentThreadAgentSession
  • agent.get_new_thread()agent.create_session()
  • agent.get_new_thread(service_thread_id=...)agent.get_session(service_session_id=...)
  • context_provider= / chat_message_store_factory= patronen worden vervangen door context_providers=[...]

Before:

thread = agent.get_new_thread()
response = await agent.run("Hello", thread=thread)

After:

session = agent.create_session()
response = await agent.run("Hello", session=session)

🔴 Controlepuntmodel en opslaggedrag geherstructureerd

PR:#3744

Controlepunt-internals zijn opnieuw ontworpen, wat van invloed is op persistente compatibiliteit van controlepunten en aangepaste opslag-implementaties:

  • WorkflowCheckpoint slaat nu live-objecten op (serialisatie vindt plaats in controlepuntopslag)
  • FileCheckpointStorage maakt nu gebruik van pickle serialisatie
  • workflow_id is verwijderd en previous_checkpoint_id is toegevoegd
  • Afgeschafte controlepunthaken zijn verwijderd

Als u controlepunten tussen versies persistent maakt, genereert of migreert u bestaande controlepuntartefacten voordat u werkstromen hervat.


🟡 AzureOpenAIResponsesClient ondersteunt Microsoft Foundry-projecteindpunten

PR:#3814

U kunt nu een Foundry-projecteindpunt maken met AzureOpenAIResponsesClient of AIProjectClient, en niet alleen direct Azure OpenAI-eindpunten.

from azure.identity import DefaultAzureCredential
from agent_framework.azure import AzureOpenAIResponsesClient

client = AzureOpenAIResponsesClient(
    project_endpoint="https://<your-project>.services.ai.azure.com",
    deployment_name="gpt-4o-mini",
    credential=DefaultAzureCredential(),
)

🔴 Middleware call_next accepteert niet meer context

PR:#3829

Middleware voortzetting heeft nu geen argumenten. Als uw middleware nog steeds aanroept call_next(context), werkt u deze bij naar call_next().

Before:

async def telemetry_middleware(context, call_next):
    # ...
    return await call_next(context)

After:

async def telemetry_middleware(context, call_next):
    # ...
    return await call_next()

python-1.0.0b260210 (10 februari 2026)

Opmerkingen bij de release:python-1.0.0b260210

🔴 Workflow-factorymethoden verwijderd uit WorkflowBuilder

PR:#3781

register_executor() en register_agent() zijn verwijderd uit WorkflowBuilder. Alle opbouwmethoden (add_edge, add_fan_out_edges, add_fan_in_edges, add_chain, , add_switch_case_edge_group) add_multi_selection_edge_groupen start_executor accepteren geen tekenreeksnamen meer , ze vereisen rechtstreeks uitvoerders of agentexemplaren.

Voor de isolatie van de toestand omvat u de instantiëring van uitvoerders/agenten en de opbouw van werkstromen in een helpermethode, zodat elke aanroep nieuwe exemplaren produceert.

WorkflowBuilder met taakuitvoerders

Before:

workflow = (
    WorkflowBuilder(start_executor="UpperCase")
    .register_executor(lambda: UpperCaseExecutor(id="upper"), name="UpperCase")
    .register_executor(lambda: ReverseExecutor(id="reverse"), name="Reverse")
    .add_edge("UpperCase", "Reverse")
    .build()
)

After:

upper = UpperCaseExecutor(id="upper")
reverse = ReverseExecutor(id="reverse")

workflow = WorkflowBuilder(start_executor=upper).add_edge(upper, reverse).build()

WorkflowBuilder met agents

Before:

builder = WorkflowBuilder(start_executor="writer_agent")
builder.register_agent(factory_func=create_writer_agent, name="writer_agent")
builder.register_agent(factory_func=create_reviewer_agent, name="reviewer_agent")
builder.add_edge("writer_agent", "reviewer_agent")

workflow = builder.build()

After:

writer_agent = create_writer_agent()
reviewer_agent = create_reviewer_agent()

workflow = WorkflowBuilder(start_executor=writer_agent).add_edge(writer_agent, reviewer_agent).build()

Statusisolatie met helpermethoden

Voor werkstromen die een geïsoleerde staat per aanroep nodig hebben, omhul de constructie met een hulpmethode.

def create_workflow() -> Workflow:
    """Each call produces fresh executor instances with independent state."""
    upper = UpperCaseExecutor(id="upper")
    reverse = ReverseExecutor(id="reverse")

    return WorkflowBuilder(start_executor=upper).add_edge(upper, reverse).build()

workflow_a = create_workflow()
workflow_b = create_workflow()

🔴 ChatAgent hernoemd naar Agent, ChatMessage hernoemd naar Message

PR:#3747

Python-kerntypen zijn vereenvoudigd door het redundante Chat voorvoegsel te verwijderen. Er zijn geen achterwaartse compatibiliteitsaliassen opgegeven.

Voordat Na
ChatAgent Agent
RawChatAgent RawAgent
ChatMessage Message
ChatClientProtocol SupportsChatGetResponse

Importbewerkingen bijwerken

Before:

from agent_framework import ChatAgent, ChatMessage

After:

from agent_framework import Agent, Message

Typeverwijzingen bijwerken

Before:

agent = ChatAgent(
    chat_client=client,
    name="assistant",
    instructions="You are a helpful assistant.",
)

message = ChatMessage(role="user", contents=[Content.from_text("Hello")])

After:

agent = Agent(
    client=client,
    name="assistant",
    instructions="You are a helpful assistant.",
)

message = Message(role="user", contents=[Content.from_text("Hello")])

Opmerking

ChatClient, ChatResponse, ChatOptionsen ChatMessageStore worden niet gewijzigd door deze wijziging.


🔴 Typen API-beoordelingsupdates voor antwoord-/berichtmodellen

PR:#3647

Deze release bevat een brede, ingrijpende opschoning van het typen van berichten/antwoorden en helper-API's.

  • Role en FinishReason zijn nu NewType wrappers over str met RoleLiteral/FinishReasonLiteral voor bekende waarden. Behandel ze als tekenreeksen (geen .value gebruik).
  • Message constructie is gestandaardiseerd op Message(role, contents=[...]); tekenreeksen in contents worden automatisch geconverteerd naar tekstinhoud.
  • ChatResponse en AgentResponse constructors centreren nu op messages= (enkel Message of reeks); het gebruik van de legacy text= constructor is verwijderd uit de antwoorden.
  • ChatResponseUpdate en AgentResponseUpdate accepteren niet langer text=; gebruik contents=[Content.from_text(...)].
  • Het combineren van helpernamen is vereenvoudigd.
  • try_parse_value is verwijderd uit ChatResponse en AgentResponse.

Naam van helpermethode wijzigen

Voordat Na
ChatResponse.from_chat_response_updates(...) ChatResponse.from_updates(...)
ChatResponse.from_chat_response_generator(...) ChatResponse.from_update_generator(...)
AgentResponse.from_agent_run_response_updates(...) AgentResponse.from_updates(...)

Update reactie-updateconstructie

Before:

update = AgentResponseUpdate(text="Processing...", role="assistant")

After:

from agent_framework import AgentResponseUpdate, Content

update = AgentResponseUpdate(
    contents=[Content.from_text("Processing...")],
    role="assistant",
)

Vervangen try_parse_value door try/except aan .value

Before:

if parsed := response.try_parse_value(MySchema):
    print(parsed.name)

After:

from pydantic import ValidationError

try:
    parsed = response.value
    if parsed:
        print(parsed.name)
except ValidationError as err:
    print(f"Validation failed: {err}")

🔴 Geïntegreerd run/get_response model en ResponseStream gebruik

PR:#3379

Python-API's zijn geconsolideerd rond agent.run(...) en client.get_response(...), met streaming vertegenwoordigd door ResponseStream.

Before:

async for update in agent.run_stream("Hello"):
    print(update)

After:

stream = agent.run("Hello", stream=True)
async for update in stream:
    print(update)

🔴 Hernoemen van kerncontext/protocoltypen

PULL's:#3714, #3717

Voordat Na
AgentRunContext AgentContext
AgentProtocol SupportsAgentRun

Werk de imports en type-aantekeningen dienovereenkomstig bij.


🔴 De naam van de vervolgparameter Middleware is gewijzigd in call_next

PR:#3735

Middlewarehandtekeningen moeten nu worden gebruikt call_next in plaats van next.

Before:

async def my_middleware(context, next):
    return await next(context)

After:

async def my_middleware(context, call_next):
    return await call_next(context)

🔴 Gestandaardiseerde TypeVar-namen (TNameNameT)

PR:#3770

De codebase volgt nu een consistente TypeVar-naamgevingsstijl waarbij achtervoegsel T wordt gebruikt.

Before:

TMessage = TypeVar("TMessage")

After:

MessageT = TypeVar("MessageT")

Als u aangepaste wrappers onderhoudt rond framework-generics, kunt u de lokale TypeVar-namen uitlijnen met de nieuwe conventie om het verloop van aantekeningen te verminderen.


🔴 Uitvoer- en streamingwijzigingen van werkstroom als agent

PR:#3649

workflow.as_agent() gedrag is bijgewerkt om uitvoer en streaming uit te lijnen met standaard reactiepatronen van agents. Controleer de gebruikers van werkstroom als agent die afhankelijk zijn van verouderde uitvoer-/updateafhandeling en werk ze bij naar de huidige AgentResponse/AgentResponseUpdate stroom.


🔴 Fluent Builder-methoden verplaatst naar constructorparameters

PR:#3693

Vloeiende methoden met enkele configuratie tussen 6 opbouwers (WorkflowBuilder, SequentialBuilder, ConcurrentBuilder, GroupChatBuilder, MagenticBuilder, HandoffBuilder) zijn gemigreerd naar constructorparameters. Fluent-methoden die het enige configuratiepad voor een instelling waren, worden verwijderd ten gunste van constructorargumenten.

WorkflowBuilder

set_start_executor(), with_checkpointing()en with_output_from() worden verwijderd. Gebruik in plaats daarvan constructorparameters.

Before:

upper = UpperCaseExecutor(id="upper")
reverse = ReverseExecutor(id="reverse")

workflow = (
    WorkflowBuilder(start_executor=upper)
    .add_edge(upper, reverse)
    .set_start_executor(upper)
    .with_checkpointing(storage)
    .build()
)

After:

upper = UpperCaseExecutor(id="upper")
reverse = ReverseExecutor(id="reverse")

workflow = (
    WorkflowBuilder(start_executor=upper, checkpoint_storage=storage)
    .add_edge(upper, reverse)
    .build()
)

SequentialBuilder / ConcurrentBuilder

participants(), register_participants(), with_checkpointing()en with_intermediate_outputs() worden verwijderd. Gebruik in plaats daarvan constructorparameters.

Before:

workflow = SequentialBuilder().participants([agent_a, agent_b]).with_checkpointing(storage).build()

After:

workflow = SequentialBuilder(participants=[agent_a, agent_b], checkpoint_storage=storage).build()

GroupChatBuilder

participants(), , register_participants()with_orchestrator(), with_termination_condition(), , with_max_rounds()en with_checkpointing()with_intermediate_outputs() worden verwijderd. Gebruik in plaats daarvan constructorparameters.

Before:

workflow = (
    GroupChatBuilder()
    .with_orchestrator(selection_func=selector)
    .participants([agent1, agent2])
    .with_termination_condition(lambda conv: len(conv) >= 4)
    .with_max_rounds(10)
    .build()
)

After:

workflow = GroupChatBuilder(
    participants=[agent1, agent2],
    selection_func=selector,
    termination_condition=lambda conv: len(conv) >= 4,
    max_rounds=10,
).build()

MagenticBuilder

participants(), , register_participants()with_manager(), with_plan_review(), , en with_checkpointing()with_intermediate_outputs()worden verwijderd. Gebruik in plaats daarvan constructorparameters.

Before:

workflow = (
    MagenticBuilder()
    .participants([researcher, coder])
    .with_manager(agent=manager_agent)
    .with_plan_review()
    .build()
)

After:

workflow = MagenticBuilder(
    participants=[researcher, coder],
    manager_agent=manager_agent,
    enable_plan_review=True,
).build()

HandoffBuilder

with_checkpointing() en with_termination_condition() worden verwijderd. Gebruik in plaats daarvan constructorparameters.

Before:

workflow = (
    HandoffBuilder(participants=[triage, specialist])
    .with_start_agent(triage)
    .with_termination_condition(lambda conv: len(conv) > 5)
    .with_checkpointing(storage)
    .build()
)

After:

workflow = (
    HandoffBuilder(
        participants=[triage, specialist],
        termination_condition=lambda conv: len(conv) > 5,
        checkpoint_storage=storage,
    )
    .with_start_agent(triage)
    .build()
)

Validatiewijzigingen

  • WorkflowBuilder vereist start_executor nu als constructorargument (eerder ingesteld via fluent-methode)
  • SequentialBuilder, ConcurrentBuilder, GroupChatBuilder, en MagenticBuilder vereisen nu op bouwtijd ofwel participants of participant_factories — het doorgeven van geen van beide resulteert in ValueError

Opmerking

HandoffBuilder accepteerde participants/participant_factories al als constructorparameters en is hierin niet veranderd.


🔴 Werkstroomgebeurtenissen geïntegreerd in één WorkflowEvent met type discriminator

PR:#3690

Alle subklassen voor afzonderlijke werkstroomgebeurtenissen zijn vervangen door één algemene WorkflowEvent[DataT] klasse. In plaats van controles te gebruiken isinstance() om gebeurtenistypen te identificeren, controleert u nu de event.type letterlijke tekenreeks (bijvoorbeeld "output", "request_info", ). "status" Dit volgt hetzelfde patroon als de Content klasseconsolidatie van python-1.0.0b260123.

Gebeurtenisklassen verwijderd

De volgende geëxporteerde gebeurtenissubklassen bestaan niet meer:

Oude klas Nieuwe event.type waarde
WorkflowOutputEvent "output"
RequestInfoEvent "request_info"
WorkflowStatusEvent "status"
WorkflowStartedEvent "started"
WorkflowFailedEvent "failed"
ExecutorInvokedEvent "executor_invoked"
ExecutorCompletedEvent "executor_completed"
ExecutorFailedEvent "executor_failed"
SuperStepStartedEvent "superstep_started"
SuperStepCompletedEvent "superstep_completed"

Importbewerkingen bijwerken

Before:

from agent_framework import (
    WorkflowOutputEvent,
    RequestInfoEvent,
    WorkflowStatusEvent,
    ExecutorCompletedEvent,
)

After:

from agent_framework import WorkflowEvent
# Individual event classes no longer exist; use event.type to discriminate

Gebeurtenistypecontroles bijwerken

Before:

async for event in workflow.run_stream(input_message):
    if isinstance(event, WorkflowOutputEvent):
        print(f"Output from {event.executor_id}: {event.data}")
    elif isinstance(event, RequestInfoEvent):
        requests[event.request_id] = event.data
    elif isinstance(event, WorkflowStatusEvent):
        print(f"Status: {event.state}")

After:

async for event in workflow.run_stream(input_message):
    if event.type == "output":
        print(f"Output from {event.executor_id}: {event.data}")
    elif event.type == "request_info":
        requests[event.request_id] = event.data
    elif event.type == "status":
        print(f"Status: {event.state}")

Streamen met AgentResponseUpdate

Before:

from agent_framework import AgentResponseUpdate, WorkflowOutputEvent

async for event in workflow.run_stream("Write a blog post about AI agents."):
    if isinstance(event, WorkflowOutputEvent) and isinstance(event.data, AgentResponseUpdate):
        print(event.data, end="", flush=True)
    elif isinstance(event, WorkflowOutputEvent):
        print(f"Final output: {event.data}")

After:

from agent_framework import AgentResponseUpdate

async for event in workflow.run_stream("Write a blog post about AI agents."):
    if event.type == "output" and isinstance(event.data, AgentResponseUpdate):
        print(event.data, end="", flush=True)
    elif event.type == "output":
        print(f"Final output: {event.data}")

Aantekeningen typen

Before:

pending_requests: list[RequestInfoEvent] = []
output: WorkflowOutputEvent | None = None

After:

from typing import Any
from agent_framework import WorkflowEvent

pending_requests: list[WorkflowEvent[Any]] = []
output: WorkflowEvent | None = None

Opmerking

WorkflowEvent is algemeen (WorkflowEvent[DataT]), maar voor verzamelingen van gemengde gebeurtenissen, gebruik WorkflowEvent[Any] of niet-geparameteriseerde WorkflowEvent.


🔴 workflow.send_responses* Verwijderd; Gebruiken workflow.run(responses=...)

PR:#3720

send_responses() en send_responses_streaming() zijn verwijderd uit Workflow. Doorgaan met onderbroken werkstromen door reacties rechtstreeks door te geven aan run().

Before:

async for event in workflow.send_responses_streaming(
    checkpoint_id=checkpoint_id,
    responses=[approved_response],
):
    ...

After:

async for event in workflow.run(
    checkpoint_id=checkpoint_id,
    responses=[approved_response],
):
    ...

🔴 SharedState hernoemd naar State; werkstroomstatus-API's zijn synchroon

PR:#3667

Status-API's zijn niet meer vereist awaiten naamgeving is gestandaardiseerd:

Voordat Na
ctx.shared_state ctx.state
await ctx.get_shared_state("k") ctx.get_state("k")
await ctx.set_shared_state("k", v) ctx.set_state("k", v)
checkpoint.shared_state checkpoint.state

🔴 Orchestration builders verplaatst naar agent_framework.orchestrations

PR:#3685

Orchestration builders bevinden zich nu in een toegewezen pakketnaamruimte.

Before:

from agent_framework import SequentialBuilder, GroupChatBuilder

After:

from agent_framework.orchestrations import SequentialBuilder, GroupChatBuilder

🟡 Langlopende achtergrondantwoorden en vervolgtokens

PR:#3808

Achtergrondantwoorden worden nu ondersteund voor Python-agent wordt uitgevoerd door options={"background": True} en continuation_token.

response = await agent.run("Long task", options={"background": True})
while response.continuation_token is not None:
    response = await agent.run(options={"continuation_token": response.continuation_token})

🟡 Preview-typen voor sessie-/contextleverancier naast elkaar toegevoegd

PR:#3763

Er zijn nieuwe typen sessie-/contextpijplijnen geïntroduceerd naast verouderde API's voor incrementele migratie, waaronder SessionContext en BaseContextProvider.


🟡 Code-interpreter-streaming bevat nu incrementele code-delta’s

PR:#3775

Streamingcode-interpreter voert nu delta-updates voor surfacecode uit in de gestreamde inhoud, zodat UIs gegenereerde code progressief kan weergeven.


🟡 @tool biedt ondersteuning voor expliciete verwerking van schema's

PR:#3734

Hulpprogrammadefinities kunnen nu expliciete schemaafhandeling gebruiken wanneer uitgestelde schema-uitvoer moet worden aangepast.


python-1.0.0b260130 (30 januari 2026)

Releaseopmerkingen:python-1.0.0b260130

🟡 ChatOptions en ChatResponse/AgentResponse nu generiek ten aanzien van antwoordformaat

PR:#3305

ChatOptions, ChatResponseen AgentResponse zijn nu algemene typen die worden geparameteriseerd door het type antwoordindeling. Dit maakt een betere typedeductie mogelijk bij het gebruik van gestructureerde uitvoer met response_format.

Before:

from agent_framework import ChatOptions, ChatResponse
from pydantic import BaseModel

class MyOutput(BaseModel):
    name: str
    score: int

options: ChatOptions = {"response_format": MyOutput}  # No type inference
response: ChatResponse = await client.get_response("Query", options=options)
result = response.value  # Type: Any

After:

from agent_framework import ChatOptions, ChatResponse
from pydantic import BaseModel

class MyOutput(BaseModel):
    name: str
    score: int

options: ChatOptions[MyOutput] = {"response_format": MyOutput}  # Generic parameter
response: ChatResponse[MyOutput] = await client.get_response("Query", options=options)
result = response.value  # Type: MyOutput | None (inferred!)

Aanbeveling

Dit is een niet-brekende verbetering. Bestaande code zonder typeparameters blijft werken. U hoeft de typen in het bovenstaande codefragment niet op te geven voor de opties en het antwoord; ze worden hier ter duidelijkheid weergegeven.


🟡 BaseAgent ondersteuning toegevoegd voor Claude Agent SDK

PR:#3509

De Python SDK bevat nu een BaseAgent implementatie voor de Claude Agent SDK, waarmee hoogwaardig adapter-gebaseerd gebruik in het Agent Framework mogelijk wordt gemaakt.


python-1.0.0b260128 (28 januari 2026)

Releaseopmerkingen:python-1.0.0b260128

🔴 AIFunction hernoemd naar FunctionTool en @ai_function hernoemd naar @tool

PR:#3413

De klasse en decorator zijn hernoemd om duidelijkheid en consistentie met industrie-terminologie te bevorderen.

Before:

from agent_framework.core import ai_function, AIFunction

@ai_function
def get_weather(city: str) -> str:
    """Get the weather for a city."""
    return f"Weather in {city}: Sunny"

# Or using the class directly
func = AIFunction(get_weather)

After:

from agent_framework.core import tool, FunctionTool

@tool
def get_weather(city: str) -> str:
    """Get the weather for a city."""
    return f"Weather in {city}: Sunny"

# Or using the class directly
func = FunctionTool(get_weather)

🔴 Factory-patroon toegevoegd aan GroupChat en Magentic; API-namen wijzigen

PR:#3224

De deelnemers-factory en orchestrator-factory toegevoegd aan de groepschat. Bevat ook hernoemingen:

  • with_standard_managerwith_manager
  • participant_factoriesregister_participant

Before:

from agent_framework.workflows import MagenticBuilder

builder = MagenticBuilder()
builder.with_standard_manager(manager)
builder.participant_factories(factory1, factory2)

After:

from agent_framework.workflows import MagenticBuilder

builder = MagenticBuilder()
builder.with_manager(manager)
builder.register_participant(factory1)
builder.register_participant(factory2)

🔴 Github hernoemd in GitHub

PR:#3486

Klassen- en pakketnamen zijn bijgewerkt om de juiste behuizing te gebruiken.

Before:

from agent_framework_github_copilot import GithubCopilotAgent

agent = GithubCopilotAgent(...)

After:

from agent_framework_github_copilot import GitHubCopilotAgent

agent = GitHubCopilotAgent(...)

python-1.0.0b260127 (27 januari 2026)

Releaseopmerkingen:python-1.0.0b260127

🟡 BaseAgent ondersteuning toegevoegd voor GitHub Copilot SDK

PR:#3404

De Python SDK bevat nu een BaseAgent implementatie voor GitHub Copilot SDK-integraties.


python-1.0.0b260123 (23 januari 2026)

Releaseopmerkingen:python-1.0.0b260123

🔴 Inhoudstypen vereenvoudigd tot één klasse met classmethod-constructors

PR:#3252

Alle oude inhoudstypen (afgeleid van BaseContent) vervangen door één Content klasse door klassemethods om specifieke typen te maken.

Volledige migratiereferentie

Oud type Nieuwe methode
TextContent(text=...) Content.from_text(text=...)
DataContent(data=..., media_type=...) Content.from_data(data=..., media_type=...)
UriContent(uri=..., media_type=...) Content.from_uri(uri=..., media_type=...)
ErrorContent(message=...) Content.from_error(message=...)
HostedFileContent(file_id=...) Content.from_hosted_file(file_id=...)
FunctionCallContent(name=..., arguments=..., call_id=...) Content.from_function_call(name=..., arguments=..., call_id=...)
FunctionResultContent(call_id=..., result=...) Content.from_function_result(call_id=..., result=...)
FunctionApprovalRequestContent(...) Content.from_function_approval_request(...)
FunctionApprovalResponseContent(...) Content.from_function_approval_response(...)

Aanvullende nieuwe methoden (geen directe voorafgaande methode):

  • Content.from_text_reasoning(...) — Voor redenering/denkende inhoud
  • Content.from_hosted_vector_store(...) — Voor vectoropslagverwijzingen
  • Content.from_usage(...) — Voor gebruiks-/tokengegevens
  • Content.from_mcp_server_tool_call(...) / Content.from_mcp_server_tool_result(...) — Voor MCP-serverhulpprogramma's
  • Content.from_code_interpreter_tool_call(...) / Content.from_code_interpreter_tool_result(...) — Voor code-interpreter
  • Content.from_image_generation_tool_call(...) / Content.from_image_generation_tool_result(...) — Voor beeldgeneratie

Typecontrole

Gebruik in plaats van isinstance() controles de type eigenschap:

Before:

from agent_framework.core import TextContent, FunctionCallContent

if isinstance(content, TextContent):
    print(content.text)
elif isinstance(content, FunctionCallContent):
    print(content.name)

After:

from agent_framework.core import Content

if content.type == "text":
    print(content.text)
elif content.type == "function_call":
    print(content.name)

Basisvoorbeeld

Before:

from agent_framework.core import TextContent, DataContent, UriContent

text = TextContent(text="Hello world")
data = DataContent(data=b"binary", media_type="application/octet-stream")
uri = UriContent(uri="https://example.com/image.png", media_type="image/png")

After:

from agent_framework.core import Content

text = Content.from_text("Hello world")
data = Content.from_data(data=b"binary", media_type="application/octet-stream")
uri = Content.from_uri(uri="https://example.com/image.png", media_type="image/png")

🔴 Aantekeningstypen vereenvoudigd tot Annotation en TextSpanRegion TypedDicts

PR:#3252

Annotatietypen op basis van klassen zijn vervangen door eenvoudigere TypedDict definities.

Oud type Nieuw type
CitationAnnotation (klasse) Annotation (TypedDict met type="citation")
BaseAnnotation (klasse) Annotation (TypedDict)
TextSpanRegion (klasse met SerializationMixin) TextSpanRegion (TypedDict)
Annotations (type-alias) Annotation
AnnotatedRegions (type-alias) TextSpanRegion

Before:

from agent_framework import CitationAnnotation, TextSpanRegion

region = TextSpanRegion(start_index=0, end_index=25)
citation = CitationAnnotation(
    annotated_regions=[region],
    url="https://example.com/source",
    title="Source Title"
)

After:

from agent_framework import Annotation, TextSpanRegion

region: TextSpanRegion = {"start_index": 0, "end_index": 25}
citation: Annotation = {
    "type": "citation",
    "annotated_regions": [region],
    "url": "https://example.com/source",
    "title": "Source Title"
}

Opmerking

Aangezien Annotation en TextSpanRegion nu TypedDicts zijn, maakt u ze als woordenlijsten in plaats van klasse-exemplaren.


🔴 response_format validatiefouten zijn nu zichtbaar voor gebruikers

PR:#3274

ChatResponse.value en AgentResponse.value werpen nu ValidationError wanneer schemavalidatie mislukt in plaats van stilzwijgend None terug te geven.

Before:

response = await agent.run(query, options={"response_format": MySchema})
if response.value:  # Returns None on validation failure - no error details
    print(response.value.name)

After:

from pydantic import ValidationError

# Option 1: Catch validation errors
try:
    print(response.value.name)  # Raises ValidationError on failure
except ValidationError as e:
    print(f"Validation failed: {e}")

# Option 2: Safe parsing (returns None on failure)
if result := response.try_parse_value(MySchema):
    print(result.name)

🔴 AG-UI logica vereenvoudigd uitvoeren; MCP- en Antropische clientoplossingen

PR:#3322

De run methodehandtekening en het gedrag in AG-UI is vereenvoudigd.

Before:

from agent_framework.ag_ui import AGUIEndpoint

endpoint = AGUIEndpoint(agent=agent)
result = await endpoint.run(
    request=request,
    run_config={"streaming": True, "timeout": 30}
)

After:

from agent_framework.ag_ui import AGUIEndpoint

endpoint = AGUIEndpoint(agent=agent)
result = await endpoint.run(
    request=request,
    streaming=True,
    timeout=30
)

🟡 Antropic client ondersteunt response_format nu gestructureerde uitvoer

PR:#3301

U kunt nu gestructureerde uitvoer parseren met antropische clients via response_format, vergelijkbaar met OpenAI- en Azure-clients.


🟡 Uitgebreide Azure AI-configuratie (reasoning, rai_config)

PR's:#3403, #3265

Azure AI-ondersteuning is uitgebreid met ondersteuning voor redeneringsconfiguratie en rai_config tijdens het maken van de agent.


python-1.0.0b260116 (16 januari 2026)

Releaseopmerkingen:python-1.0.0b260116

🔴 create_agent hernoemd in as_agent

PR:#3249

De methode is hernoemd voor een betere duidelijkheid over het doel.

Before:

from agent_framework.core import ChatClient

client = ChatClient(...)
agent = client.create_agent()

After:

from agent_framework.core import ChatClient

client = ChatClient(...)
agent = client.as_agent()

🔴 WorkflowOutputEvent.source_executor_id hernoemd in executor_id

PR:#3166

De eigenschap is hernoemd voor API-consistentie.

Before:

async for event in workflow.run_stream(...):
    if isinstance(event, WorkflowOutputEvent):
        executor = event.source_executor_id

After:

async for event in workflow.run_stream(...):
    if isinstance(event, WorkflowOutputEvent):
        executor = event.executor_id

🟡 AG-UI ondersteunt door de service beheerde sessiecontinuïteit

PR:#3136

AG-UI behoudt nu de door de service beheerde gespreksidentiteit (bijvoorbeeld door Foundry beheerde sessies/threads) om continuïteit over meerdere beurten heen te behouden.


python-1.0.0b260114 (14 januari 2026)

Releaseopmerkingen:python-1.0.0b260114

🔴 Indelingen geherstructureerd

PR:#3023

Uitgebreide herstructurering en vereenvoudiging van indelingen in Agent Framework-werkstromen:

  • Groepschat: Splits de orkestrator-executor op in een toegewijde agent-gebaseerde en functie-gebaseerde (BaseGroupChatOrchestrator, GroupChatOrchestrator, AgentBasedGroupChatOrchestrator). Vereenvoudigd tot stertopologie met uitzendmodel.
  • Handoff: Ondersteuning voor één enkele laag, coördinator en aangepaste uitvoerder is verwijderd. Overgestapt naar broadcastmodel met HandoffAgentExecutor.
  • Sequentiële & gelijktijdige: vereenvoudigde aanvraaginformatiemechanisme om te vertrouwen op subwerkstromen via AgentApprovalExecutor en AgentRequestInfoExecutor.

Before:

from agent_framework.workflows import GroupChat, HandoffOrchestrator

# Group chat with custom coordinator
group = GroupChat(
    participants=[agent1, agent2],
    coordinator=my_coordinator
)

# Handoff with single tier
handoff = HandoffOrchestrator(
    agents=[agent1, agent2],
    tier="single"
)

After:

from agent_framework.workflows import (
    GroupChatOrchestrator,
    HandoffAgentExecutor,
    AgentApprovalExecutor
)

# Group chat with star topology
group = GroupChatOrchestrator(
    participants=[agent1, agent2]
)

# Handoff with executor-based approach
handoff = HandoffAgentExecutor(
    agents=[agent1, agent2]
)

🔴 Opties die zijn geïntroduceerd als TypedDict en Generic

PR:#3140

Opties worden nu getypt met gebruik van TypedDict voor betere typeveiligheid en automatische aanvulling in de IDE.

📖 Zie de handleiding voor getypte opties voor volledige migratie-instructies.

Before:

response = await client.get_response(
    "Hello!",
    model_id="gpt-4",
    temperature=0.7,
    max_tokens=1000,
)

After:

response = await client.get_response(
    "Hello!",
    options={
        "model_id": "gpt-4",
        "temperature": 0.7,
        "max_tokens": 1000,
    },
)

🔴 display_name verwijderd; context_provider omzetten naar enkelvoud; middleware moet in de vorm van een lijst zijn

PR:#3139

  • display_name parameter verwijderd uit agents
  • context_providers (meervoud, acceptatielijst) gewijzigd in context_provider (enkelvoud, slechts 1 toegestaan)
  • middleware vereist nu een lijst (accepteert geen enkele instantie meer)
  • AggregateContextProvider verwijderd uit code (gebruik indien nodig voorbeeld-implementatie)

Before:

from agent_framework.core import Agent, AggregateContextProvider

agent = Agent(
    name="my-agent",
    display_name="My Agent",
    context_providers=[provider1, provider2],
    middleware=my_middleware,  # single instance was allowed
)

aggregate = AggregateContextProvider([provider1, provider2])

After:

from agent_framework.core import Agent

# Only one context provider allowed; combine manually if needed
agent = Agent(
    name="my-agent",  # display_name removed
    context_provider=provider1,  # singular, only 1
    middleware=[my_middleware],  # must be a list now
)

# For multiple context providers, create your own aggregate
class MyAggregateProvider:
    def __init__(self, providers):
        self.providers = providers
    # ... implement aggregation logic

🔴 AgentRunResponse* hernoemd in AgentResponse*

PR:#3207

AgentRunResponse en AgentRunResponseUpdate zijn hernoemd in AgentResponse en AgentResponseUpdate.

Before:

from agent_framework import AgentRunResponse, AgentRunResponseUpdate

After:

from agent_framework import AgentResponse, AgentResponseUpdate

🟡 Declaratieve werkstroomruntime toegevoegd voor YAML-gedefinieerde werkstromen

PR:#2815

Er is een op grafieken gebaseerde runtime toegevoegd voor het uitvoeren van declaratieve YAML-werkstromen, waardoor indeling met meerdere agents zonder aangepaste runtimecode mogelijk is.


🟡 Verbeteringen in het laden en de betrouwbaarheid van MCP

PR:#3154

MCP-integraties hebben verbeterd gedrag van verbindingsverlies, ondersteuning voor paginering bij het laden en opties voor weergavebeheer.


🟡 Foundry A2ATool ondersteunt nu verbindingen zonder doel-URL

PR:#3127

A2ATool kan nu A2A-verbindingen met Foundry oplossen via metagegevens van projectverbindingen, zelfs wanneer een directe doel-URL niet is geconfigureerd.


python-1.0.0b260107 (7 januari 2026)

Releaseopmerkingen:python-1.0.0b260107

Geen belangrijke wijzigingen in deze release.


python-1.0.0b260106 (6 januari 2026)

Releaseopmerkingen:python-1.0.0b260106

Geen belangrijke wijzigingen in deze release.


Samenvattingstabel

Vrijgeven Opmerkingen bij de release Typologie Change PR
1.0.0rc6 Alleen PR 🔴 Nieuwsflits Provider-leidende herstructurering: splitsen agent-framework-openai, agent-framework-foundryen agent-framework-foundry-local; de naam van OpenAI-clients wijzigen; Foundry verplaatsen naar agent_framework.foundry; compatibiliteitspaden voor Azure AI en assistenten afschaffen #4818
1.0.0rc6 Alleen pull-aanvraag 🔴 Nieuwsflits agent-framework-core is nu opzettelijk slank; expliciete providerpakketten installeren, zoals agent-framework-openai of agent-framework-azure-ai, en handmatig installeren mcp voor MCP-hulpprogramma's op minimale installaties, of het agent-framework metapakket gebruiken voor de bredere standaardervaring #4904
1.0.0rc6 Alleen pull-aanvraag 🔴 Nieuwsflits Algemene agent_framework.openai clients geven nu de voorkeur aan expliciete routeringssignalen; OpenAI blijft bij OpenAI wanneer OPENAI_API_KEY is ingesteld, en Azure-scenario's dienen expliciete Azure-routeringsinputs door te geven, zoals credential of azure_endpoint, en vervolgens api_version configureren. #4925
1.0.0rc5 / 1.0.0b260318 N.v.t. (gepland) 🔴 Nieuwsflits Publieke runtime kwargs gesplitst in function_invocation_kwargs en client_kwargs; hulpprogramma's gebruiken nu FunctionInvocationContext / ctx.session #4581
1.0.0rc4 / 1.0.0b260311 Notes 🔴 Nieuwsflits Azure AI-integraties zijn nu gericht op azure-ai-projects 2.0 GA; foundry_features is verwijderd en allow_preview is de preview-opt-in #4536
1.0.0rc4 / 1.0.0b260311 Notes 🔴 Nieuwsflits GitHub Copilot-integratie maakt nu gebruik van ToolInvocation / ToolResult; agent-framework-github-copilot vereist Python 3.11+ #4551
1.0.0rc3 / 1.0.0b260304 Notes 🔴 Nieuwsflits Skills-provider voegt code-gedefinieerde Skill / SkillResource toe; oudere FileAgentSkillsProvider import- en backtick-resourceverwijzingen moeten worden bijgewerkt #4387
1.0.0rc2 / 1.0.0b260226 Notes 🔴 Nieuwsflits Declaratieve werkstromen vervangen door InvokeToolInvokeFunctionTool en WorkflowFactory.register_tool() #3716
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Nieuwsflits Uniform beheer van Azure-verificatiegegevens in Azure-pakketten #4088
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Nieuwsflits Python-uitzonderingshiërarchie opnieuw ontworpen onder AgentFrameworkException #4082
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Nieuwsflits De status van de provider wordt nu bepaald door source_id #3995
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Nieuwsflits Aangepaste get_response() implementaties moeten accepteren Sequence[Message] #3920
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Nieuwsflits FunctionTool[Any] schema-passthrough-shim verwijderd #3907
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Nieuwsflits Instellingen verplaatst van AFBaseSettings /pydantic-settings naar TypedDict + load_settings() #3843, #4032
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Verbetering Hand-off van werkstroom met redeneringsmodel en serialisatie van geschiedenis opgelost #4083
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Verbetering Bedrock toegevoegd aan core[all]; standaardwaarden voor gereedschapskeuze gecorrigeerd #3953
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Verbetering AzureAIClient waarschuwt voor niet-ondersteunde runtime-overschrijvingen #3919
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Verbetering workflow.as_agent() voegt lokale geschiedenis toe als providers niet worden gezet #3918
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Verbetering OpenTelemetry-traceringscontext wordt doorgegeven aan MCP-aanvragen #3780
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Verbetering Ondersteuning voor duurzame werkstromen toegevoegd voor Azure Functions #3630
1.0.0b260212 Notes 🔴 Nieuwsflits Hosted*Toolklassen verwijderd; gehoste hulpprogramma's maken via clientmethoden get_*_tool() #3634
1.0.0b260212 Notes 🔴 Nieuwsflits Sessie-/contextproviderpijplijn voltooid: AgentThread verwijderd, gebruik AgentSession + context_providers #3850
1.0.0b260212 Notes 🔴 Nieuwsflits Controlepuntmodel/opslagherstructurering (workflow_id verwijderd, previous_checkpoint_id toegevoegd, opslaggedrag gewijzigd) #3744
1.0.0b260212 Notes 🟡 Verbetering AzureOpenAIResponsesClient kan worden gemaakt op basis van het Foundry-projecteindpunt of AIProjectClient #3814
1.0.0b260212 Notes 🔴 Nieuwsflits Middleware-voortzetting accepteert context niet meer; update call_next(context) naar call_next() #3829
1.0.0b260210 Notes 🔴 Nieuwsflits send_responses() / send_responses_streaming() Verwijderd; Gebruiken workflow.run(responses=...) #3720
1.0.0b260210 Notes 🔴 Nieuwsflits SharedState State→ ; werkstroomstatus-API's zijn synchroon en veld status van controlepunt hernoemd #3667
1.0.0b260210 Notes 🔴 Nieuwsflits Orchestration builders verplaatst naar agent_framework.orchestrations pakket #3685
1.0.0b260210 Notes 🟡 Verbetering Achtergrondantwoorden en continuation_token ondersteuning toegevoegd aan Python-agentantwoorden #3808
1.0.0b260210 Notes 🟡 Verbetering Voorbeeldtypen van sessie-/contextweergave die naast elkaar zijn toegevoegd (SessionContext, BaseContextProvider) #3763
1.0.0b260210 Notes 🟡 Verbetering Updates voor streamingcode-interpreters bevatten nu incrementele code-delta's #3775
1.0.0b260210 Notes 🟡 Verbetering @tool decorator voegt expliciete ondersteuning voor schemaafhandeling toe #3734
1.0.0b260210 Notes 🔴 Nieuwsflits register_executor() / register_agent() verwijderd uit WorkflowBuilder; exemplaren rechtstreeks gebruiken, helpermethoden voor statusisolatie #3781
1.0.0b260210 Notes 🔴 Nieuwsflits ChatAgentAgent, ChatMessageMessage, RawChatAgentRawAgent, ChatClientProtocolSupportsChatGetResponse #3747
1.0.0b260210 Notes 🔴 Nieuwsflits Typen-API-beoordeling: Role/FinishReason typewijzigingen, response/update constructor aanscherping, helper hernoemingen naar from_updates en verwijdering van try_parse_value #3647
1.0.0b260210 Notes 🔴 Nieuwsflits API's die zijn geïntegreerd rond run/get_response en ResponseStream #3379
1.0.0b260210 Notes 🔴 Nieuwsflits AgentRunContext hernoemd in AgentContext #3714
1.0.0b260210 Notes 🔴 Nieuwsflits AgentProtocol hernoemd in SupportsAgentRun #3717
1.0.0b260210 Notes 🔴 Nieuwsflits Naam van middlewareparameter next gewijzigd in call_next #3735
1.0.0b260210 Notes 🔴 Nieuwsflits TypeVar naming gestandaardiseerd (TNameNameT) #3770
1.0.0b260210 Notes 🔴 Nieuwsflits Uitvoer-/stroomgedrag van Workflow-als-agent komt overeen met de huidige reactiestroom van de agent #3649
1.0.0b260210 Notes 🔴 Nieuwsflits Fluent Builder-methoden zijn verplaatst naar constructorparameters in 6 bouwers #3693
1.0.0b260210 Notes 🔴 Nieuwsflits Werkstroomgebeurtenissen die zijn gecombineerd tot één WorkflowEvent met een type discriminator; isinstance()event.type == "..." #3690
1.0.0b260130 Notes 🟡 Verbetering ChatOptions / ChatResponse / AgentResponse algemeen over antwoordformaat #3305
1.0.0b260130 Notes 🟡 Verbetering BaseAgent ondersteuning toegevoegd voor Claude Agent SDK-integraties #3509
1.0.0b260128 Notes 🔴 Nieuwsflits AIFunctionFunctionTool, @ai_function@tool #3413
1.0.0b260128 Notes 🔴 Nieuwsflits Fabriekspatroon voor GroupChat/Magentic; with_standard_managerwith_manager→ , participant_factoriesregister_participant #3224
1.0.0b260128 Notes 🔴 Nieuwsflits GithubGitHub #3486
1.0.0b260127 Notes 🟡 Verbetering BaseAgent ondersteuning toegevoegd voor GitHub Copilot SDK-integraties #3404
1.0.0b260123 Notes 🔴 Nieuwsflits Inhoudstypen samengevoegd tot één Content klasse met klassemethods #3252
1.0.0b260123 Notes 🔴 Nieuwsflits response_format validatiefouten worden nu weergegeven ValidationError #3274
1.0.0b260123 Notes 🔴 Nieuwsflits AG-UI uitvoeringslogica vereenvoudigd #3322
1.0.0b260123 Notes 🟡 Verbetering Antropische client voegt response_format ondersteuning toe voor gestructureerde uitvoer #3301
1.0.0b260123 Notes 🟡 Verbetering Azure AI-configuratie uitgebreid met reasoning en rai_config ondersteuning #3403, #3265
1.0.0b260116 Notes 🔴 Nieuwsflits create_agentas_agent #3249
1.0.0b260116 Notes 🔴 Nieuwsflits source_executor_idexecutor_id #3166
1.0.0b260116 Notes 🟡 Verbetering AG-UI ondersteunt door de service beheerde sessie- en threadcontinuïteit #3136
1.0.0b260114 Notes 🔴 Nieuwsflits Orkestraties geherstructureerd (GroupChat, Handoff, Sequentieel, Gelijktijdig) #3023
1.0.0b260114 Notes 🔴 Nieuwsflits Opties als TypedDict en Generiek #3140
1.0.0b260114 Notes 🔴 Nieuwsflits display_name Verwijderd; context_providerscontext_provider → (enkelvoud); middleware moet een lijst zijn #3139
1.0.0b260114 Notes 🔴 Nieuwsflits AgentRunResponse / AgentRunResponseUpdate hernoemd in AgentResponse/AgentResponseUpdate #3207
1.0.0b260114 Notes 🟡 Verbetering Declaratieve werkstroomruntime toegevoegd voor YAML-gedefinieerde werkstromen #2815
1.0.0b260114 Notes 🟡 Verbetering Verbeteringen in het laden/betrouwbaarheid van MCP (verwerking van verbindingsverlies, paginering, weergavebesturingselementen) #3154
1.0.0b260114 Notes 🟡 Verbetering Foundry A2ATool ondersteunt verbindingen zonder expliciete doel-URL #3127
1.0.0b260107 Notes Geen significante wijzigingen
1.0.0b260106 Notes Geen significante wijzigingen

Volgende stappen