Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
I det här dokumentet visas alla betydande ändringar i Python-versioner sedan början av 2026, inklusive icke-bakåtkompatibla ändringar och viktiga förbättringar som kan påverka koden. Varje ändring markeras som:
- 🔴 Breaking – Kräver kodändringar för uppgradering
- 🟡 Förbättring – Ny kapacitet eller förbättring; befintlig kod fortsätter att fungera
Det här dokumentet tas bort när vi når den stabila versionen 1.0.0, så se det när du uppgraderar mellan versioner 2026 för att se till att du inte missar några viktiga ändringar. Detaljerade uppgraderingsinstruktioner om specifika ämnen (t.ex. alternativmigrering) finns i de länkade uppgraderingsguiderna eller de länkade PR:erna.
python-1.0.0rc1 /python-1.0.0b260219 (19 februari 2026)
Release:agent-framework-core och agent-framework-azure-ai befordras till 1.0.0rc1. Alla andra paket har uppdaterats till 1.0.0b260219.
🔴 Enhetlig hantering av Azure-autentiseringsuppgifter i alla paket
PR:#4088
Parametrarna ad_token, ad_token_provideroch /och get_entra_auth_token har ersatts med en enhetlig credential parameter för alla Azure-relaterade Python-paket. Den nya metoden använder azure.identity.get_bearer_token_provider för automatisk cachelagring och uppdatering av token.
Berörda klasser:AzureOpenAIChatClient, AzureOpenAIResponsesClient, AzureOpenAIAssistantsClient, AzureAIClient, AzureAIAgentClient, , AzureAIProjectAgentProvider, AzureAIAgentsProvider, AzureAISearchContextProvider, PurviewClient, , PurviewPolicyMiddleware. PurviewChatPolicyMiddleware
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(),
...
)
Parametern credential accepterar TokenCredential, AsyncTokenCredential eller en anropsbar tokenleverantör. Cachelagring och uppdatering av token hanteras automatiskt.
🔴 Omdesignad Python-undantagshierarki
PR:#4082
Den platta ServiceException familjen har ersatts med domänomfattande undantagsgrenar under en enda AgentFrameworkException rot. Detta ger anroparna exakta except mål och tydlig felsemantik.
Ny hierarki:
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
Undantag har tagits bort:ServiceExceptionServiceInitializationError, ServiceResponseExceptionServiceContentFilterException, 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
...
Anmärkning
Init-valideringsfel använder nu inbyggda funktioner istället för anpassade undantag. Agent Framework-undantag är reserverade för fel på domännivå.
🔴 Providertillstånd som omfattas av source_id
PR:#3995
Providerkrokar får nu en provideromfattande tillståndsordlista (state.setdefault(provider.source_id, {})) i stället för det fullständiga sessionstillståndet. Det innebär att providerimplementeringar som tidigare har använt kapslat tillstånd via state[self.source_id]["key"] nu måste komma åt state["key"] direkt.
Dessutom InMemoryHistoryProvider har standardvärdet source_id ändrats från "memory" till "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")
🔴 Justering av meddelandeinmatning för chatt/agent (run jämfört med get_response)
PR:#3920
Chattklientimplementeringar get_response tar nu konsekvent emot Sequence[Message].
agent.run(...) förblir flexibel (str, Content, Messageeller sekvenser av dessa) och normaliserar indata innan du anropar chattklienter.
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] generisk inställning har tagits bort för schema passthrough
PR:#3907
Schemabaserade verktygssökvägar förlitar sig inte längre på det tidigare FunctionTool[Any] allmänna beteendet.
Använd FunctionTool direkt och ange antingen en pydantisk BaseModel eller explicita scheman där det behövs (till exempel med @tool(schema=...)).
Before:
placeholder: FunctionTool[Any] = FunctionTool(...)
After:
placeholder: FunctionTool = FunctionTool(...)
🔴 Pydantiska inställningar ersatta med TypedDict + load_settings()
Den pydantic-settings-baserade AFBaseSettings klassen har ersatts med ett enkelt, funktionsbaserat inställningssystem med TypedDict och load_settings(). Beroendet pydantic-settings har tagits bort helt.
Alla inställningsklasser (t.ex. OpenAISettings, , AzureOpenAISettings, AnthropicSettings) är nu TypedDict definitioner och inställningsvärden nås via ordlistesyntax i stället för attributåtkomst.
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"]
Viktigt!
Agent Framework läser inte in värden automatiskt från .env filer. Du måste uttryckligen välja att antingen .env läsa in:
- Anropa
load_dotenv()frånpython-dotenvpaketet i början av ditt program - Skicka
env_file_path=".env"tillload_settings() - Ange miljövariabler direkt i gränssnittet eller IDE
Lösningsordningen load_settings är: explicit åsidosätter → .env filvärden (när env_file_path anges) → miljövariabler → standardvärden. Om du anger env_file_pathmåste filen finnas eller så aktiveras en FileNotFoundError .
🟡 Åtgärda överlämning av resonemangsmodellarbetsflöde och serialisering av historik
PR:#4083
Åtgärdar flera fel när du använder resonemangsmodeller (t.ex. gpt-5-mini, gpt-5.2) i arbetsflöden med flera agenter. Motiveringsobjekt från SVARS-API:et är nu korrekt serialiserade och ingår endast i historiken när en function_call också finns, vilket förhindrar API-fel. Krypterat/dolt resonemangsinnehåll genereras nu korrekt och fältformatet summary korrigeras.
service_session_id Rensas också vid överlämning för att förhindra läckage mellan agenttillstånd.
🟡 Bedrock har lagts till core[all] och standardvalen för verktyg har åtgärdats
PR:#3953
Amazon Bedrock ingår nu i extrafunktionerna agent-framework-core[all] och finns tillgänglig via den agent_framework.amazon lata importytan. Beteendet för val av verktyg har också åtgärdats: inte satta verktygsvalsvärden förblir nu inte satta så att tjänsteleverantörer använder standardvärden för deras tjänster, medan uttryckligen angivna värden bevaras.
from agent_framework.amazon import BedrockClient
🟡 AzureAIClient varnar för åsidosättningar av körtid som inte stöds
PR:#3919
AzureAIClient loggar nu en varning när körningstid tools eller structured_output skiljer sig från agentens konfiguration vid skapandetiden. Azure AI Agent Service stöder inte ändringar av körningsverktyg eller svarsformat – använd AzureOpenAIResponsesClient i stället om du behöver dynamiska åsidosättningar.
🟡
workflow.as_agent() nu används lokal historik som standard när leverantörer inte är angivna
PR:#3918
När workflow.as_agent() skapas utan context_providerslägger den nu till InMemoryHistoryProvider("memory") som standard.
Om kontextprovidrar uttryckligen tillhandahålls bevaras listan oförändrad.
workflow_agent = workflow.as_agent(name="MyWorkflowAgent")
# Default local history provider is injected when none are provided.
🟡 OpenTelemetry-spårningskontext som vidarebefordras till MCP-begäranden
PR:#3780
När OpenTelemetry har installerats matas spårningskontexten (t.ex. W3C traceparent) automatiskt in i MCP-begäranden via params._meta. Detta möjliggör distribuerad spårning från slutpunkt till slutpunkt över agent-→ MCP-serveranrop. Inga kodändringar behövs – det här är additivt beteende som aktiveras när det finns en giltig span-kontext.
🟡 Stöd för varaktigt arbetsflöde för Azure Functions
PR:#3630
Paketet agent-framework-azurefunctions har nu stöd för att köra Workflow grafer på Azure Durable Functions. Skicka en workflow parameter till AgentFunctionApp för att automatiskt registrera agententiteter, aktivitetsfunktioner och HTTP-slutpunkter.
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
Stöder fan-out/fan-in, delat tillstånd och mönster för människa i loopen med konfigurerbar timeout och automatiskt avvisande vid förfallodatum.
python-1.0.0b260212 (12 februari 2026)
Viktig information:python-1.0.0b260212
🔴
Hosted*ToolKlasser som ersätts av klientmetoder get_*_tool()
PR:#3634
De värdbaserade verktygsklasserna togs bort till förmån för fabriksmetoder med klientomfattning. Detta gör tillgängligheten av verktyg explicit per leverantör.
| Klassen har tagits bort | 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()]
🔴 Pipeline för sessions-/kontextprovider slutförd (AgentSession, context_providers)
PR:#3850
Python-sessionen och kontextprovidermigreringen slutfördes.
AgentThread och de gamla typerna av kontextprovider har tagits bort.
-
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=mönster ersätts avcontext_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)
🔴 Kontrollpunktsmodell och lagringsbeteende omstrukturerat
PR:#3744
Interna kontrollpunkter har gjorts om, vilket påverkar kompatibiliteten för bevarade kontrollpunkter och anpassade lagringsimplementeringar:
-
WorkflowCheckpointlagrar nu levande objekt (serialisering sker i kontrollpunktslagring) -
FileCheckpointStorageanvänder nu pickle-serialisering -
workflow_idtogs bort ochprevious_checkpoint_idlades till - Inaktuella kontrollpunktskrokar har tagits bort
Om du bevarar kontrollpunkter mellan versioner återskapar eller migrerar du befintliga kontrollpunktsartefakter innan du återupptar arbetsflöden.
🟡
AzureOpenAIResponsesClient stöder Microsoft Foundry-projektslutpunkter
PR:#3814
Nu kan du skapa AzureOpenAIResponsesClient med en slutpunkt för Foundry-projekt eller AIProjectClient, inte bara direkta Azure OpenAI-slutpunkter.
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(),
)
🔴 Mellanprogram call_next accepterar inte längre context
PR:#3829
Fortsättning av mellanprogram tar nu inga argument. Om mellanprogrammet fortfarande anropar call_next(context)uppdaterar du det till 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)
Viktig information:python-1.0.0b260210
🔴 Metoder för arbetsflödesfabriker har tagits bort från WorkflowBuilder
PR:#3781
register_executor() och register_agent() har tagits bort från WorkflowBuilder. Alla builder-metoder (add_edge, add_fan_out_edges, add_fan_in_edges, add_chain, add_switch_case_edge_group, ) add_multi_selection_edge_groupoch start_executor accepterar inte längre strängnamn – de kräver kör- eller agentinstanser direkt.
För tillståndsisolering omsluter du instansiering av executor/agent och arbetsflöden i en hjälpmetod så att varje anrop genererar nya instanser.
WorkflowBuilder med utförare
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 med agenter
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()
Tillståndsisolering med hjälpmetoder
För arbetsflöden som behöver isolerad status per anrop, omslut konstruktionen i en hjälpmetod:
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 har bytt namn till Agent, ChatMessage bytt namn till Message
PR:#3747
Python-kärntyper har förenklats genom att det redundanta Chat prefixet tas bort. Inga bakåtkompatibilitetsalias tillhandahålls.
| Före | Efter |
|---|---|
ChatAgent |
Agent |
RawChatAgent |
RawAgent |
ChatMessage |
Message |
ChatClientProtocol |
SupportsChatGetResponse |
Uppdatera importer
Before:
from agent_framework import ChatAgent, ChatMessage
After:
from agent_framework import Agent, Message
Referenser för uppdateringstyp
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")])
Anmärkning
ChatClient, ChatResponse, ChatOptionsoch ChatMessageStorebyts inte namn på av den här ändringen.
🔴 Typer av API-granskningsuppdateringar mellan svars-/meddelandemodeller
PR:#3647
Den här versionen innehåller en bred, icke-bakåtkompatibel rensning av meddelande-/svarsskrivning och hjälp-API:er.
-
RoleochFinishReasonär nuNewTypeomslag överstrmedRoleLiteral/FinishReasonLiteralför kända värden. Behandla dem som strängar (ingen.valueanvändning). -
Messagekonstruktionen är standardiserad påMessage(role, contents=[...]); strängar icontentskonverteras automatiskt till textinnehåll. -
ChatResponseochAgentResponsekonstruktorer centreras nu påmessages=(enkelMessageeller sekvens); äldretext=konstruktoranvändning togs bort från svar. -
ChatResponseUpdateochAgentResponseUpdateaccepterartext=inte längre ; användcontents=[Content.from_text(...)]. - Uppdateringssammanslagning av hjälparnamn har förenklats.
-
try_parse_valuetogs bort frånChatResponseochAgentResponse.
Namn på hjälpmetod
| Före | Efter |
|---|---|
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(...) |
Uppdatera konstruktionen för svarsuppdatering
Before:
update = AgentResponseUpdate(text="Processing...", role="assistant")
After:
from agent_framework import AgentResponseUpdate, Content
update = AgentResponseUpdate(
contents=[Content.from_text("Processing...")],
role="assistant",
)
Ersätt try_parse_value med try/except på .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}")
🔴 Enhetlig run/get_response modell och ResponseStream användning
PR:#3379
Python-API:er konsoliderades runt agent.run(...) och client.get_response(...), med strömning som representeras av 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)
🔴 Kärnkontext/protokolltypsbyten
| Före | Efter |
|---|---|
AgentRunContext |
AgentContext |
AgentProtocol |
SupportsAgentRun |
Uppdatera importer och skriv anteckningar i enlighet med detta.
🔴 Fortsättningsparameter för mellanprogram har bytt namn till call_next
PR:#3735
Mellanprogramssignaturer bör nu användas call_next i stället för 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)
🔴 TypeVar-namn standardiserade (TName → NameT)
PR:#3770
Kodbasen följer nu en konsekvent TypeVar-namngivningsstil där suffix T används.
Before:
TMessage = TypeVar("TMessage")
After:
MessageT = TypeVar("MessageT")
Om du underhåller anpassade omslutningar kring ramverksgenika justerar du dina lokala TypeVar-namn med den nya konventionen för att minska anteckningsomsättningen.
🔴 Utdata och direktuppspelningsändringar för agentbaserat arbetsflöde
PR:#3649
workflow.as_agent() beteende har uppdaterats för att justera utdata och direktuppspelning med standardagentens svarsmönster. Granska användare av arbetsflöde som agent som är beroende av äldre utdata/uppdateringshantering och uppdatera dem till det aktuella AgentResponse/AgentResponseUpdate flödet.
🔴 Fluent Builder-metoder har flyttats till konstruktorparametrar
PR:#3693
Fluent-metoder med en enskild konfiguration för 6 byggare (WorkflowBuilder, SequentialBuilder, ConcurrentBuilder, GroupChatBuilder, MagenticBuilder, HandoffBuilder) har migrerats till konstruktorparametrar. Fluent-metoder som var den enda konfigurationssökvägen för en inställning tas bort till förmån för konstruktorargument.
WorkflowBuilder
set_start_executor(), with_checkpointing()och with_output_from() tas bort. Använd konstruktorparametrar i stället.
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()och with_intermediate_outputs() tas bort. Använd konstruktorparametrar i stället.
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(), with_checkpointing()och with_intermediate_outputs() tas bort. Använd konstruktorparametrar i stället.
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(), with_checkpointing()och with_intermediate_outputs() tas bort. Använd konstruktorparametrar i stället.
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() och with_termination_condition() tas bort. Använd konstruktorparametrar i stället.
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()
)
Valideringsändringar
-
WorkflowBuilderkräverstart_executornu som konstruktorargument (tidigare angivet via fluent-metoden) -
SequentialBuilder,ConcurrentBuilder,GroupChatBuilder, ochMagenticBuilderkräver nu antingenparticipantsellerparticipant_factoriesunder konstruktion - att inte använda någon av dem resulterar iValueError
Anmärkning
HandoffBuilder redan godkänts participants/participant_factories som konstruktorparametrar och har inte ändrats i detta avseende.
🔴 Arbetsflödeshändelser samlades till en enda WorkflowEvent med type diskriminator
PR:#3690
Alla enskilda underklasser för arbetsflödeshändelser har ersatts av en enda allmän WorkflowEvent[DataT] klass. I stället för att använda isinstance() kontroller för att identifiera händelsetyper kontrollerar du nu strängliteralen event.type (t.ex. "output", "request_info", "status"). Detta följer samma mönster som klasskonsolideringen Content från python-1.0.0b260123.
Borttagna händelseklasser
Följande exporterade händelseunderklasser finns inte längre:
| Äldre klass | Nytt event.type värde |
|---|---|
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" |
Uppdatera importer
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
Uppdatera händelsetypkontroller
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}")
Direktuppspelning med 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}")
Skriv anteckningar
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
Anmärkning
WorkflowEvent är generisk (WorkflowEvent[DataT]), men för samlingar med blandade händelser, använd WorkflowEvent[Any] eller oparametriserad WorkflowEvent.
🔴
workflow.send_responses* Bort; Använda workflow.run(responses=...)
PR:#3720
send_responses() och send_responses_streaming() togs bort från Workflow. Fortsätt pausade arbetsflöden genom att skicka svar direkt till 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 omdöpt till State; API:er för arbetsflödestillstånd är synkrona
PR:#3667
Tillstånds-API:er kräver awaitinte längre och namngivning standardiserades:
| Före | Efter |
|---|---|
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 |
🔴 Orkestreringsbyggare har flyttats till agent_framework.orchestrations
PR:#3685
Orkestreringsbyggare finns nu i ett dedikerat paketnamnområde.
Before:
from agent_framework import SequentialBuilder, GroupChatBuilder
After:
from agent_framework.orchestrations import SequentialBuilder, GroupChatBuilder
🟡 Långvariga bakgrundssvar och fortsättningstokener
PR:#3808
Bakgrundssvar stöds nu för Python-agenten som körs via options={"background": True} och 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})
🟡 Förhandsgranskningstyper för sessions-/kontextprovider har lagts till sida vid sida
PR:#3763
Nya typer av sessions-/kontextpipelines introducerades tillsammans med äldre API:er för inkrementell migrering, inklusive SessionContext och BaseContextProvider.
🟡 Kodtolkaruppspelning innehåller nu inkrementella koddelta
PR:#3775
Strömmande kodtolkar visar nu koddelta-uppdateringar i det strömmade innehållet så att användargränssnitt kan återge genererad kod progressivt.
🟡
@tool stöder explicit schemahantering
PR:#3734
Verktygsdefinitioner kan nu använda explicit schemahantering när härledda schemautdata behöver anpassas.
python-1.0.0b260130 (30 januari 2026)
Viktig information:python-1.0.0b260130
🟡
ChatOptions och ChatResponse/AgentResponse nu generiskt över svarsformat
PR:#3305
ChatOptions, ChatResponse, och AgentResponse är nu generiska typer som parametriseras av svarsformattypen. Detta möjliggör bättre typinferens när du använder strukturerade utdata med 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!)
Tips/Råd
Det här är en icke-banbrytande förbättring. Befintlig kod utan typparametrar fortsätter att fungera. Du behöver inte ange typerna i kodfragmentet ovan för alternativen och svaret. de visas här för tydlighetens skull.
🟡
BaseAgent stöd har lagts till för Claude Agent SDK
PR:#3509
Python SDK innehåller nu en BaseAgent implementering för Claude Agent SDK som möjliggör förstklassig adapterbaserad användning i Agent Framework.
python-1.0.0b260128 (28 januari 2026)
Viktig information:python-1.0.0b260128
🔴
AIFunction bytt namn till FunctionTool och @ai_function bytt namn till @tool
PR:#3413
Klassen och dekoratören har bytt namn för tydlighet och konsekvens med branschterminologi.
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)
🔴 Fabriksmönster har lagts till i GroupChat och Magentic; API-namnbyten
PR:#3224
Deltagarfabriken och orkestreringsfabriken har lagts till i gruppchatten. Innehåller även namnbyten:
-
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 har bytt namn till GitHub
PR:#3486
Klass- och paketnamn har uppdaterats för att använda rätt hölje.
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)
Viktig information:python-1.0.0b260127
🟡
BaseAgent stöd har lagts till för GitHub Copilot SDK
PR:#3404
Python SDK innehåller nu en BaseAgent implementering för GitHub Copilot SDK-integreringar.
python-1.0.0b260123 (23 januari 2026)
Viktig information:python-1.0.0b260123
🔴 Innehållstyper förenklade till en enda klass med classmethod-konstruktorer
PR:#3252
Ersatte alla gamla innehållstyper (härledda från BaseContent) med en enda Content klass med classmethods för att skapa specifika typer.
Komplett migreringsreferens
| Gammal typ | Ny metod |
|---|---|
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(...) |
Ytterligare nya metoder (ingen direkt föregångare):
-
Content.from_text_reasoning(...)— För innehåll om resonemang/tänkande -
Content.from_hosted_vector_store(...)— För referenser till vektorlager -
Content.from_usage(...)— För användning/tokeninformation -
Content.from_mcp_server_tool_call(...)/Content.from_mcp_server_tool_result(...)— För MCP-serververktyg -
Content.from_code_interpreter_tool_call(...)/Content.from_code_interpreter_tool_result(...)— För kodtolkare -
Content.from_image_generation_tool_call(...)/Content.from_image_generation_tool_result(...)— För bildgenerering
Typkontroll
Använd egenskapen isinstance() i stället för type kontroller:
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)
Grundläggande exempel
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")
🔴 Anteckningstyper som är förenklade till Annotation och TextSpanRegion TypedDicts
PR:#3252
Ersatte klassbaserade anteckningstyper med enklare TypedDict definitioner.
| Gammal typ | Ny typ |
|---|---|
CitationAnnotation (klass) |
Annotation (TypedDict med type="citation") |
BaseAnnotation (klass) |
Annotation (TypedDict - en typ av ordbok i Python) |
TextSpanRegion (klass med SerializationMixin) |
TextSpanRegion (TypedDict - en typ av ordbok i Python) |
Annotations (typ alias) |
Annotation |
AnnotatedRegions (typ 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"
}
Anmärkning
Eftersom Annotation och TextSpanRegion är nu TypedDicts skapar du dem som ordlistor i stället för klassinstanser.
🔴
response_format valideringsfel som nu är synliga för användare
PR:#3274
ChatResponse.value och AgentResponse.value skickar nu ValidationError när schemaverifieringen misslyckas i stället för att returnera None.
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 körningslogik förenklad; MCP- och Anthropic klientkorrigeringar
PR:#3322
Metodens run signatur och beteende i AG-UI har förenklats.
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
)
🟡 Antropisk klient stöder response_format nu strukturerade utdata
PR:#3301
Nu kan du använda strukturerad utdataparsing med antropiska klienter via response_format, liknande OpenAI- och Azure-klienter.
🟡 Azure AI-konfiguration expanderad (reasoning, rai_config)
Azure AI-stöd utökades med stöd för resonemangskonfiguration och rai_config när agenten skapades.
python-1.0.0b260116 (16 januari 2026)
Viktig information:python-1.0.0b260116
🔴
create_agent har bytt namn till as_agent
PR:#3249
Metoden har bytt namn för att få bättre klarhet i dess syfte.
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 har bytt namn till executor_id
PR:#3166
Attributet har bytt namn för att bibehålla API-konsistens.
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 stöder tjänsthanterad sessionskontinuitet
PR:#3136
AG-UI bevarar nu tjänsthanterad konversationsidentitet (till exempel Foundry-hanterade sessioner/trådar) för att säkerställa kontinuitet över flera omgångar.
python-1.0.0b260114 (14 januari 2026)
Viktig information:python-1.0.0b260114
🔴 Orkestreringar omstrukturerade
PR:#3023
Omfattande refaktorisering och förenkling av orkestreringar i Agent Framework-arbetsflöden:
-
Gruppchatt: Dela upp orchestreringsverkställaren i dedikerade agentbaserade och funktionsbaserade (
BaseGroupChatOrchestrator,GroupChatOrchestrator,AgentBasedGroupChatOrchestrator). Förenklad till stjärntopologi med sändningsmodell. -
Överlämning: Stöd för enkel nivå, koordinator och anpassad exekverare har tagits bort. Har flyttats till sändningsmodellen med
HandoffAgentExecutor. -
Sekventiell och samtidig: Förenklad mekanism för information om förfrågningar för att förlita sig på underarbetsflöden via
AgentApprovalExecutorochAgentRequestInfoExecutor.
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]
)
🔴 Alternativ som introduceras som TypedDict och Generic
PR:#3140
Alternativ skrivs nu med TypedDict för bättre typsäkerhet och IDE-automatisk komplettering.
📖 Fullständiga migreringsinstruktioner finns i guiden För inskrivna alternativ.
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 borttagen; context_provider till singular; middleware måste vara en lista
PR:#3139
-
display_nameparametern har tagits bort från agenter -
context_providers(plural, accepterande lista) ändras tillcontext_provider(singular, endast 1 tillåten) -
middlewarekräver nu en lista (accepterar inte längre en enskild instans) -
AggregateContextProviderhar tagits bort från koden (använd exempelimplementering om det behövs)
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* har bytt namn till AgentResponse*
PR:#3207
AgentRunResponse och AgentRunResponseUpdate har bytt namn till AgentResponse och AgentResponseUpdate.
Before:
from agent_framework import AgentRunResponse, AgentRunResponseUpdate
After:
from agent_framework import AgentResponse, AgentResponseUpdate
🟡 Deklarativ arbetsflödeskörning har lagts till för YAML-definierade arbetsflöden
PR:#2815
En grafbaserad körning har lagts till för att köra deklarativa YAML-arbetsflöden, vilket möjliggör orkestrering med flera agenter utan anpassad körningskod.
🟡 Förbättringar av MCP-inläsning/tillförlitlighet
PR:#3154
MCP-integreringar förbättrade beteendet vid anslutningsförluster, stöd för sidindelning när data laddas in, och styralternativ för representation.
🟡 Foundry A2ATool stöder nu anslutningar utan en mål-URL
PR:#3127
A2ATool kan nu lösa Foundry-backade A2A-anslutningar via projektanslutningsmetadata även när en direkt mål-URL inte har konfigurerats.
python-1.0.0b260107 (7 januari 2026)
Viktig information:python-1.0.0b260107
Inga betydande ändringar i den här versionen.
python-1.0.0b260106 (6 januari 2026)
Viktig information:python-1.0.0b260106
Inga betydande ändringar i den här versionen.
Sammanfattningstabell
| Lansering | Versionsanteckningar | Typ | Förändring | PR |
|---|---|---|---|---|
| post-1.0.0b260212 (oavsläppt) | N/A | 🔴 Bryta | Chatt-/agentmeddelandeinmatning justerat: anpassade get_response() implementeringar måste acceptera Sequence[Message] |
#3920 |
| post-1.0.0b260212 (oavsläppt) | N/A | 🔴 Bryta |
FunctionTool[Any] kompatibilitetsmellanlägg borttaget för schemaöverföring; använd FunctionTool med explicita scheman efter behov |
#3907 |
| post-1.0.0b260212 (oavsläppt) | N/A | 🟡 Förbättring |
workflow.as_agent() injicerar InMemoryHistoryProvider("memory") som standard när kontextprovidrar inte är inställda |
#3918 |
| 1.0.0b260212 | Notes | 🔴 Bryta |
Hosted*Toolklasser har tagits bort; skapa värdbaserade verktyg via klientmetoder get_*_tool() |
#3634 |
| 1.0.0b260212 | 🔴 Bryta | Pipeline för sessions-/kontextprovider slutförd: AgentThread borttagen, använd AgentSession + context_providers |
#3850 | |
| 1.0.0b260212 | 🔴 Bryta | Kontrollpunktsmodell/lagringsrefaktor (workflow_id borttagen, previous_checkpoint_id tillagd, lagringsbeteendet har ändrats) |
#3744 | |
| 1.0.0b260212 | 🟡 Förbättring |
AzureOpenAIResponsesClient kan skapas från Foundry-projektslutpunkten eller AIProjectClient |
#3814 | |
| 1.0.0b260212 | 🔴 Bryta | Fortsättning av mellanprogram accepterar inte längre context; uppdatera call_next(context) till call_next() |
#3829 | |
| 1.0.0b260210 | Notes | 🔴 Bryta |
send_responses()
/
send_responses_streaming() Bort; Använda workflow.run(responses=...) |
#3720 |
| 1.0.0b260210 | 🔴 Bryta |
SharedState
State→ ; API:er för arbetsflödestillstånd är synkrona och kontrollpunktstillståndsfältet har bytt namn |
#3667 | |
| 1.0.0b260210 | 🔴 Bryta | Orkestreringsverktyg har flyttats till agent_framework.orchestrations paketet |
#3685 | |
| 1.0.0b260210 | 🟡 Förbättring | Bakgrundssvar och continuation_token understöd har lagts till i Python-agentsvar |
#3808 | |
| 1.0.0b260210 | 🟡 Förbättring | Typer av sessions-/kontextförhandsgranskning har lagts till sida vid sida (SessionContext, BaseContextProvider) |
#3763 | |
| 1.0.0b260210 | 🟡 Förbättring | Uppdateringar av strömmade kodtolkar innehåller nu inkrementella kodändringar | #3775 | |
| 1.0.0b260210 | 🟡 Förbättring |
@tool dekoratör lägger till explicit stöd för schemahantering |
#3734 | |
| 1.0.0b260210 | Notes | 🔴 Bryta |
register_executor()
/
register_agent() borttaget från WorkflowBuilder; använd instanser direkt, hjälpmetoder för tillståndsisolering |
#3781 |
| 1.0.0b260210 | 🔴 Bryta |
ChatAgent
Agent → ChatMessage → Message, RawChatAgent → RawAgent, ChatClientProtocol → SupportsChatGetResponse |
#3747 | |
| 1.0.0b260210 | 🔴 Bryta | Api-granskning av typer: Role/FinishReason typändringar, precisering av svar/uppdateringskonstruktor, namnbyte av hjälpare till from_updates, och borttagning av try_parse_value |
#3647 | |
| 1.0.0b260210 | 🔴 Bryta | API:er förenade kring run/get_response och ResponseStream |
#3379 | |
| 1.0.0b260210 | 🔴 Bryta |
AgentRunContext har bytt namn till AgentContext |
#3714 | |
| 1.0.0b260210 | 🔴 Bryta |
AgentProtocol har bytt namn till SupportsAgentRun |
#3717 | |
| 1.0.0b260210 | 🔴 Bryta | Parametern Middleware next har bytt namn till call_next |
#3735 | |
| 1.0.0b260210 | 🔴 Bryta | TypeVar-namngivning standardiserad (TName → NameT) |
#3770 | |
| 1.0.0b260210 | 🔴 Bryta | Arbetsflöde som agent för utdata/dataströmsbeteende i linje med aktuellt agentsvarsflöde | #3649 | |
| 1.0.0b260210 | 🔴 Bryta | Fluent builder-metoder har flyttats till konstruktorparametrar i 6 byggverktyg | #3693 | |
| 1.0.0b260210 | 🔴 Bryta | Arbetsflödeshändelser enhetligade till en enda WorkflowEvent med type som diskriminator; isinstance() → event.type == "..." |
#3690 | |
| 1.0.0b260130 | Notes | 🟡 Förbättring |
ChatOptions
/
ChatResponse
/
AgentResponse generiskt över svarsformat |
#3305 |
| 1.0.0b260130 | 🟡 Förbättring |
BaseAgent stöd har lagts till för Claude Agent SDK-integreringar |
#3509 | |
| 1.0.0b260128 | Notes | 🔴 Bryta |
AIFunction → FunctionTool, @ai_function → @tool |
#3413 |
| 1.0.0b260128 | 🔴 Bryta | Fabriksmönster för GroupChat/Magentic; with_standard_manager → with_manager, participant_factories → register_participant |
#3224 | |
| 1.0.0b260128 | 🔴 Bryta |
Github → GitHub |
#3486 | |
| 1.0.0b260127 | Notes | 🟡 Förbättring |
BaseAgent stöd har lagts till för GitHub Copilot SDK-integreringar |
#3404 |
| 1.0.0b260123 | Notes | 🔴 Bryta | Innehållstyper konsoliderade till en klass Content med classmethods |
#3252 |
| 1.0.0b260123 | 🔴 Bryta |
response_format verifieringsfel genereras nu ValidationError |
#3274 | |
| 1.0.0b260123 | 🔴 Bryta | AG-UI körningslogik förenklad | #3322 | |
| 1.0.0b260123 | 🟡 Förbättring | Antropisk klient lägger till response_format stöd för strukturerade utdata |
#3301 | |
| 1.0.0b260123 | 🟡 Förbättring | Azure AI-konfiguration utökad med reasoning och rai_config stöd |
#3403, #3265 | |
| 1.0.0b260116 | Notes | 🔴 Bryta |
create_agent → as_agent |
#3249 |
| 1.0.0b260116 | 🔴 Bryta |
source_executor_id → executor_id |
#3166 | |
| 1.0.0b260116 | 🟡 Förbättring | AG-UI stöder tjänsthanterad session/trådkontinuitet | #3136 | |
| 1.0.0b260114 | Notes | 🔴 Bryta | Orkestreringar omstrukturerade (Gruppchatt, Överlämning, Sekventiell, Samtidig) | #3023 |
| 1.0.0b260114 | 🔴 Bryta | Alternativ som TypedDict och Generic | #3140 | |
| 1.0.0b260114 | 🔴 Bryta |
display_name borttagen; context_providers → context_provider (singular); middleware måste vara en lista |
#3139 | |
| 1.0.0b260114 | 🔴 Bryta |
AgentRunResponse
/
AgentRunResponseUpdate har bytt namn till AgentResponse/AgentResponseUpdate |
#3207 | |
| 1.0.0b260114 | 🟡 Förbättring | Deklarativ arbetsflödeskörning har lagts till för YAML-definierade arbetsflöden | #2815 | |
| 1.0.0b260114 | 🟡 Förbättring | FÖRBÄTTRINGAR av MCP-inläsning/tillförlitlighet (hantering av anslutningsförlust, sidnumrering, representationskontroller) | #3154 | |
| 1.0.0b260114 | 🟡 Förbättring | Foundry A2ATool stöder anslutningar utan explicit mål-URL |
#3127 | |
| 1.0.0b260107 | Notes | — | Inga betydande ändringar | — |
| 1.0.0b260106 | Notes | — | Inga betydande ändringar | — |