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

In dit document worden belangrijke Python wijzigingen in alle 2026-releases bijgehouden. Raadpleeg het document dus wanneer u een upgrade uitvoert tussen versies 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.8.0 (4 juni 2026)

Releaseopmerkingen:python-1.8.0

πŸ”΄ github-copilot-sdk bijgewerkt naar v1.0.0 met belangrijke API-wijzigingen

PR:#6292

PR-upgrades #6292agent-framework-github-copilot van github-copilot-sdk 1.0.0b2 naar de stabiele versie 1.0.0 , die worden aangepast aan alle belangrijke API-wijzigingen die zijn geΓ―ntroduceerd in de GA-versie.

  • SubprocessConfig verwijderd : gebruik RuntimeConnection.for_stdio(path=...) + trefwoordargumenten voor CopilotClient (connection, log_level, base_directory).
  • Importpaden verplaatst - copilot.generated.session_events β†’ copilot.session_events.
  • De naam van de instellingen is gewijzigd : copilot_home β†’ base_directory; de omgevingsvariabele is nu GITHUB_COPILOT_BASE_DIRECTORY (was GITHUB_COPILOT_COPILOT_HOME).
  • Machtigingshandlers : gebruik concrete beslissingstypen in plaats van PermissionRequestResult(kind=...). De ingebouwde PermissionHandler.approve_all vervangt handmatige goedkeuringspatronen.
  • Standaard weigering-handler β€” retourneert nu PermissionDecisionUserNotAvailable() (in overeenstemming met het fallbackgedrag van de SDK).
  • Type machtigingshandler : ondersteunt nu zowel synchronisatie- als asynchrone callbacks (Callable[..., PermissionRequestResult | Awaitable[PermissionRequestResult]]).

Before:

from copilot import CopilotClient, SubprocessConfig
from copilot.generated.session_events import PermissionRequest
from copilot.session import PermissionRequestResult

# Client construction
client = CopilotClient(SubprocessConfig(cli_path="/path/to/cli", log_level="debug", copilot_home="/custom/home"))

# Permission handler
def approve_shell(request: PermissionRequest, context: dict[str, str]) -> PermissionRequestResult:
    if request.kind == "shell":
        return PermissionRequestResult(kind="approved")
    return PermissionRequestResult(kind="denied-interactively-by-user")

# Agent
agent = GitHubCopilotAgent(default_options={"copilot_home": "/custom/home", "on_permission_request": approve_shell})

After:

from copilot import CopilotClient, RuntimeConnection
from copilot.generated.rpc import PermissionDecisionDeniedInteractivelyByUser, PermissionDecisionUserNotAvailable
from copilot.session import PermissionHandler, PermissionRequestResult
from copilot.session_events import PermissionRequest

# Client construction
client = CopilotClient(connection=RuntimeConnection.for_stdio(path="/path/to/cli"), log_level="debug", base_directory="/custom/home")

# Permission handler β€” use concrete decision types or PermissionHandler.approve_all
def approve_shell(request: PermissionRequest, context: dict[str, str]) -> PermissionRequestResult:
    if request.kind == "shell":
        return PermissionHandler.approve_all(request, context)
    return PermissionDecisionUserNotAvailable()

# Agent
agent = GitHubCopilotAgent(default_options={"base_directory": "/custom/home", "on_permission_request": approve_shell})

🟑 Progressieve gereedschapsblootstelling via FunctionInvocationContext

PR:#6233

Voegt ondersteuning toe voor het stapsgewijs beschikbaar stellen van tools tijdens een run met FunctionInvocationContext. Hulpprogramma's kunnen nu dynamisch worden toegevoegd of verwijderd op basis van eerdere hulpprogrammaresultaten binnen dezelfde agentuitvoering.


🟑 Detectie van vaardigheden op basis van MCP (McpSkillsSource)

PR:#6169

Wordt McpSkillsSource toegevoegd aan agent-framework-core, waardoor vaardigheidsdetectie en -laden via MCP-servers mogelijk is.


🟑 Systeemeigen gestructureerde uitvoerondersteuning van Bedrock via Converse-API

PR:#6052

agent-framework-bedrock implementeert nu systeemeigen gestructureerde uitvoerondersteuning via de AWS Bedrock Converse-API, zodat u met response_format Bedrock-modellen kunt werken.


🟑 Integratie van Foundry Adaptive Evals (rubriek-generatie)

PR:#6101

Voegt Foundry Adaptive Evals-integratie toe aan agent-framework-foundry voor automatische generatie van rubrieken in evaluatiewerkstromen.


🟑 Mistral AI-clientpakket insluiten

PR:#5480

Nieuw agent-framework-mistral pakket dat een Mistral AI-insluitclient biedt.


🟑 agent-framework-declarative gepromoveerd naar releasekandidaat

PR:#6256

Het agent-framework-declarative pakket gaat van de bètafase naar de release candidate-fase.


python-1.7.0 (28 mei 2026)

Releaseopmerkingen:python-1.7.0

πŸ”΄ declaratief: Python-only acties verwijderd en aliastypen hernoemd naar C#-canonieke namen

PR:#6126

