Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit document bevat alle belangrijke wijzigingen in Python-releases sinds het begin van 2026, waaronder belangrijke wijzigingen en belangrijke verbeteringen die van invloed kunnen zijn op uw code. Elke wijziging wordt gemarkeerd als:
- 🔴 Doorbrekend - vereist codewijzigingen om te upgraden
- 🟡 Uitbreiding — Nieuwe mogelijkheid of verbetering; bestaande code blijft werken
Dit document wordt verwijderd zodra we de stabiele versie 1.0.0 hebben bereikt. Raadpleeg het document dus bij het upgraden tussen versies in 2026 om ervoor te zorgen dat u geen belangrijke wijzigingen mist. Raadpleeg voor gedetailleerde upgrade-instructies over specifieke onderwerpen, zoals migratie van opties, de gekoppelde handleidingen voor upgrades of de gekoppelde pull requests.
python-1.0.0rc6
In deze sectie worden de belangrijke Python-wijzigingen opgenomen die momenteel worden gevolgd voor python-1.0.0rc6.
🔴 Provider-leidend clientontwerp en pakketscheiding
PR:#4818
PR #4818 herordent de Python-provider rond providerspecifieke pakketten en namespaces.
- OpenAI-clients leven nu in het
agent-framework-openaipakket, terwijl ze nog steeds vanuit deagent_framework.openainaamruimte worden geïmporteerd. - Microsoft Foundry-clients wonen nu in het
agent-framework-foundrypakket en deagent_framework.foundrynaamruimte. - Foundry Local wordt ook aangeboden via
agent_framework.foundryalsFoundryLocalClient. -
OpenAIResponsesClientwordt gewijzigd inOpenAIChatClient. -
OpenAIChatClientwordt gewijzigd inOpenAIChatCompletionClient. - Clientconfiguratie is gestandaardiseerd op
model, waarbij oudere parameters, zoalsmodel_id,deployment_nameenmodel_deployment_nameworden vervangen. - Gebruik de
agent_framework.openaiclients voor nieuwe Azure OpenAI-code. De oudereAzureOpenAI*klassen bestaan nog steeds onderagent_framework.azureals verouderde compatibiliteitsshims. - Gebruik voor nieuwe Foundry-code
FoundryChatClientvoor directe projectdeductie,FoundryAgentvoor Prompt Agents en HostedAgents enFoundryLocalClientvoor lokale runtimes. -
AzureAIClient,AzureAIProjectAgentProvider,AzureAIAgentClient,AzureAIAgentsProvider, enOpenAIAssistantsClientbevinden zich nu op afgeschafte of compatibiliteitspaden.AzureAIAgentClienten gerelateerde klassen zijn gericht op de v1 Agent Service-interface en worden verwijderd voordat het algemeen beschikbaar is. - De voorbeelddekking is opnieuw geordend zodat deze overeenkomt met de nieuwe provider-geleide indeling, waaronder Foundry-voorbeelden onder
samples/02-agents/providers/foundry/.
Pakkettoewijzing
| Scenario | Installeren | Primaire naamruimte |
|---|---|---|
| OpenAI en Azure OpenAI | pip install agent-framework-openai --pre |
agent_framework.openai |
| Microsoft Foundry-projecteindpunten en Agentservice | pip install agent-framework-foundry --pre |
agent_framework.foundry |
| Gieterij Lokaal | pip install agent-framework-foundry-local --pre |
agent_framework.foundry |
| Verouderde/lagere Azure AI-clients | pip install agent-framework-azure-ai --pre |
agent_framework.azure |
Before:
from agent_framework.openai import OpenAIResponsesClient
client = OpenAIResponsesClient(model_id="gpt-5.4")
After:
from agent_framework.openai import OpenAIChatClient
client = OpenAIChatClient(model="gpt-5.4")
Als u Azure OpenAI eerder rechtstreeks hebt gebruikt, wijst u de oude toegewezen klassen toe aan de nieuwe, toonaangevende OpenAI-klassen:
-
AzureOpenAIResponsesClient→OpenAIChatClient -
AzureOpenAIChatClient→OpenAIChatCompletionClient -
AzureOpenAIEmbeddingClient→OpenAIEmbeddingClient -
AzureOpenAIAssistantsClientOpenAIAssistantsClient→ ofOpenAIAssistantProvider
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:
-
OPENAI_RESPONSES_MODEL_ID/OPENAI_CHAT_MODEL_ID→OPENAI_MODEL - Namen van Azure OpenAI-implementaties worden nu toegewezen aan het
modelargument opOpenAIChatClient/OpenAIChatCompletionClient - Gebruiken
azure_endpointvoor Azure OpenAI-resource-URL's ofbase_urlals u al een volledige.../openai/v1URL hebt en insteltapi_versionvoor het Azure OpenAI API-oppervlak dat u gebruikt - Foundry-specifieke instellingen gebruiken, zoals
FOUNDRY_PROJECT_ENDPOINT,FOUNDRY_MODELenFOUNDRY_AGENT_NAMEFOUNDRY_AGENT_VERSIONvoor cloud Foundry-clients - Gebruik
FOUNDRY_LOCAL_MODELvoor Foundry Local
Deze wijziging wordt momenteel bijgehouden onder python-1.0.0rc6; voeg de koppeling releaseopmerkingen toe zodra de bijbehorende Python-release is gepubliceerd.
🔴 Kernafhankelijkheden zijn nu opzettelijk minimalistisch
PR:#4904
PR #4904 volgt de opsplitsing van het providerpakket van #4818 door agent-framework-core te verkleinen en meer transitieve providerafhankelijkheden uit het kernpakket te verwijderen.
-
agent-framework-coreis nu opzettelijk minimaal. - Als u
agent_framework.openaiimporteert, installeert uagent-framework-openai --pre. - Als u Azure-compatibiliteit of Azure AI-clients op een lager niveau importeert vanuit
agent_framework.azure, installeeragent-framework-azure-ai --pre. - Als u MCP-hulpprogramma's
Agent.as_mcp_server()of andere MCP-integraties gebruikt op een minimale installatie, installeert umcp --predeze handmatig. Installeer voor WebSocket MCP-ondersteuningmcp[ws] --pre. - Als u de brede ervaring 'alles inbegrepen' wilt, installeert u het metapakket
agent-framework --pre.
Hiermee wordt het provideroppervlak niet opnieuw ontworpen; het wijzigt wat standaard wordt geïnstalleerd wanneer u alleen kernen binnenbrengt.
Voordat (core-only-installaties vaak automatisch meer providerfunctionaliteit meebrachten):
pip install agent-framework-core --pre
Na (installeer het providerpakket dat u daadwerkelijk gebruikt):
pip install agent-framework-core --pre
pip install agent-framework-openai --pre
or:
pip install agent-framework-core --pre
pip install agent-framework-azure-ai --pre
Als u een bestaand project bijwerkt dat eerder afhankelijk was van core plus luie providerimport, controleert u de importbewerkingen en maakt u de providerpakketten expliciet in uw omgevings- of afhankelijkheidsbestanden. Doe hetzelfde voor MCP-afhankelijkheden als u afhankelijk bent van MCP-hulpprogramma's of MCP-serverhosting.
🔴 Algemene OpenAI-clients geven nu de voorkeur aan expliciete routeringssignalen
PR:#4925
Pull request #4925 wijzigt hoe de generieke agent_framework.openai clients een keuze maken tussen OpenAI en Azure OpenAI.
- Algemene OpenAI-clients schakelen niet langer over naar Azure omdat
AZURE_OPENAI_*er omgevingsvariabelen aanwezig zijn. - Als
OPENAI_API_KEYis geconfigureerd, blijven de algemene clients op OpenAI, tenzij u een expliciet Azure-routeringssignaal, zoalscredentialofazure_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()aanOpenAIChatClient,OpenAIChatCompletionClient, en de embedding client. - Afgeschafte
AzureOpenAI*wrappers behouden hun compatibiliteitsgedrag, zodat bestaande code op basis van wrapper niet voldoet aan de nieuwe regels voor algemene clientprioriteit.
Voor (OpenAIChatClient kan naar Azure worden gerouteerd omdat Azure-env vars aanwezig waren):
import os
from agent_framework.openai import OpenAIChatClient
os.environ["OPENAI_API_KEY"] = "sk-openai"
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://your-resource.openai.azure.com"
os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"] = "gpt-4o-mini"
client = OpenAIChatClient(model="gpt-4o-mini")
Nadat (generieke OpenAI op OpenAI blijft; voer expliciete Azure-gegevens in om Azure-routering af te dwingen):
import os
from agent_framework.openai import OpenAIChatClient
from azure.identity import AzureCliCredential
client = OpenAIChatClient(
model=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"],
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
credential=AzureCliCredential(),
)
Als uw omgeving zowel OPENAI_* als AZURE_OPENAI_* waarden bevat, controleert u de algemene agent_framework.openai clientconstructie en maakt u de keuze voor de provider expliciet. De Azure-providervoorbeelden zijn om deze reden bijgewerkt om Azure-invoer rechtstreeks door te geven.
Azure-insluitingen volgen nu hetzelfde routeringsmodel:
import os
from agent_framework.openai import OpenAIEmbeddingClient
from azure.identity import AzureCliCredential
client = OpenAIEmbeddingClient(
model=os.environ["AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME"],
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
credential=AzureCliCredential(),
)
Voor insluitingsscenario's wijst u het volgende toe:
-
AzureOpenAIEmbeddingClient→OpenAIEmbeddingClient -
AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME→model -
OPENAI_EMBEDDING_MODELblijft 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_kwargsvoor waarden die alleen hulpprogramma's of functie-middleware moeten zien. - Gebruik
client_kwargsvoor client-laag kwargs en client-middlewareconfiguratie. - Toegang tot hulpprogramma-/runtimegegevens via
FunctionInvocationContext(ctx.kwargsenctx.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_featurespassthrough is verwijderd uit de creatie van een Azure AI-agent. - Het preview-gedrag maakt nu gebruik van
allow_preview=Truebij 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
ToolInvocationgegevensklasse in plaats van een onbewerktedict. - Retourneer
ToolResultmet behulp van snake_case velden zoalsresult_typeentext_result_for_llm. - Voor het
agent-framework-github-copilotpakket is nu Python 3.11+ vereist.
Before:
from typing import Any
def handle_tool(invocation: dict[str, Any]) -> dict[str, Any]:
args = invocation.get("arguments", {})
return {
"resultType": "success",
"textResultForLlm": f"Handled {args.get('city', 'request')}",
}
After:
from copilot.types import ToolInvocation, ToolResult
def handle_tool(invocation: ToolInvocation) -> ToolResult:
args = invocation.arguments
return ToolResult(
result_type="success",
text_result_for_llm=f"Handled {args.get('city', 'request')}",
)
python-1.0.0rc3 / python-1.0.0b260304 (4 maart 2026)
Releaseopmerkingen:python-1.0.0rc3
🔴 Vaardighedenleverancier afgerond met betrekking tot codegedefinieerde Skill / SkillResource
PR:#4387
Python Agent Skills ondersteunt nu door code gedefinieerde Skill en SkillResource objecten naast op bestanden gebaseerde vaardigheden en het oppervlak van de openbare provider wordt gestandaardiseerd op SkillsProvider.
- Als u de oudere preview/interne
FileAgentSkillsProviderversie nog steeds importeert, schakelt u over naarSkillsProvider. - 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()
De op pydantic-settings en AFBaseSettings gebaseerde TypedDict-klasse is vervangen door een lichtgewicht systeem voor instellingen, gebaseerd op functies. De pydantic-settings afhankelijkheid is volledig verwijderd.
Alle instellingenklassen (bijvoorbeeld OpenAISettings, , AzureOpenAISettingsAnthropicSettings) zijn nu TypedDict definities en instellingenwaarden worden geopend via de syntaxis van de woordenlijst in plaats van kenmerktoegang.
Before:
from agent_framework.openai import OpenAISettings
settings = OpenAISettings() # pydantic-settings auto-loads from env
api_key = settings.api_key
model_id = settings.model_id
After:
from agent_framework.openai import OpenAISettings, load_settings
settings = load_settings(OpenAISettings, env_prefix="OPENAI_")
api_key = settings["api_key"]
model_id = settings["model_id"]
Belangrijk
Agent Framework laadt niet automatisch waarden uit .env bestanden. U moet zich expliciet aanmelden voor .env het laden door:
- Het aanroepen van
load_dotenv()vanuit het pakketpython-dotenvaan het begin van uw toepassing - Doorgeven
env_file_path=".env"aanload_settings() - Omgevingsvariabelen rechtstreeks in uw shell of IDE instellen
De load_settings resolutievolgorde is: expliciete onderdrukkingen → .env bestandswaarden (indien env_file_path opgegeven) → omgevingsvariabelen → standaardwaarden. Als u opgeeft env_file_path, moet het bestand bestaan of wordt er een FileNotFoundError gegenereerd.
🟡 De overdracht van de workflow van het redeneermodel en de serialisatie van de geschiedenis corrigeren
PR:#4083
Lost meerdere fouten op bij het gebruik van redeneringsmodellen (bijvoorbeeld gpt-5-mini, gpt-5.2) in werkstromen met meerdere agents. Redeneringsitems van de Antwoorden-API worden nu correct geserialiseerd en worden alleen opgenomen in de geschiedenis wanneer een function_call ook aanwezig is, waardoor API-fouten worden voorkomen. Versleutelde/verborgen redeneringsinhoud wordt nu correct verzonden en de summary veldindeling wordt gecorrigeerd. De service_session_id is ook gewist bij overdracht om te voorkomen dat de toestandinformatie tussen agenten lekt.
🟡 Bedrock toegevoegd aan core[all] en standaardkeuzes voor gereedschap gecorrigeerd
PR:#3953
Amazon Bedrock is nu inbegrepen in de agent-framework-core[all] extra's en is beschikbaar via de agent_framework.amazon lazy import surface. Gedrag van hulpprogrammakeuze is ook opgelost: niet-ingestelde waarden voor hulpprogramma's blijven nu niet ingesteld, zodat providers hun servicestandaarden gebruiken, terwijl expliciet ingestelde waarden behouden blijven.
from agent_framework.amazon import BedrockClient
🟡 AzureAIClient waarschuwt voor niet-ondersteunde runtime-overschrijvingen
PR:#3919
AzureAIClient registreert nu een waarschuwing wanneer runtime tools of structured_output verschilt van de configuratie van de aanmaaktijd van de agent. De Azure AI Agent-service biedt geen ondersteuning voor wijzigingen in runtime- of antwoordindelingen. Gebruik AzureOpenAIResponsesClient in dat geval als u dynamische overschrijvingen nodig hebt.
🟡
workflow.as_agent() nu wordt de lokale geschiedenis standaard ingesteld wanneer providers niet zijn ingesteld
PR:#3918
Wanneer workflow.as_agent() wordt gemaakt zonder context_providers, wordt InMemoryHistoryProvider("memory") nu standaard toegevoegd.
Als contextproviders expliciet worden opgegeven, blijft die lijst ongewijzigd.
workflow_agent = workflow.as_agent(name="MyWorkflowAgent")
# Default local history provider is injected when none are provided.
🟡 OpenTelemetry-traceringscontext die naar MCP-verzoeken is doorgegeven
PR:#3780
Wanneer OpenTelemetry is geïnstalleerd, wordt traceringscontext (bijvoorbeeld W3C traceparent) automatisch geïnjecteerd in MCP-aanvragen via params._meta. Dit maakt end-to-end gedistribueerde tracering mogelijk voor agent-→ MCP-serveroproepen. Er zijn geen codewijzigingen nodig. Dit is additief gedrag dat wordt geactiveerd wanneer er een geldige spancontext bestaat.
🟡 Ondersteuning voor duurzame werkstromen voor Azure Functions
PR:#3630
Het agent-framework-azurefunctions pakket ondersteunt nu het uitvoeren Workflow van grafieken in Azure Durable Functions. Geef een workflow parameter door aan AgentFunctionApp om agententiteiten, activiteitsfuncties en HTTP-eindpunten automatisch te registreren.
from agent_framework.azurefunctions import AgentFunctionApp
app = AgentFunctionApp(workflow=my_workflow)
# Automatically registers:
# POST /api/workflow/run — start a workflow
# GET /api/workflow/status/{id} — check status
# POST /api/workflow/respond/{id}/{requestId} — HITL response
Ondersteunt fan-out-/fan-in-, gedeelde status- en human-in-the-loop patronen met configureerbare time-out en automatische afwijzing bij het verlopen.
python-1.0.0b260212 (12 februari 2026)
Releaseopmerkingen:python-1.0.0b260212
🔴
Hosted*Toolklassen vervangen door clientmethoden get_*_tool()
PR:#3634
De gehoste hulpprogrammaklassen zijn verwijderd ten gunste van clientspecifieke factorymethoden. Hierdoor is de beschikbaarheid van hulpprogramma's expliciet per provider.
| Klasse verwijderd | Replacement |
|---|---|
HostedCodeInterpreterTool |
client.get_code_interpreter_tool() |
HostedWebSearchTool |
client.get_web_search_tool() |
HostedFileSearchTool |
client.get_file_search_tool(...) |
HostedMCPTool |
client.get_mcp_tool(...) |
HostedImageGenerationTool |
client.get_image_generation_tool(...) |
Before:
from agent_framework import HostedCodeInterpreterTool, HostedWebSearchTool
tools = [HostedCodeInterpreterTool(), HostedWebSearchTool()]
After:
from agent_framework.openai import OpenAIResponsesClient
client = OpenAIResponsesClient()
tools = [client.get_code_interpreter_tool(), client.get_web_search_tool()]
🔴 Pijplijn van sessie-/contextprovider is voltooid (AgentSession, context_providers)
PR:#3850
De migratie van de Python-sessie en contextprovider is voltooid.
AgentThread en de oude typen contextprovider zijn verwijderd.
-
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 doorcontext_providers=[...]
Before:
thread = agent.get_new_thread()
response = await agent.run("Hello", thread=thread)
After:
session = agent.create_session()
response = await agent.run("Hello", session=session)
🔴 Controlepuntmodel en opslaggedrag geherstructureerd
PR:#3744
Controlepunt-internals zijn opnieuw ontworpen, wat van invloed is op persistente compatibiliteit van controlepunten en aangepaste opslag-implementaties:
-
WorkflowCheckpointslaat nu live-objecten op (serialisatie vindt plaats in controlepuntopslag) -
FileCheckpointStoragemaakt nu gebruik van pickle serialisatie -
workflow_idis verwijderd enprevious_checkpoint_idis toegevoegd - Afgeschafte controlepunthaken zijn verwijderd
Als u controlepunten tussen versies persistent maakt, genereert of migreert u bestaande controlepuntartefacten voordat u werkstromen hervat.
🟡
AzureOpenAIResponsesClient ondersteunt Microsoft Foundry-projecteindpunten
PR:#3814
U kunt nu een Foundry-projecteindpunt maken met AzureOpenAIResponsesClient of AIProjectClient, en niet alleen direct Azure OpenAI-eindpunten.
from azure.identity import DefaultAzureCredential
from agent_framework.azure import AzureOpenAIResponsesClient
client = AzureOpenAIResponsesClient(
project_endpoint="https://<your-project>.services.ai.azure.com",
deployment_name="gpt-4o-mini",
credential=DefaultAzureCredential(),
)
🔴 Middleware call_next accepteert niet meer context
PR:#3829
Middleware voortzetting heeft nu geen argumenten. Als uw middleware nog steeds aanroept call_next(context), werkt u deze bij naar call_next().
Before:
async def telemetry_middleware(context, call_next):
# ...
return await call_next(context)
After:
async def telemetry_middleware(context, call_next):
# ...
return await call_next()
python-1.0.0b260210 (10 februari 2026)
Opmerkingen bij de release:python-1.0.0b260210
🔴 Workflow-factorymethoden verwijderd uit WorkflowBuilder
PR:#3781
register_executor() en register_agent() zijn verwijderd uit WorkflowBuilder. Alle opbouwmethoden (add_edge, add_fan_out_edges, add_fan_in_edges, add_chain, , add_switch_case_edge_group) add_multi_selection_edge_groupen start_executor accepteren geen tekenreeksnamen meer , ze vereisen rechtstreeks uitvoerders of agentexemplaren.
Voor de isolatie van de toestand omvat u de instantiëring van uitvoerders/agenten en de opbouw van werkstromen in een helpermethode, zodat elke aanroep nieuwe exemplaren produceert.
WorkflowBuilder met taakuitvoerders
Before:
workflow = (
WorkflowBuilder(start_executor="UpperCase")
.register_executor(lambda: UpperCaseExecutor(id="upper"), name="UpperCase")
.register_executor(lambda: ReverseExecutor(id="reverse"), name="Reverse")
.add_edge("UpperCase", "Reverse")
.build()
)
After:
upper = UpperCaseExecutor(id="upper")
reverse = ReverseExecutor(id="reverse")
workflow = WorkflowBuilder(start_executor=upper).add_edge(upper, reverse).build()
WorkflowBuilder met agents
Before:
builder = WorkflowBuilder(start_executor="writer_agent")
builder.register_agent(factory_func=create_writer_agent, name="writer_agent")
builder.register_agent(factory_func=create_reviewer_agent, name="reviewer_agent")
builder.add_edge("writer_agent", "reviewer_agent")
workflow = builder.build()
After:
writer_agent = create_writer_agent()
reviewer_agent = create_reviewer_agent()
workflow = WorkflowBuilder(start_executor=writer_agent).add_edge(writer_agent, reviewer_agent).build()
Statusisolatie met helpermethoden
Voor werkstromen die een geïsoleerde staat per aanroep nodig hebben, omhul de constructie met een hulpmethode.
def create_workflow() -> Workflow:
"""Each call produces fresh executor instances with independent state."""
upper = UpperCaseExecutor(id="upper")
reverse = ReverseExecutor(id="reverse")
return WorkflowBuilder(start_executor=upper).add_edge(upper, reverse).build()
workflow_a = create_workflow()
workflow_b = create_workflow()
🔴
ChatAgent hernoemd naar Agent, ChatMessage hernoemd naar Message
PR:#3747
Python-kerntypen zijn vereenvoudigd door het redundante Chat voorvoegsel te verwijderen. Er zijn geen achterwaartse compatibiliteitsaliassen opgegeven.
| Voordat | Na |
|---|---|
ChatAgent |
Agent |
RawChatAgent |
RawAgent |
ChatMessage |
Message |
ChatClientProtocol |
SupportsChatGetResponse |
Importbewerkingen bijwerken
Before:
from agent_framework import ChatAgent, ChatMessage
After:
from agent_framework import Agent, Message
Typeverwijzingen bijwerken
Before:
agent = ChatAgent(
chat_client=client,
name="assistant",
instructions="You are a helpful assistant.",
)
message = ChatMessage(role="user", contents=[Content.from_text("Hello")])
After:
agent = Agent(
client=client,
name="assistant",
instructions="You are a helpful assistant.",
)
message = Message(role="user", contents=[Content.from_text("Hello")])
Opmerking
ChatClient, ChatResponse, ChatOptionsen ChatMessageStore worden niet gewijzigd door deze wijziging.
🔴 Typen API-beoordelingsupdates voor antwoord-/berichtmodellen
PR:#3647
Deze release bevat een brede, ingrijpende opschoning van het typen van berichten/antwoorden en helper-API's.
-
RoleenFinishReasonzijn nuNewTypewrappers overstrmetRoleLiteral/FinishReasonLiteralvoor bekende waarden. Behandel ze als tekenreeksen (geen.valuegebruik). -
Messageconstructie is gestandaardiseerd opMessage(role, contents=[...]); tekenreeksen incontentsworden automatisch geconverteerd naar tekstinhoud. -
ChatResponseenAgentResponseconstructors centreren nu opmessages=(enkelMessageof reeks); het gebruik van de legacytext=constructor is verwijderd uit de antwoorden. -
ChatResponseUpdateenAgentResponseUpdateaccepteren niet langertext=; gebruikcontents=[Content.from_text(...)]. - Het combineren van helpernamen is vereenvoudigd.
-
try_parse_valueis verwijderd uitChatResponseenAgentResponse.
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
| 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
-
WorkflowBuildervereiststart_executornu als constructorargument (eerder ingesteld via fluent-methode) -
SequentialBuilder,ConcurrentBuilder,GroupChatBuilder, enMagenticBuildervereisen nu op bouwtijd ofwelparticipantsofparticipant_factories— het doorgeven van geen van beide resulteert inValueError
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)
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
AgentApprovalExecutorenAgentRequestInfoExecutor.
Before:
from agent_framework.workflows import GroupChat, HandoffOrchestrator
# Group chat with custom coordinator
group = GroupChat(
participants=[agent1, agent2],
coordinator=my_coordinator
)
# Handoff with single tier
handoff = HandoffOrchestrator(
agents=[agent1, agent2],
tier="single"
)
After:
from agent_framework.workflows import (
GroupChatOrchestrator,
HandoffAgentExecutor,
AgentApprovalExecutor
)
# Group chat with star topology
group = GroupChatOrchestrator(
participants=[agent1, agent2]
)
# Handoff with executor-based approach
handoff = HandoffAgentExecutor(
agents=[agent1, agent2]
)
🔴 Opties die zijn geïntroduceerd als TypedDict en Generic
PR:#3140
Opties worden nu getypt met gebruik van TypedDict voor betere typeveiligheid en automatische aanvulling in de IDE.
📖 Zie de handleiding voor getypte opties voor volledige migratie-instructies.
Before:
response = await client.get_response(
"Hello!",
model_id="gpt-4",
temperature=0.7,
max_tokens=1000,
)
After:
response = await client.get_response(
"Hello!",
options={
"model_id": "gpt-4",
"temperature": 0.7,
"max_tokens": 1000,
},
)
🔴
display_name verwijderd; context_provider omzetten naar enkelvoud; middleware moet in de vorm van een lijst zijn
PR:#3139
-
display_nameparameter verwijderd uit agents -
context_providers(meervoud, acceptatielijst) gewijzigd incontext_provider(enkelvoud, slechts 1 toegestaan) -
middlewarevereist nu een lijst (accepteert geen enkele instantie meer) -
AggregateContextProviderverwijderd uit code (gebruik indien nodig voorbeeld-implementatie)
Before:
from agent_framework.core import Agent, AggregateContextProvider
agent = Agent(
name="my-agent",
display_name="My Agent",
context_providers=[provider1, provider2],
middleware=my_middleware, # single instance was allowed
)
aggregate = AggregateContextProvider([provider1, provider2])
After:
from agent_framework.core import Agent
# Only one context provider allowed; combine manually if needed
agent = Agent(
name="my-agent", # display_name removed
context_provider=provider1, # singular, only 1
middleware=[my_middleware], # must be a list now
)
# For multiple context providers, create your own aggregate
class MyAggregateProvider:
def __init__(self, providers):
self.providers = providers
# ... implement aggregation logic
🔴
AgentRunResponse* hernoemd in AgentResponse*
PR:#3207
AgentRunResponse en AgentRunResponseUpdate zijn hernoemd in AgentResponse en AgentResponseUpdate.
Before:
from agent_framework import AgentRunResponse, AgentRunResponseUpdate
After:
from agent_framework import AgentResponse, AgentResponseUpdate
🟡 Declaratieve werkstroomruntime toegevoegd voor YAML-gedefinieerde werkstromen
PR:#2815
Er is een op grafieken gebaseerde runtime toegevoegd voor het uitvoeren van declaratieve YAML-werkstromen, waardoor indeling met meerdere agents zonder aangepaste runtimecode mogelijk is.
🟡 Verbeteringen in het laden en de betrouwbaarheid van MCP
PR:#3154
MCP-integraties hebben verbeterd gedrag van verbindingsverlies, ondersteuning voor paginering bij het laden en opties voor weergavebeheer.
🟡 Foundry A2ATool ondersteunt nu verbindingen zonder doel-URL
PR:#3127
A2ATool kan nu A2A-verbindingen met Foundry oplossen via metagegevens van projectverbindingen, zelfs wanneer een directe doel-URL niet is geconfigureerd.
python-1.0.0b260107 (7 januari 2026)
Releaseopmerkingen:python-1.0.0b260107
Geen belangrijke wijzigingen in deze release.
python-1.0.0b260106 (6 januari 2026)
Releaseopmerkingen:python-1.0.0b260106
Geen belangrijke wijzigingen in deze release.
Samenvattingstabel
| Vrijgeven | Opmerkingen bij de release | Typologie | Change | PR |
|---|---|---|---|---|
| 1.0.0rc6 | Alleen PR | 🔴 Nieuwsflits | Provider-leidende herstructurering: splitsen agent-framework-openai, agent-framework-foundryen agent-framework-foundry-local; de naam van OpenAI-clients wijzigen; Foundry verplaatsen naar agent_framework.foundry; compatibiliteitspaden voor Azure AI en assistenten afschaffen |
#4818 |
| 1.0.0rc6 | Alleen pull-aanvraag | 🔴 Nieuwsflits |
agent-framework-core is nu opzettelijk slank; expliciete providerpakketten installeren, zoals agent-framework-openai of agent-framework-azure-ai, en handmatig installeren mcp voor MCP-hulpprogramma's op minimale installaties, of het agent-framework metapakket gebruiken voor de bredere standaardervaring |
#4904 |
| 1.0.0rc6 | Alleen pull-aanvraag | 🔴 Nieuwsflits | Algemene agent_framework.openai clients geven nu de voorkeur aan expliciete routeringssignalen; OpenAI blijft bij OpenAI wanneer OPENAI_API_KEY is ingesteld, en Azure-scenario's dienen expliciete Azure-routeringsinputs door te geven, zoals credential of azure_endpoint, en vervolgens api_version configureren. |
#4925 |
| 1.0.0rc5 / 1.0.0b260318 | N.v.t. (gepland) | 🔴 Nieuwsflits | Publieke runtime kwargs gesplitst in function_invocation_kwargs en client_kwargs; hulpprogramma's gebruiken nu FunctionInvocationContext / ctx.session |
#4581 |
| 1.0.0rc4 / 1.0.0b260311 | Notes | 🔴 Nieuwsflits | Azure AI-integraties zijn nu gericht op azure-ai-projects 2.0 GA; foundry_features is verwijderd en allow_preview is de preview-opt-in |
#4536 |
| 1.0.0rc4 / 1.0.0b260311 | Notes | 🔴 Nieuwsflits | GitHub Copilot-integratie maakt nu gebruik van ToolInvocation / ToolResult; agent-framework-github-copilot vereist Python 3.11+ |
#4551 |
| 1.0.0rc3 / 1.0.0b260304 | Notes | 🔴 Nieuwsflits | Skills-provider voegt code-gedefinieerde Skill / SkillResource toe; oudere FileAgentSkillsProvider import- en backtick-resourceverwijzingen moeten worden bijgewerkt |
#4387 |
| 1.0.0rc2 / 1.0.0b260226 | Notes | 🔴 Nieuwsflits | Declaratieve werkstromen vervangen door InvokeToolInvokeFunctionTool en WorkflowFactory.register_tool() |
#3716 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🔴 Nieuwsflits | Uniform beheer van Azure-verificatiegegevens in Azure-pakketten | #4088 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🔴 Nieuwsflits | Python-uitzonderingshiërarchie opnieuw ontworpen onder AgentFrameworkException |
#4082 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🔴 Nieuwsflits | De status van de provider wordt nu bepaald door source_id |
#3995 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🔴 Nieuwsflits | Aangepaste get_response() implementaties moeten accepteren Sequence[Message] |
#3920 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🔴 Nieuwsflits |
FunctionTool[Any] schema-passthrough-shim verwijderd |
#3907 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🔴 Nieuwsflits | Instellingen verplaatst van AFBaseSettings /pydantic-settings naar TypedDict + load_settings() |
#3843, #4032 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🟡 Verbetering | Hand-off van werkstroom met redeneringsmodel en serialisatie van geschiedenis opgelost | #4083 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🟡 Verbetering | Bedrock toegevoegd aan core[all]; standaardwaarden voor gereedschapskeuze gecorrigeerd |
#3953 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🟡 Verbetering |
AzureAIClient waarschuwt voor niet-ondersteunde runtime-overschrijvingen |
#3919 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🟡 Verbetering |
workflow.as_agent() voegt lokale geschiedenis toe als providers niet worden gezet |
#3918 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🟡 Verbetering | OpenTelemetry-traceringscontext wordt doorgegeven aan MCP-aanvragen | #3780 |
| 1.0.0rc1 / 1.0.0b260219 | Notes | 🟡 Verbetering | Ondersteuning voor duurzame werkstromen toegevoegd voor Azure Functions | #3630 |
| 1.0.0b260212 | Notes | 🔴 Nieuwsflits |
Hosted*Toolklassen verwijderd; gehoste hulpprogramma's maken via clientmethoden get_*_tool() |
#3634 |
| 1.0.0b260212 | Notes | 🔴 Nieuwsflits | Sessie-/contextproviderpijplijn voltooid: AgentThread verwijderd, gebruik AgentSession + context_providers |
#3850 |
| 1.0.0b260212 | Notes | 🔴 Nieuwsflits | Controlepuntmodel/opslagherstructurering (workflow_id verwijderd, previous_checkpoint_id toegevoegd, opslaggedrag gewijzigd) |
#3744 |
| 1.0.0b260212 | Notes | 🟡 Verbetering |
AzureOpenAIResponsesClient kan worden gemaakt op basis van het Foundry-projecteindpunt of AIProjectClient |
#3814 |
| 1.0.0b260212 | Notes | 🔴 Nieuwsflits | Middleware-voortzetting accepteert context niet meer; update call_next(context) naar call_next() |
#3829 |
| 1.0.0b260210 | Notes | 🔴 Nieuwsflits |
send_responses()
/
send_responses_streaming() Verwijderd; Gebruiken workflow.run(responses=...) |
#3720 |
| 1.0.0b260210 | Notes | 🔴 Nieuwsflits |
SharedState
State→ ; werkstroomstatus-API's zijn synchroon en veld status van controlepunt hernoemd |
#3667 |
| 1.0.0b260210 | Notes | 🔴 Nieuwsflits | Orchestration builders verplaatst naar agent_framework.orchestrations pakket |
#3685 |
| 1.0.0b260210 | Notes | 🟡 Verbetering | Achtergrondantwoorden en continuation_token ondersteuning toegevoegd aan Python-agentantwoorden |
#3808 |
| 1.0.0b260210 | Notes | 🟡 Verbetering | Voorbeeldtypen van sessie-/contextweergave die naast elkaar zijn toegevoegd (SessionContext, BaseContextProvider) |
#3763 |
| 1.0.0b260210 | Notes | 🟡 Verbetering | Updates voor streamingcode-interpreters bevatten nu incrementele code-delta's | #3775 |
| 1.0.0b260210 | Notes | 🟡 Verbetering |
@tool decorator voegt expliciete ondersteuning voor schemaafhandeling toe |
#3734 |
| 1.0.0b260210 | Notes | 🔴 Nieuwsflits |
register_executor()
/
register_agent() verwijderd uit WorkflowBuilder; exemplaren rechtstreeks gebruiken, helpermethoden voor statusisolatie |
#3781 |
| 1.0.0b260210 | Notes | 🔴 Nieuwsflits |
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 | — |