PR #6126 verwijdert Python alleen declaratieve acties en wijzigt aliastypen zodat deze overeenkomen met de C#-canonieke namen voor consistentie tussen talen.

  • Declaratieve actietypen die alleen in Python voorkwamen en geen C#-equivalent hadden, zijn verwijderd.
  • Actiealiastypen zijn nu afgestemd op C#-naamconventies; bestaande declaratieve YAML-/JSON-bestanden dienovereenkomstig bijwerken.

🟑 HarnessAgent en achtergrondagenten maken gebruik van provider

PR's:#6041, #6069

Voegt HarnessAgent toe aan agent-framework-core, waardoor door een harness ondersteunde agentpatronen voor achtergrondverwerking mogelijk worden gemaakt.


🟑 A2AAgentSession met taak-id's waarnaar wordt verwezen en vereiste ondersteuning voor invoer

PR:#5980

Voegt toe A2AAgentSession aan agent-framework-a2a en agent-framework-core, ondersteuning voor taak-id's waarnaar wordt verwezen en invoer die vereist is voor A2A-protocolinteracties.


🟑 Experimentele API's voor conversie van prompt-agents en implementatie

PR:#5959

Voegt experimentele API's toe om agent-framework-foundry promptdefinities te converteren naar agents en deze programmatisch te implementeren.


python-1.6.0 (21 mei 2026)

Releaseopmerkingen:python-1.6.0

πŸ”΄ Instrumentatie standaard ingeschakeld

PR:#5865

PR #5865 schakelt standaard OpenTelemetry-instrumentatie in agent-framework-core en agent-framework-foundry.

  • Agent-runs genereren nu automatisch telemetriespans zonder dat hiervoor expliciet hoeft te worden gekozen.
  • Als u eerder instrumentatie hebt uitgeschakeld of aangepaste telemetriepijplijnen hebt, controleert u of het standaardgedrag niet conflicteert.
  • Om dit uit te schakelen, geeft u enable_instrumentation=False op waar van toepassing.

Before:

from agent_framework import Agent
from agent_framework.observability import configure_otel_providers

# Had to explicitly enable instrumentation
configure_otel_providers(enable_console_exporters=True)

agent = Agent(client=client, enable_instrumentation=True)

After:

from agent_framework import Agent

# Instrumentation is now on by default β€” no opt-in needed
agent = Agent(client=client)

# To explicitly disable:
agent = Agent(client=client, enable_instrumentation=False)

🟑 Shell-hulpprogramma met ondersteuning voor lokale en Docker-uitvoering

PR:#5664

Hiermee voegt u een ingebouwd shell-hulpprogramma toe dat agent-framework-core ondersteuning biedt voor zowel lokale uitvoering als op Docker gebaseerde uitvoering in een sandbox.


🟑 Nieuw agent-framework-monty CodeAct-providerpakket

PR:#5915

Introduceert het agent-framework-monty pakket voor CodeAct-integraties met Monty-ondersteuning (alfafase).


python-1.4.0 (14 mei 2026)

Releaseopmerkingen:python-1.4.0

πŸ”΄ [Experimentele vaardigheden-API] Detectie van vaardigheidsmappen voor bestanden afstemmen op de agentskills.io-specificatie

PR:#5807

PR #5807 werkt de API voor experimentele vaardigheden bij om de detectie van vaardigheden op basis van bestanden uit te lijnen met de agentskills.io specificatie.

  • Oplossingslogica voor vaardigheidsmappen is gewijzigd; aangepaste indelingen voor vaardigheden bijwerken als u de API voor experimentele vaardigheden gebruikt.

πŸ”΄ [Experimentele vaardigheden-API] Metagegevens van vaardigheidsspecificaties extraheren in SkillFrontmatter

PR:#5775

Pr #5775 verplaatst metagegevens van vaardigheidsspecificaties naar een toegewezen SkillFrontmatter gegevensklasse.

  • Als u rechtstreeks toegang hebt tot metagegevensvelden van vaardigheden, werkt u verwijzingen bij zodat deze kenmerken van SkillFrontmatter gebruiken.

πŸ”΄ DevUI: Standaardtoegangsbeheer en CORS-houding aanscherpen

PR:#5740

PR #5740 maakt de standaardconfiguratie voor toegangsbeheer en CORS voor agent-framework-devui strikter.

  • Standaard CORS-oorsprongen zijn nu meer beperkend.
  • Als uw DevUI-installatie afhankelijk is van cross-origintoegang vanuit aangepaste domeinen, configureer dan expliciet de toegestane bronnen.

πŸ”΄ A2A: migreren naar a2a-sdk v1.0

PR:#5752

PR #5752 migreert agent-framework-a2a naar a2a-sdk v1.0.

  • De A2A-protocoltypen en transport-API’s volgen de conventies van a2a-sdk 1.0.
  • Werk alle code bij die rechtstreeks communiceert met A2A-protocoltypen.

🟑 AG-UI: Weergavekanaal voor toolresultaten en promotie naar release candidate

PR's:#5762, #5844

Voegt een weergavekanaal voor toolresultaten toe aan agent-framework-ag-ui en promoveert het pakket naar de release candidate-fase.


python-1.3.0 (7 mei 2026)

Releaseopmerkingen:python-1.3.0

πŸ”΄ [Experimentele vaardigheden-API] Agentvaardigheden herstructureren naar architectuur met meerdere bronnen

PR:#5584

PR #5584 herstructureert de experimentele vaardigheden-API om het laden van vaardigheden met meerdere bronnen te ondersteunen.

  • Vaardigheidsregistratie en detectielogica zijn gewijzigd voor de functie voor experimentele vaardigheden.
  • Als u de experimentele vaardigheden-API gebruikt, bekijkt u de nieuwe laadconventies met meerdere bronnen.

🟑 ClassSkill voor op klassen gebaseerde vaardigheidsdefinities

PR:#5678

Wordt ClassSkill toegevoegd aan agent-framework-core voor op klassen gebaseerde vaardigheidsdefinities met declaratieve metagegevens en automatische methodedetectie.


🟑 Bescherming tegen promptinjectie met informatiestroombeheer

PR:#5331

Voegt een mechanisme voor informatiestroombeheer toe aan agent-framework-core dat helpt beschermen tegen prompt-injectieaanvallen.


🟑 github-copilot-sdk bijgewerkt naar v1.0.0b2

PR:#5665

Upgradet agent-framework-github-copilot naar github-copilot-sdk>=1.0.0b2 en voegt instruction_directories, copilot_home-configuratie en het doorsturen van runtime-opties bij het hervatten van een sessie toe.


🟑 Afdwingen approval_mode in Claude en GitHub Copilot agenten

PR:#5562

agent-framework-claude en agent-framework-github-copilot dwingen nu de approval_mode decorator af voor functietools, in overeenstemming met andere agent-implementaties.


🟑 Ondersteuning voor toolkeuze van OpenAI en Gemini allowed_tools

PR:#5322

Hiermee voegt u ondersteuning toe voor allowed_tools de keuze agent-framework-openaivan hulpprogramma's, zodat u kunt beperken welke hulpprogramma's het model kan aanroepen.


python-1.2.2 (29 april 2026)

Releaseopmerkingen:python-1.2.2

πŸ”΄ Indelingsterminal voert gestandaardiseerde uitvoer uit als AgentResponse

PR:#5301

PR #5301 standaardiseert de terminaluitvoer van orchestratie als AgentResponse, zodat Workflow.as_agent() alleen het uiteindelijke antwoord teruggeeft.

  • SequentiΓ«le goedkeuringsstromen (with_request_info) en gelijktijdige (intermediate_outputs=True) stromen volgen nu hetzelfde uitvoercontract.
  • Als u orchestratie-resultaten rechtstreeks gebruikt, verwacht u AgentResponse-objecten in plaats van onbewerkte tekst of gemengde gegevenstypen.

Before:

# Orchestration returned mixed types (raw strings, dicts, etc.)
result = await workflow.as_agent().run("Draft a report")
text = str(result)  # had to handle various types

After:

# Orchestration now always returns AgentResponse
result = await workflow.as_agent().run("Draft a report")
text = result.text  # consistent AgentResponse API

🟑 Contextprovider voor Azure AI Content Understanding

PR:#4829

Nieuw alfapakket agent-framework-azure-contentunderstanding : automatisch analyseert bestandsbijlagen (documenten, afbeeldingen, audio, video) en injecteert gestructureerde resultaten in de LLM-context.


🟑 Ondersteuning voor gehoste Durable Workflow via Foundry-hosting

PR:#5531

Voegt gehoste Durable Workflow-ondersteuning toe aan agent-framework-foundry-hosting, waarbij de volledige gespreksgeschiedenis wordt doorgegeven aan werkstroomagents.


python-1.1.0 (21 april 2026)

Releaseopmerkingen:python-1.1.0

πŸ”΄ CosmosCheckpointStorage pickle-deserialisatie is standaard beperkt

PR:#5200

CosmosCheckpointStorage gebruikt nu standaard beperkte pickle-deserialisatie, in overeenstemming met het gedrag van FileCheckpointStorage.

  • Als uw controlepunten toepassingsgedefinieerde typen bevatten, geeft u deze door via allowed_checkpoint_types=["my_app.models:MyState"].
  • Zonder dit zal deserialisatie van aangepaste typen WorkflowCheckpointException opleveren.

Before:

from agent_framework.azure.cosmos import CosmosCheckpointStorage

storage = CosmosCheckpointStorage(endpoint=endpoint, database="mydb", container="checkpoints")

After:

from agent_framework.azure.cosmos import CosmosCheckpointStorage

storage = CosmosCheckpointStorage(
    endpoint=endpoint,
    database="mydb",
    container="checkpoints",
    allowed_checkpoint_types=["my_app.models:MyState"],
)

🟑 GeminiChatClient Toegevoegd

PR:#4847

Nieuw agent-framework-gemini pakket met GeminiChatClient ondersteuning voor Google Gemini API en Vertex AI.


🟑 Hyperlight CodeAct-pakket

PR:#5185

Nieuw agent-framework-hyperlight pakket voor code-uitvoering in de sandbox van CodeAct op basis van Hyperlight.


🟑 Ondersteuning voor Foundry Toolboxes

PR:#5346

Hiermee wordt ondersteuning toegevoegd voor Foundry Toolboxes in agent-framework-foundry, waardoor beheerde hulpprogrammaconfiguraties vanuit Azure AI Foundry worden ingeschakeld.


🟑 finish_reason op AgentResponse en AgentResponseUpdate

PR:#5211

Voegt het veld finish_reason toe aan AgentResponse en AgentResponseUpdate, waardoor consumenten kunnen controleren waarom het model stopte met genereren.


🟑 Ondersteuning voor gehoste agent V2 in Foundry

PR:#5379

Voegt in agent-framework-foundry ondersteuning voor gehoste agent V2 toe voor de nieuwste mogelijkheden van de Foundry-agentservice.


python-1.0.1 (9 april 2026)

Releaseopmerkingen:python-1.0.1

πŸ”΄ FileCheckpointStorage beperkte deserialisatie van pickle (beveiligingsversterking)

PR:#4941

De deserialisatie van checkpoints verloopt nu standaard via een beperkte unpickler, die alleen een ingebouwde set veilige Python-typen en alle agent_framework-frameworktypen toestaat.

  • Als uw toepassing aangepaste typen opslaat in checkpoints, moet u hun "module:qualname"-identificatoren doorgeven via de nieuwe constructorparameter allowed_checkpoint_types β€” anders wordt bij het laden WorkflowCheckpointException gegenereerd.
  • Zie Beveiligingsoverwegingen voor meer informatie.

Before:

from agent_framework.workflows import FileCheckpointStorage

storage = FileCheckpointStorage(directory="./checkpoints")

After:

from agent_framework.workflows import FileCheckpointStorage

storage = FileCheckpointStorage(
    directory="./checkpoints",
    allowed_checkpoint_types=["my_app.models:MyState", "my_app.models:TaskResult"],
)

πŸ”΄ Oplossing voor handoff-werkstroomcontextbeheer

PR:#5136

PR #5136 verhelpt problemen met het contextbeheer van de handoff-workflow. Dit is een gedragswijziging β€” overdrachtsagents behouden nu tijdens overgangen correct een geΓ―soleerde context.


🟑 Cosmos DB NoSQL controlepuntopslag voor werkstromen

PR:#4916

Nieuw agent-framework-azure-cosmos-pakket dat door Cosmos DB NoSQL ondersteunde checkpointopslag voor Python-workflows biedt.


python-1.0.0 (2 april 2026)

Releaseopmerkingen:python-1.0.0

In deze sectie worden de belangrijke Python-wijzigingen vastgelegd die hierna python-1.0.0rc6 zijn geland en die nu deel uitmaken van python-1.0.0.

πŸ”΄ Message(..., text=...) constructie is nu volledig verwijderd

PR:#5062

PR #5062 voltooit het eerder opschonen van het Python-berichtmodel door de laatste codepaden aan de frameworkzijde te verwijderen waarmee nog steeds Message objecten worden samengesteld text=....

  • Tekstberichten maken zoals Message(role="user", contents=["Hello"]) in plaats van Message(role="user", text="Hello").
  • Dit geldt overal waar u berichten rechtstreeks opmaakt, inclusief workflowverzoeken, aangepaste middleware-antwoorden, orkestratiehulpmiddelen en migratiecode.
  • Eenvoudige tekenreeksen binnen contents=[...] worden nog steeds automatisch genormaliseerd tot tekstinhoud, dus contents=["Hello"] blijft de eenvoudigste tekst-alleen vorm.

Before:

message = Message(role="assistant", text="Hello")

After:

message = Message(role="assistant", contents=["Hello"])

🟑 Uitgebrachte Python-pakketten zijn niet meer vereist --pre

PR:#5062

PR #5062 promoveert de belangrijkste Python-pakketten naar 1.0.0 en werkt de installatie-instructies bij om uitgebrachte pakketten te onderscheiden van pakketten die nog in prerelease zijn.

  • agent-framework, agent-framework-core, agent-framework-openai en agent-framework-foundry zijn nu uitgebrachte pakketten en vereisen niet langer --pre.
  • BΓ¨taconnectors zoals agent-framework-ag-ui, agent-framework-azurefunctions, agent-framework-copilotstudio, agent-framework-foundry-local, agent-framework-github-copilot, agent-framework-mem0 en agent-framework-ollama vereisen nog steeds --pre.
  • Als een enkele installatieopdracht een bΓ¨tapakket bevat, moet u --pre in die opdracht behouden.

πŸ”΄ Foundry is nu eigenaar van Python-insluitingen en instellingen voor modellen-eindpunten

PR:#5056

PR #5056 verwijdert het zelfstandige agent-framework-azure-ai pakket en verplaatst het insluitoppervlak van Python naar agent-framework-foundry en agent_framework.foundry.

  • Gebruik FoundryEmbeddingClient, FoundryEmbeddingOptionsen FoundryEmbeddingSettings van agent_framework.foundry.
  • Installeer agent-framework-foundry voor Foundry-chat, service-beheerde agenten, geheugenleveranciers en insluitingen.
  • agent_framework.azure exporteert AzureAIInferenceEmbeddingClient, AzureAIInferenceEmbeddingOptions, AzureAIInferenceEmbeddingSettings of AzureAISettings niet langer.
  • Foundry-embedderingen gebruiken nu FOUNDRY_MODELS_ENDPOINT, FOUNDRY_MODELS_API_KEY, FOUNDRY_EMBEDDING_MODEL, en optioneel FOUNDRY_IMAGE_EMBEDDING_MODEL.
  • FoundryChatClient en FoundryAgent gebruik nog steeds de instellingen voor het projecteindpunt, zoals FOUNDRY_PROJECT_ENDPOINT en FOUNDRY_MODEL.

Before:

import os

from agent_framework.azure import AzureAIInferenceEmbeddingClient

client = AzureAIInferenceEmbeddingClient(
    endpoint=os.environ["AZURE_AI_SERVICES_ENDPOINT"],
    model=os.environ["AZURE_AI_EMBEDDING_NAME"],
    credential=credential,
)

After:

import os

from agent_framework.foundry import FoundryEmbeddingClient

client = FoundryEmbeddingClient(
    endpoint=os.environ["FOUNDRY_MODELS_ENDPOINT"],
    api_key=os.environ["FOUNDRY_MODELS_API_KEY"],
    model=os.environ["FOUNDRY_EMBEDDING_MODEL"],
)

πŸ”΄ Werkstromen sturen nu runtime kwargs door via expliciete buckets

PR:#5010

De PR #5010 wijzigt Python workflow.run(...) zodat runtime kwargs expliciet worden doorgegeven als function_invocation_kwargs= en client_kwargs= in plaats van als een algemeen doorgestuurd **kwargs.

  • Een platte toewijzing wordt beschouwd als globaal en wordt doorgestuurd naar elke overeenkomende agentuitvoerder in de werkstroom.
  • Als een of meer sleutels op het hoogste niveau overeenkomen met uitvoerders-id's, wordt de hele toewijzing behandeld als doelgericht op individuele uitvoerders en ontvangt elke uitvoerder alleen een vermelding van zichzelf.
  • Aangepaste AgentExecutor(id="...")-werkstroomexecutor-id's en andere expliciete ids zijn de sleutels waarop u zich richt.
  • Dezelfde globale versus gerichte regels zijn van toepassing op zowel function_invocation_kwargs als client_kwargs.

Before:

await workflow.run(
    "Draft the report",
    db_config={"connection_string": "..."},
    user_preferences={"format": "markdown"},
)

After:

await workflow.run(
    "Draft the report",
    function_invocation_kwargs={
        "researcher": {
            "db_config": {"connection_string": "..."},
        },
        "writer": {
            "user_preferences": {"format": "markdown"},
        },
    },
)

🟑 GitHubCopilotAgent voert nu contextproviders uit rond elke aanroep

PR:#5013

PR #5013 lost een Python-gedragsverschil op waarbij GitHubCopilotAgent deze worden geaccepteerd context_providers , maar niet daadwerkelijk zijn aangeroepen.

  • before_run() wordt nu uitgevoerd voordat de Copilot-prompt wordt verzonden.
  • Door de provider toegevoegde berichten en instructies worden opgenomen in de prompt die de Copilot CLI bereikt.
  • after_run() wordt nu uitgevoerd nadat het uiteindelijke antwoord is samengesteld, inclusief het streamingpad.

Als u context_providers al aan GitHubCopilotAgent hebt doorgegeven, is er geen migratie vereist β€” de hooks gedragen zich nu consistent met de rest van de interface van de Python-agent.


🟑 Gestructureerde uitvoer accepteert nu ook JSON-schematoewijzingen naast Pydantic-modellen

PR:#5022

PR #5022 verbreedt het parseren van gestructureerde uitvoer van Python, zodat response_format ofwel een Pydantic-model of een JSON-schematoewijzing kan zijn.

  • Pydantic-modellen worden nog steeds omgezet in getypeerde modelinstanties op response.value.
  • JSON-schematoewijzingen parseren nu naar JSON-compatibele Python-waarden op response.value (meestal dict of list).
  • Dezelfde parseringsregels zijn van toepassing wanneer u het uiteindelijke antwoord van een stream verzamelt.

Dit is een verbetering in plaats van een belangrijke wijziging, maar het is handig om te weten of u al schema's opslaat als JSON-achtige woordenlijsten.


python-1.0.0rc6

In deze sectie worden de belangrijke Python-wijzigingen vastgelegd die zijn verzonden met of zijn bijgehouden voor python-1.0.0rc6.

πŸ”΄ Modelselectie is gestandaardiseerd op model

PR:#4999

PR #4999 voltooit het opschonen van modelselectie aan de python-zijde voor constructors, getypte opties, agentstandaarden, antwoordobjecten en omgevingsvariabelen.

  • Gebruik model overal waar u eerder model_id hebt gebruikt.
  • Agent.default_options en per-run options={...} verwachten "model", niet "model_id".
  • Antwoordobjecten worden weergegeven response.model, niet response.model_id.
  • OpenAI-instellingen gebruiken nu OPENAI_MODEL, OPENAI_CHAT_MODEL, OPENAI_CHAT_COMPLETION_MODEL en OPENAI_EMBEDDING_MODEL.
  • Azure OpenAI-instellingen gebruiken nu AZURE_OPENAI_MODEL, AZURE_OPENAI_CHAT_MODEL, AZURE_OPENAI_CHAT_COMPLETION_MODEL en AZURE_OPENAI_EMBEDDING_MODEL.
  • Antropisch gebruikt nu ANTHROPIC_CHAT_MODEL, en Foundry Local gebruikt FOUNDRY_LOCAL_MODEL.
  • Het Anthropic-pakket voegt ook door de provider gehoste wrappers zoals AnthropicFoundryClient, AnthropicBedrockClient, en AnthropicVertexClient toe.

Before:

from agent_framework.anthropic import AnthropicClient

client = AnthropicClient(model_id="claude-sonnet-4-5-20250929")
response = await client.get_response(
    "Hello!",
    options={"model_id": "claude-sonnet-4-5-20250929"},
)

After:

from agent_framework.anthropic import AnthropicClient

client = AnthropicClient(model="claude-sonnet-4-5-20250929")
response = await client.get_response(
    "Hello!",
    options={"model": "claude-sonnet-4-5-20250929"},
)

πŸ”΄ Contextproviders kunnen middleware toevoegen en geschiedenis per modeloproep behouden

PR:#4992

PR #4992 werkt de Python-contextprovider pijplijn bij en de manier waarop geschiedenis beheerd door het framework wordt opgeslagen tijdens uitvoeringen met meerdere aanroepen.

  • ContextProvider en HistoryProvider zijn nu de canonieke Python-basisklassen.
  • BaseContextProvider en BaseHistoryProvider blijven tijdelijk als afgeschafte aliassen voor compatibiliteit, maar nieuwe code moet worden gemigreerd naar de nieuwe namen.
  • SessionContext kan nu door de provider toegevoegde chat- of functie-middleware extend_middleware() verzamelen en de afgevlakte lijst beschikbaar maken via get_middleware().
  • Agent(..., require_per_service_call_history_persistence=True) voert geschiedenisproviders uit bij elke modelaanroep in plaats van één keer na de volledige run().
  • Deze modus is bedoeld voor door framework beheerde lokale geschiedenis en kan niet worden gecombineerd met een bestaand servicebeheerd gesprek, zoals session.service_session_id of options={"conversation_id": ...}.

Before:

from agent_framework import BaseHistoryProvider

class CustomHistoryProvider(BaseHistoryProvider):
    ...

After:

from agent_framework import Agent, HistoryProvider

class CustomHistoryProvider(HistoryProvider):
    ...

agent = Agent(
    client=client,
    context_providers=[CustomHistoryProvider()],
    require_per_service_call_history_persistence=True,
)

πŸ”΄ Afgeschafte Azure/OpenAI-compatibiliteitsoppervlakken verwijderd

PR:#4990

Pull Request #4990 voltooit de migratie die toonaangevend is voor de provider #4818 door de resterende afgeschafte Python-compatibiliteitslagen te verwijderen die tijdens eerdere preview-releases beschikbaar waren gebleven.

  • agent_framework.azure exporteert AzureOpenAI* of de oudere AzureAI* agent/client/provider-interfaces niet meer.
  • Compatibiliteitstypen voor Python OpenAI Assistants maken geen deel meer uit van het huidige agent_framework.openai oppervlak.
  • Gebruik OpenAIChatClient, OpenAIChatCompletionClienten OpenAIEmbeddingClient voor directe OpenAI- of Azure OpenAI-scenario's.
  • Gebruik FoundryChatClient voor deductie van Foundry-projecten en FoundryAgent voor PromptAgents of HostedAgents.
  • De huidige agent_framework.azure naamruimte behandelt nu de resterende Azure-integraties, zoals Azure AI Zoeken, Cosmos-geschiedenis, Azure Functions en duurzame werkstromen. Foundry chat, agent, geheugen en het insluiten van clients live onder agent_framework.foundry.

Als u oudere Python-code migreert, gebruikt u deze vervangingen:

  • AzureOpenAIResponsesClient β†’ OpenAIChatClient
  • AzureOpenAIChatClient β†’ OpenAIChatCompletionClient
  • AzureOpenAIEmbeddingClient β†’ OpenAIEmbeddingClient
  • AzureAIAgentClient / AzureAIClient / AzureAIProjectAgentProvider / AzureAIAgentsProvider FoundryChatClientβ†’ ofFoundryAgent, afhankelijk van of uw app eigenaar is van de agentdefinitie
  • OpenAIAssistantsClient / OpenAIAssistantProvider OpenAIChatClientβ†’ voor het huidige OpenAI-werk van Python of FoundryAgent als u een door de service beheerde agent in Foundry nodig hebt

πŸ”΄ 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 eerdere AzureOpenAI* compatibiliteitsshims zijn later verwijderd in #4990.
  • Gebruik voor nieuwe Foundry-code FoundryChatClient voor directe projectdeductie, FoundryAgent voor Prompt Agents en HostedAgents en FoundryLocalClient voor lokale runtimes.
  • AzureAIClient, AzureAIProjectAgentProvider, AzureAIAgentClient, en AzureAIAgentsProvider, het compatibiliteitsoppervlak van de Python Assistants, zijn tijdens deze herstructurering verplaatst naar compatibiliteitspaden en zijn later verwijderd in #4990.
  • 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 agent_framework.openai
Microsoft Foundry-projecteindpunten, agentservice, geheugen en insluitingen pip install agent-framework-foundry agent_framework.foundry
Gieterij Lokaal pip install agent-framework-foundry-local --pre agent_framework.foundry

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:

  • AzureOpenAIResponsesClient β†’ OpenAIChatClient
  • AzureOpenAIChatClient β†’ OpenAIChatCompletionClient
  • AzureOpenAIEmbeddingClient β†’ OpenAIEmbeddingClient
  • AzureOpenAIAssistantsClient OpenAIChatClientβ†’ voor directe api-migratie van antwoorden of FoundryAgent als u een door de service beheerde Foundry-agent nodig hebt

De codewijziging is meestal een klassenaamverplaatsing plus deployment_name β†’ model. 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:

  • Gebruik OPENAI_CHAT_MODEL voor OpenAIChatClient, OPENAI_CHAT_COMPLETION_MODEL voor OpenAIChatCompletionClient, met OPENAI_MODEL als de gedeelde terugvaloptie.
  • Azure OpenAI gebruikt AZURE_OPENAI_CHAT_MODEL nu voor OpenAIChatClient, AZURE_OPENAI_CHAT_COMPLETION_MODEL voor OpenAIChatCompletionClient, en AZURE_OPENAI_MODEL als de gedeelde terugval.
  • 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 ANTHROPIC_CHAT_MODEL voor Anthropic en FOUNDRY_LOCAL_MODEL voor Foundry Local

Deze wijziging landde eerst tijdens de python-1.0.0rc6 cyclus.


πŸ”΄ 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.
  • Als u agent_framework.foundry importeert, installeert agent-framework-foundry voor Foundry-projectinferentie, servicemanaged agents, geheugenleveranciers en embeddings. Gebruik agent-framework-foundry-local --pre voor lokale runtimes.
  • 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.

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

Na (installeer het providerpakket dat u daadwerkelijk gebruikt):

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

or:

pip install agent-framework-core
pip install agent-framework-foundry

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_CHAT_MODEL"] = "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_CHAT_MODEL"],
    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_MODEL"],
    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:

  • AzureOpenAIEmbeddingClient β†’ OpenAIEmbeddingClient
  • AZURE_OPENAI_EMBEDDING_MODEL β†’ model
  • 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.tools 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 = settings["model"]

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 heeft gewaarschuwd voor niet-ondersteunde runtime-overschrijvingen

PR:#3919

Op het moment van deze wijziging registreerde AzureAIClient een waarschuwing wanneer runtime tools of structured_output afweek van de creatietijdconfiguratie van de agent. Dat Python-oppervlak is sindsdien verwijderd. Gebruik FoundryChatClient voor actuele Python-code wanneer u een hulpprogramma/runtimeconfiguratie in eigendom van de app nodig hebt, of OpenAIChatClient voor directe Responses API-scenario's die dynamische overschrijvingen vereisen.


🟑 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.

  • AgentThread β†’ AgentSession
  • 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=[...]
  • ChatMessageStore is verwijderd. Gebruik HistoryProvider (of InMemoryHistoryProvider voor de standaardcase in het geheugen), beide geΓ«xporteerd uit agent_framework. Als er geen contextprovider wordt doorgegeven, injecteert de agent automatisch InMemoryHistoryProvider.

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.


🟑 Foundry-projecteindpunten die oorspronkelijk via AzureOpenAIResponsesClient zijn verschenen

PR:#3814

Met deze preview-mogelijkheid kon AzureOpenAIResponsesClient oorspronkelijk verbinding worden gemaakt met Foundry-projecteindpunten. De huidige Python-richtlijnen gebruiken FoundryChatClient voor afleiding van Foundry-projecten of FoundryAgent voor door de service beheerde Foundry-agents in plaats van de verwijderde AzureOpenAIResponsesClient.

from azure.identity import DefaultAzureCredential
from agent_framework.foundry import FoundryChatClient

client = FoundryChatClient(
    project_endpoint="https://<your-project>.services.ai.azure.com",
    model="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, ChatResponseen ChatOptions worden niet hernoemd 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 (TName β†’ NameT)

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_manager β†’ with_manager
  • participant_factories β†’ register_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": "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.8.0 Notes πŸ”΄ Nieuwsflits github-copilot-sdk bijgewerkt naar v1.0.0: SubprocessConfig verwijderd (gebruik RuntimeConnection + kwargs), importpaden verplaatst naar copilot.session_events, copilot_home β†’ base_directory, machtigingenhandlers maken gebruik van concrete beslissingstypen #6292
1.8.0 Notes 🟑 Verbetering Progressieve gereedschapsblootstelling via FunctionInvocationContext #6233
1.8.0 Notes 🟑 Verbetering Detectie van vaardigheden op basis van MCP (McpSkillsSource) #6169
1.8.0 Notes 🟑 Verbetering Systeemeigen gestructureerde uitvoerondersteuning van Bedrock via Converse-API #6052
1.8.0 Notes 🟑 Verbetering Integratie van Foundry Adaptive Evals (rubriek-generatie) #6101
1.8.0 Notes 🟑 Verbetering Mistral AI-embedding-clientpakket #5480
1.8.0 Notes 🟑 Verbetering agent-framework-declarative gepromoveerd naar releasekandidaat #6256
1.7.0 Notes πŸ”΄ Nieuwsflits Declaratief: Python-only acties verwijderd en aliastypen hernoemd naar C#-canonieke namen #6126
1.7.0 Notes 🟑 Verbetering HarnessAgent en achtergrondagenten maken gebruik van provider toegevoegd #6041
1.7.0 Notes 🟑 Verbetering A2AAgentSession met verwijzingen naar taak-ID’s en ondersteuning waarvoor invoer vereist is #5980
1.6.0 Notes πŸ”΄ Nieuwsflits Instrumentatie is standaard ingeschakeld voor kern- en foundry-pakketten #5865
1.6.0 Notes 🟑 Verbetering Shell-hulpprogramma met ondersteuning voor lokale en Docker-uitvoering #5664
1.6.0 Notes 🟑 Verbetering Nieuw agent-framework-monty CodeAct-providerpakket #5915
1.4.0 Notes πŸ”΄ Nieuwsflits [Experimentele vaardigheden] Detectie van bestandsvaardigheidsmappen afstemmen op de agentskills.io-specificatie #5807
1.4.0 Notes πŸ”΄ Nieuwsflits [Experimentele vaardigheden] Metagegevens van vaardigheidsspecificaties extraheren in SkillFrontmatter #5775
1.4.0 Notes πŸ”΄ Nieuwsflits DevUI: Standaardtoegangsbeheer en CORS-houding aanscherpen #5740
1.4.0 Notes πŸ”΄ Nieuwsflits A2A: migreren naar a2a-sdk v1.0 #5752
1.3.0 Notes πŸ”΄ Nieuwsflits [Experimentele vaardigheden] Agentvaardigheden herstructureren naar architectuur met meerdere bronnen #5584
1.3.0 Notes 🟑 Verbetering ClassSkill voor op klassen gebaseerde vaardigheidsdefinities met declaratieve metagegevens #5678
1.3.0 Notes 🟑 Verbetering Bescherming tegen promptinjectie via controle op informatiestromen #5331
1.3.0 Notes 🟑 Verbetering github-copilot-sdk bijgewerkt naar v1.0.0b2 met instruction_directories en copilot_home #5665
1.2.2 Notes πŸ”΄ Nieuwsflits Indelingsterminal-uitvoer wordt gestandaardiseerd als AgentResponse; Workflow.as_agent() retourneert alleen het uiteindelijke antwoord #5301
1.2.2 Notes 🟑 Verbetering Azure AI Content Understanding-contextproviderpakket #4829
1.1.0 Notes πŸ”΄ Nieuwsflits CosmosCheckpointStorage deserialisatie van pickle standaard beperkt #5200
1.1.0 Notes 🟑 Verbetering GeminiChatClient Toegevoegd #4847
1.1.0 Notes 🟑 Verbetering Hyperlight CodeAct-pakket #5185
1.1.0 Notes 🟑 Verbetering Ondersteuning voor Foundry Toolboxes #5346
1.1.0 Notes 🟑 Verbetering finish_reason op AgentResponse en AgentResponseUpdate #5211
1.0.1 Notes πŸ”΄ Nieuwsflits FileCheckpointStorage beperkte pickle-deserialisatie (beveiligingsversterking) #4941
1.0.1 Notes πŸ”΄ Nieuwsflits Oplossing voor handoff-werkstroomcontextbeheer #5136
1.0.1 Notes 🟑 Verbetering Cosmos DB NoSQL controlepuntopslag voor werkstromen #4916
1.0.0 Notes πŸ”΄ Nieuwsflits Message(..., text=...) constructie is volledig verwijderd; sms-berichten maken met contents=[...] in plaats daarvan #5062
1.0.0 Notes 🟑 Verbetering Uitgekomen Python-pakketten (agent-framework, agent-framework-core, agent-framework-openai, agent-framework-foundry) vereisen --pre niet meer; bètaconnectors vereisen het nog steeds. #5062
1.0.0 Notes πŸ”΄ Nieuwsflits Python-insluitingen verplaatst naar agent_framework.foundry; gebruiken agent-framework-foundry, FoundryEmbeddingClienten FOUNDRY_MODELS_* instellingen in plaats van het verwijderde agent-framework-azure-ai pakket #5056
1.0.0 Notes πŸ”΄ Nieuwsflits workflow.run() maakt nu gebruik van expliciete function_invocation_kwargs / client_kwargs, waarbij globale versus per-uitvoerder doelgerichtheid wordt bepaald op basis van uitvoerder-ID's. #5010
1.0.0 Notes 🟑 Verbetering GitHubCopilotAgent roept nu contextprovider-hooks before_run / after_run aan en bevat promptcontext die door de provider is toegevoegd. #5013
1.0.0 Notes 🟑 Verbetering Gestructureerde Python-uitvoer accepteert nu JSON-schematoewijzingen als response_format, waarbij geparseerde JSON wordt weergegeven op response.value #5022
1.0.0rc6 Alleen PR πŸ”΄ Nieuwsflits Verouderde compatibiliteitselementen van Azure/OpenAI zijn verwijderd; gebruik in plaats daarvan toonaangevende OpenAI clients of Foundry Python clients. #4990
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 PR πŸ”΄ Nieuwsflits agent-framework-core is nu opzettelijk slank; expliciete providerpakketten installeren, zoals agent-framework-openai of agent-framework-foundry, 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 PR πŸ”΄ 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 ChatAgent β†’ Agent, ChatMessage β†’ Message, RawChatAgent β†’ RawAgent, ChatClientProtocol β†’ SupportsChatGetResponse #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 (TName β†’ NameT) #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 AIFunction β†’ FunctionTool, @ai_function β†’ @tool #3413
1.0.0b260128 Notes πŸ”΄ Nieuwsflits Fabriekspatroon voor GroupChat/Magentic; with_standard_managerwith_managerβ†’ , participant_factories β†’ register_participant #3224
1.0.0b260128 Notes πŸ”΄ Nieuwsflits Github β†’ GitHub #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_agent β†’ as_agent #3249
1.0.0b260116 Notes πŸ”΄ Nieuwsflits source_executor_id β†’ executor_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