Průvodce významnými změnami v Pythonu 2026

Tento dokument uvádí všechny významné změny ve verzích Pythonu od začátku roku 2026, včetně zásadních změn a důležitých vylepšení, která můžou ovlivnit váš kód. Každá změna je označená jako:

  • 🔴 Zásadní – vyžaduje změny kódu pro upgrade.
  • 🟡 Vylepšení – nová schopnost nebo vylepšení; stávající kód nadále funguje.

Tento dokument sleduje významné Python změny ve všech verzích z roku 2026, proto se na něj při upgradu mezi verzemi podívejte, abyste měli jistotu, že nezmeškáte žádné důležité změny. Podrobné pokyny k upgradu pro konkrétní témata (např. migrace možností) najdete v odkazech na průvodce upgradem nebo PR.


python-1.8.0 (4. června 2026)

Poznámky k verzi:python-1.8.0

🔴 github-copilot-sdk upgrade na verzi 1.0.0 s zásadními změnami rozhraní API

PR:#6292

Pr #6292 upgraduje agent-framework-github-copilot z github-copilot-sdk verze 1.0.0b2 na stabilní verzi 1.0.0 a přizpůsobí se všem zásadním změnám rozhraní API zavedených ve verzi GA.

  • SubprocessConfig odstraněno — použijte RuntimeConnection.for_stdio(path=...) + pojmenované argumenty u CopilotClient (connection, log_level, base_directory).
  • Cesty importu byly přesunutycopilot.generated.session_eventscopilot.session_events.
  • Nastavení bylo přejmenovánocopilot_homebase_directory; proměnná prostředí je nyní GITHUB_COPILOT_BASE_DIRECTORY (byla GITHUB_COPILOT_COPILOT_HOME).
  • Obslužné rutiny pro oprávnění — používejte konkrétní typy rozhodnutí místo PermissionRequestResult(kind=...). Předdefinované PermissionHandler.approve_all nahrazuje vzory ručního schvalování.
  • Výchozí obslužná rutina pro zamítnutí – nyní vrací PermissionDecisionUserNotAvailable() (v souladu se záložním chováním sady SDK).
  • Typ obslužné rutiny oprávnění – nyní podporuje synchronizaci i asynchronní zpětné volání (Callable[..., PermissionRequestResult | Awaitable[PermissionRequestResult]]).

Before:

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

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

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

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

After:

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

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

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

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

🟡 Progresivní expozice nástrojů prostřednictvím FunctionInvocationContext

PR:#6233

Přidává podporu pro postupné zpřístupňování nástrojů během běhu pomocí FunctionInvocationContext. Nástroje se teď dají dynamicky přidávat nebo odebírat na základě předchozích výsledků nástrojů ve stejném spuštění agenta.

Úplnou dokumentaci, včetně vzorů, upozornění a příkladů řazení nástrojů, najdete v tématu Řízení dostupnosti nástrojů.


🟡 Zjišťování dovedností na základě MCP (McpSkillsSource)

PR:#6169

Přidává McpSkillsSource do agent-framework-core, čímž umožňuje objevování dovedností a jejich načítání prostřednictvím serverů MCP.


🟡 Podpora nativního strukturovaného výstupu Bedrocku pomocí rozhraní Converse API

PR:#6052

agent-framework-bedrock Nyní implementuje nativní podporu strukturovaného výstupu prostřednictvím rozhraní AWS Bedrock Converse API, což umožňuje response_format pracovat s modely Bedrock.


🟡 Integrace Foundry Adaptive Evals (generování hodnoticích rubrik)

PR:#6101

Přidává do agent-framework-foundry integraci Foundry Adaptive Evals pro automatizované generování rubrik v evaluačních pracovních postupech.


🟡 Klientský balíček Mistral AI embedding

PR:#5480

Nový agent-framework-mistral balíček poskytující embeddingového klienta pro Mistral AI.


🟡 agent-framework-declarative povýšeno na kandidáta na vydání

PR:#6256

Balíček agent-framework-declarative se propaguje z beta fáze na fázi Release Candidate.


python-1.7.0 (28. května 2026)

Poznámky k verzi:python-1.7.0

🔴 Deklarativní: akce pouze pro Python byly odebrány a typy aliasů přejmenovány na kanonické názvy v jazyce C#

PR:#6126

PR #6126 odstraňuje deklarativní akce určené pouze pro Python a přejmenovává druhy aliasů tak, aby odpovídaly kanonickým názvům v jazyce C# kvůli konzistenci napříč jazyky.

  • Deklarativní typy akcí pouze pro Python, které neměly ekvivalent v jazyce C#, byly odebrány.
  • Druhy aliasů akcí jsou teď v souladu se zásadami vytváření názvů jazyka C#; odpovídajícím způsobem aktualizujte existující deklarativní soubory YAML/JSON.

🟡 HarnessAgent a agenti na pozadí – poskytovatel

Žádosti o přijetí změn:#6041, #6069

Přidává HarnessAgent do agent-framework-core, čímž umožňuje vzory agentů podporované rozhraním harness pro zpracování na pozadí.


🟡 A2AAgentSession s odkazovanými ID úkolů a podporou vyžadovanou vstupem

PR:#5980

Přidává A2AAgentSession do agent-framework-a2a a agent-framework-core a podporuje ID odkazovaných úloh a tok vyžadující vstup pro interakce s protokolem A2A.


🟡 Experimentální rozhraní API pro převod a nasazení agenta pro prompty

PR:#5959

Přidává do agent-framework-foundry experimentální API pro převod definic promptů na agenty a jejich programové nasazení.


python-1.6.0 (21. května 2026)

Poznámky k verzi:python-1.6.0

🔴 Instrumentace je ve výchozím nastavení povolená.

PR:#5865

PR #5865 ve výchozím nastavení povoluje instrumentaci OpenTelemetry v agent-framework-core a agent-framework-foundry.

  • Agent teď generuje telemetrická data automaticky bez výslovného souhlasu.
  • Pokud jste instrumentaci dříve zakázali nebo máte vlastní kanály telemetrie, ověřte, že výchozí chování není v konfliktu.
  • Pokud chcete zakázat, předejte enable_instrumentation=False tam, kde je to možné.

Before:

from agent_framework import Agent
from agent_framework.observability import configure_otel_providers

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

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

After:

from agent_framework import Agent

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

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

🟡 Nástroj Shell s podporou místního spouštění a spouštění Dockeru

PR:#5664

Přidá do agent-framework-core integrovaný nástroj příkazového řádku, který podporuje jak lokální spouštění, tak spouštění v sandboxu založeném na Dockeru.


🟡 Nový agent-framework-monty balíček poskytovatele CodeAct

PR:#5915

Představuje balíček agent-framework-monty pro integrace CodeAct s podporou Monty (ve fázi alfa).


python-1.4.0 (14. května 2026)

Poznámky k verzi:python-1.4.0

🔴 [Experimentální rozhraní API pro dovednosti] Uvést zjišťování složky dovednosti v souboru do souladu se specifikací agentskills.io

PR:#5807

Pull request #5807 aktualizuje experimentální API pro dovednosti tak, aby vyhledávání složek dovedností na základě souborů bylo v souladu se specifikací agentskills.io.

  • Logika určování složek dovedností se změnila; pokud používáte experimentální API pro dovednosti, aktualizujte vlastní struktury složek dovedností.

🔴 [Rozhraní API pro experimentální dovednosti] Extrahování metadat specifikace dovedností do SkillFrontmatter

PR:#5775

Pr #5775 přesune metadata specifikace dovedností do vyhrazené SkillFrontmatter datové třídy.

  • Pokud přímo přistupujete k polím metadat dovedností, aktualizujte odkazy tak, aby používaly SkillFrontmatter atributy.

🔴 DevUI: Zpřísnění výchozích mechanismů řízení přístupu a nastavení CORS

PR:#5740

PR #5740 zpřísňuje výchozí řízení přístupu a konfiguraci CORS pro agent-framework-devui.

  • Výchozí zdroje CORS jsou teď více omezující.
  • Pokud vaše nastavení DevUI spoléhá na přístup mezi zdroji z vlastních domén, explicitně nakonfigurujte povolené zdroje.

🔴 A2A: Přejděte na a2a-sdk v1.0

PR:#5752

PR #5752 migruje agent-framework-a2a na a2a-sdk v1.0.

  • Typy protokolů A2A a přenosová rozhraní API se řídí konvencemi sady A2a-SDK 1.0.
  • Aktualizujte veškerý kód, který přímo komunikuje s typy protokolů A2A.

🟡 AG-UI: Kanál pro zobrazení výsledků nástroje a povýšení na verzi release candidate

PR:#5762, #5844

Přidává kanál pro zobrazování výsledků nástroje do agent-framework-ag-ui a povyšuje balíček do fáze release candidate.


python-1.3.0 (7. května 2026)

Poznámky k verzi:python-1.3.0

🔴 [Experimentální rozhraní API pro dovednosti] Přepracovat dovednosti agenta na vícezdrojovou architekturu

PR:#5584

PR #5584 přepracovává experimentální API pro dovednosti tak, aby podporovalo načítání dovedností z více zdrojů.

  • U funkce experimentálních dovedností se změnila logika registrace dovedností a zjišťování.
  • Pokud používáte rozhraní API pro experimentální dovednosti, projděte si nové konvence načítání s více zdroji.

🟡 ClassSkill pro definice dovedností založené na třídách

PR:#5678

Přidá ClassSkill do agent-framework-core definic dovedností založených na třídách s deklarativními metadaty a automatickým zjišťováním metod.


🟡 Ochrana řízení toku informací proti injektáži promptu

PR:#5331

Do agent-framework-core přidává mechanismus řízení toku informací, který pomáhá chránit před útoky typu prompt injection.


🟡 github-copilot-sdk upgrade na verzi 1.0.0b2

PR:#5665

Aktualizuje agent-framework-github-copilot na github-copilot-sdk>=1.0.0b2 a přidává instruction_directories, konfiguraci copilot_home a předávání voleb runtime při obnovení relace.


🟡 Vynutit approval_mode v agentech Claude a GitHub Copilot

PR:#5562

agent-framework-claude a agent-framework-github-copilot nyní vyžadují dekorátor approval_mode u funkčních nástrojů, v souladu s ostatními implementacemi agentů.


🟡 Podpora volby nástrojů OpenAI a Gemini allowed_tools

PR:#5322

Přidává podporu pro volbu nástroje allowed_tools v agent-framework-openai, což vám umožňuje omezit, které nástroje může model volat.


python-1.2.2 (29. dubna 2026)

Poznámky k verzi:python-1.2.2

🔴 Výstupy terminálu orchestrace standardizované jako AgentResponse

PR:#5301

Pr #5301 standardizuje výstupy terminálu orchestrace tak, aby AgentResponseWorkflow.as_agent() vrátila pouze konečnou odpověď.

  • Sekvenční schvalovací (with_request_info) a souběžné (intermediate_outputs=True) toky nyní používají stejné výstupní rozhraní.
  • Pokud využíváte přímo výsledky orchestrace, očekávejte objekty AgentResponse, nikoli prostý text nebo smíšené typy.

Before:

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

After:

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

🟡 Poskytovatel kontextu Azure AI Content Understanding

PR:#4829

Nový alfa balíček agent-framework-azure-contentunderstanding – automaticky analyzuje přílohy souborů (dokumenty, obrázky, zvuk, video) a vloží strukturované výsledky do kontextu LLM.


🟡 Podpora hostovaného trvalého toku prací v rámci hostingu Foundry

PR:#5531

Přidává do agent-framework-foundry-hosting podporu hostovaného pracovního postupu Durable Workflow a předává agentům pracovních postupů úplnou historii konverzace.


python-1.1.0 (21. dubna 2026)

Poznámky k verzi:python-1.1.0

🔴 CosmosCheckpointStorage omezená deserializace pickle ve výchozím nastavení

PR:#5200

CosmosCheckpointStorage nyní ve výchozím nastavení používá omezenou deserializaci pickle, v souladu s chováním FileCheckpointStorage.

  • Pokud kontrolní body obsahují typy definované aplikací, předejte je prostřednictvím allowed_checkpoint_types=["my_app.models:MyState"].
  • Bez tohoto deserializace vlastních typů vyvolá WorkflowCheckpointException.

Before:

from agent_framework.azure.cosmos import CosmosCheckpointStorage

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

After:

from agent_framework.azure.cosmos import CosmosCheckpointStorage

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

🟡 GeminiChatClient Přidány

PR:#4847

Nový agent-framework-gemini balíček s GeminiChatClient podporou rozhraní GOOGLE Gemini API a Vertex AI


🟡 Balíček Hyperlight CodeAct

PR:#5185

Nový agent-framework-hyperlight balíček pro spouštění kódu v sandboxu založeném na Hyperlightu.


🟡 Podpora nástrojů Foundry

PR:#5346

Přidává podporu pro sady nástrojů Foundry v agent-framework-foundry, což umožňuje konfigurace spravovaných nástrojů z Azure AI Foundry.


🟡 finish_reason na AgentResponse a AgentResponseUpdate

PR:#5211

Přidává pole finish_reason do AgentResponse a AgentResponseUpdate, což uživatelům umožňuje zkontrolovat, proč model přestal generovat.


🟡 Podpora hostovaného agenta V2 v Foundry

PR:#5379

Přidává v agent-framework-foundry podporu hostovaného agenta V2 pro nejnovější funkce služby agenta Foundry.


python-1.0.1 (9. dubna 2026)

Poznámky k verzi:python-1.0.1

🔴 FileCheckpointStorage omezená deserializace pickle (posílení zabezpečení)

PR:#4941

Deserializace checkpointů nyní ve výchozím nastavení probíhá prostřednictvím omezeného mechanismu pro unpickling, který povoluje pouze předdefinovanou sadu bezpečných typů jazyka Python a všechny typy frameworku agent_framework.

  • Pokud vaše aplikace ukládá vlastní typy do kontrolních souborů, předejte jejich identifikátory "module:qualname" prostřednictvím nového parametru konstruktoru allowed_checkpoint_types — jinak načítání vyvolá WorkflowCheckpointException.
  • Podrobnosti najdete v tématu Důležité informace o zabezpečení .

Before:

from agent_framework.workflows import FileCheckpointStorage

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

After:

from agent_framework import FileCheckpointStorage

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

🔴 Oprava správy kontextu pracovního postupu předání

PR:#5136

PR #5136 opravuje správu kontextu workflow předávání. Jde o změnu chování – agenti pro předávání nyní správně zachovávají izolovaný kontext během přechodů.


🟡 úložiště kontrolních bodů pro pracovní postupy ve službě Cosmos DB NoSQL

PR:#4916

Nový balíček agent-framework-azure-cosmos poskytující úložiště kontrolních bodů založených na NoSQL službě Cosmos DB pro pracovní postupy Python.


python-1.0.0 (2. dubna 2026)

Poznámky k verzi:python-1.0.0

V této části jsou zachyceny významné změny Pythonu, které byly zavedeny po python-1.0.0rc6 a jsou nyní součástí python-1.0.0.

🔴 Message(..., text=...) konstrukce je nyní zcela odstraněna

PR:#5062

PR #5062 dokončuje dřívější vyčištění modelu zpráv Pythonu odebráním posledních cest kódu na straně frameworku, které stále vytvářely Message objekty s text=....

  • Vytvářejte textové zprávy jako Message(role="user", contents=["Hello"]) místo Message(role="user", text="Hello").
  • To platí všude, kde přímo vytváříte zprávy, včetně požadavků v pracovních postupech, vlastních reakcí z prostředí middleware, pomocníků pro orchestraci a migračního kódu.
  • Prosté řetězce uvnitř contents=[...] jsou stále normalizovány do textového obsahu automaticky, takže contents=["Hello"] zůstává nejjednodušším textovým formulářem.

Before:

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

After:

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

🟡 Vydané balíčky Pythonu už nevyžadují --pre

PR:#5062

PR #5062 povýšuje hlavní balíčky Pythonu na 1.0.0 a aktualizuje pokyny k instalaci, aby rozlišovaly mezi vydanými balíčky a balíčky, které jsou stále ve formě předběžného vydání.

  • agent-framework, agent-framework-core, agent-framework-openai a agent-framework-foundry jsou nyní vydanými balíčky a již nevyžadují --pre.
  • Beta konektory, jako jsou agent-framework-ag-ui, agent-framework-azurefunctions, agent-framework-copilotstudio, agent-framework-foundry-local, agent-framework-github-copilot, agent-framework-mem0 a agent-framework-ollama, stále vyžadují --pre.
  • Pokud jeden instalační příkaz obsahuje jakýkoli beta balíček, ponechte --pre v tomto příkazu.

🔴 Foundry teď vlastní embedování Pythonu a nastavení model-endpointů.

PR:#5056

Pull request #5056 odstraní samostatný balíček agent-framework-azure-ai a přesune rozhraní pro integraci Pythonu na agent-framework-foundry a agent_framework.foundry.

  • Použijte FoundryEmbeddingClient, FoundryEmbeddingOptionsa FoundryEmbeddingSettings z agent_framework.foundry.
  • Nainstalujte agent-framework-foundry pro chat Foundry, službou spravované agenty, poskytovatele paměti a embeddingy.
  • agent_framework.azure již nevyexportuje AzureAIInferenceEmbeddingClient, AzureAIInferenceEmbeddingOptions, AzureAIInferenceEmbeddingSettingsnebo AzureAISettings.
  • Embedování Foundry nyní používá FOUNDRY_MODELS_ENDPOINT, FOUNDRY_MODELS_API_KEY, FOUNDRY_EMBEDDING_MODEL a volitelné FOUNDRY_IMAGE_EMBEDDING_MODEL.
  • FoundryChatClient a FoundryAgent stále používají nastavení koncového bodu projektu, jako je FOUNDRY_PROJECT_ENDPOINT a FOUNDRY_MODEL.

Before:

import os

from agent_framework.azure import AzureAIInferenceEmbeddingClient

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

After:

import os

from agent_framework.foundry import FoundryEmbeddingClient

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

🔴 Pracovní postupy teď směrují modul runtime kwargs přes explicitní kontejnery.

PR:#5010

PR#5010 aktualizuje Pythonworkflow.run(...), takže runtime kwargs se předávají explicitně jako function_invocation_kwargs= a client_kwargs= místo obecného přeposílání **kwargs.

  • Ploché mapování se považuje za globální a předává se každému odpovídajícímu vykonavateli agenta v rámci pracovního procesu.
  • Pokud se identifikátory executorů shodují s jedním nebo více klíči nejvyšší úrovně, je celé mapování považováno za cílení na jednotlivé executory a každý executor obdrží pouze vlastní položku.
  • Vlastní AgentExecutor(id="...") a další ID exekutoru explicitního pracovního postupu jsou klíče, na které cílíte.
  • Stejná globální a cílová pravidla platí pro obě function_invocation_kwargs i client_kwargs.

Before:

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

After:

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

🟡 GitHubCopilotAgent Nyní se spouštějí poskytovatelé kontextu kolem každého vyvolání.

PR:#5013

PR #5013 opravuje mezeru v chování Pythonu, kde GitHubCopilotAgent se akceptovala context_providers, ale ve skutečnosti je nespustila.

  • before_run() nyní se spustí před odesláním výzvy Copilot.
  • Zprávy a pokyny přidané poskytovatelem jsou součástí výzvy, která se dostává k příkazovému řádku Copilot.
  • after_run() nyní se spustí po sestavení konečné odpovědi, včetně streamovací cesty.

Pokud jste už předali context_providersGitHubCopilotAgent, nevyžaduje se žádná migrace – háky nyní fungují konzistentně se zbytkem rozhraní agenta Pythonu.


🟡 Strukturovaný výstup teď kromě Pydantických modelů přijímá mapování schémat JSON.

PR:#5022

Pr #5022 rozšiřuje analýzu strukturovaného výstupu Pythonu, takže response_format může být Pydantickým modelem nebo mapováním schématu JSON.

  • Pydantické modely se stále parsují do instancí typových modelů na response.value.
  • Mapování schématu JSON se teď parsují do hodnot response.value Pythonu kompatibilních s JSON (obvykle dict nebo list).
  • Stejná pravidla analýzy platí při shromažďování konečné odpovědi z datového proudu.

Jedná se o vylepšení, nikoli o zásadní změnu, ale je užitečné vědět, jestli už schémata ukládáte jako slovníky podobné formátu JSON.


python-1.0.0rc6

Tato část zaznamenává významné změny Pythonu, které byly dodány nebo byly sledovány pro python-1.0.0rc6.

🔴 Výběr modelu je standardizovaný na model

PR:#4999

PR #4999 dokončuje vyčištění výběru modelu v rámci Pythonu v oblastech jako konstruktory, typované možnosti, výchozí nastavení agenta, objekty odpovědí a proměnné prostředí.

  • Používejte model všude, kde jste dříve použili model_id.
  • Agent.default_options a při každém spuštění options={...} nyní očekáváme "model", ne "model_id".
  • Povrch objektů odpovědi response.model, ne response.model_id.
  • Teď se používají nastavení OpenAI OPENAI_MODEL, OPENAI_CHAT_MODEL, OPENAI_CHAT_COMPLETION_MODEL a OPENAI_EMBEDDING_MODEL.
  • Nastavení Azure OpenAI teď používá AZURE_OPENAI_MODEL, AZURE_OPENAI_CHAT_MODELAZURE_OPENAI_CHAT_COMPLETION_MODEL, a AZURE_OPENAI_EMBEDDING_MODEL.
  • Anthropic nyní používá ANTHROPIC_CHAT_MODELa Foundry Local používá FOUNDRY_LOCAL_MODEL.
  • Balíček Anthropic také přidává obálky hostované zprostředkovatelem, například AnthropicFoundryClient, AnthropicBedrockClienta AnthropicVertexClient.

Before:

from agent_framework.anthropic import AnthropicClient

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

After:

from agent_framework.anthropic import AnthropicClient

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

🔴 Zprostředkovatelé kontextu můžou přidat middleware a zachovat historii při volání modelu.

PR:#4992

Žádost o přijetí změn #4992 aktualizuje kanál zprostředkovatele kontextu Pythonu a způsob, jakým je možné uchovávat historii spravovanou architekturou během více volání.

  • ContextProvider a HistoryProvider jsou teď kanonickými základními třídami Pythonu.
  • BaseContextProvider a BaseHistoryProvider zůstávají dočasně jako zastaralé aliasy pro kompatibilitu, ale nový kód by měl migrovat na nová jména.
  • SessionContext nyní může shromažďovat poskytovatelem přidané chaty nebo middlewareové funkce a zprostředkovat zploštěný seznam prostřednictvím extend_middleware().
  • Agent(..., require_per_service_call_history_persistence=True) spouští poskytovatele historie při každém volání modelu, místo aby je spustil jednou po úplném run().
  • Tento režim je určen pro místní historii spravovanou rámcem a nelze jej kombinovat s existující konverzací spravovanou službou, jako je například session.service_session_id nebo options={"conversation_id": ...}.

Before:

from agent_framework import BaseHistoryProvider

class CustomHistoryProvider(BaseHistoryProvider):
    ...

After:

from agent_framework import Agent, HistoryProvider

class CustomHistoryProvider(HistoryProvider):
    ...

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

🔴 Odebrané nepodporované aspekty kompatibility Azure/OpenAI

PR:#4990

PR #4990 dokončí migraci, kterou vede poskytovatel #4818, tím, že odstraní zbývající zastaralé kompatibilní prvky Pythonu, které byly dostupné v předchozích verzích Preview.

  • agent_framework.azure už neexportuje AzureOpenAI* nebo se zobrazí starší AzureAI* agent/ klient/poskytovatel.
  • Typy kompatibility asistentů Python OpenAI už nejsou součástí aktuálního agent_framework.openai rozhraní.
  • Použijte OpenAIChatClient, OpenAIChatCompletionClienta OpenAIEmbeddingClient pro přímé scénáře OpenAI nebo Azure OpenAI.
  • Použijte FoundryChatClient pro inferenci projektu Foundry a FoundryAgent pro Prompt agenty nebo HostovanéAgenty.
  • Aktuální agent_framework.azure obor názvů teď pokrývá zbývající integrace Azure, jako je Azure AI Vyhledávač, historie cosmos, Azure Functions a odolné pracovní postupy. Foundry chat, agent, paměť a embedding klienti jsou umístěny v rámci agent_framework.foundry.

Pokud migrujete starší kód Pythonu, použijte tyto nahrazení:

  • AzureOpenAIResponsesClientOpenAIChatClient
  • AzureOpenAIChatClientOpenAIChatCompletionClient
  • AzureOpenAIEmbeddingClientOpenAIEmbeddingClient
  • AzureAIAgentClient / AzureAIClient / AzureAIProjectAgentProvider / AzureAIAgentsProvider FoundryChatClient→ nebo FoundryAgentv závislosti na tom, jestli vaše aplikace vlastní definici agenta
  • OpenAIAssistantsClient / OpenAIAssistantProvider OpenAIChatClient→ pro aktuální práci s Pythonem OpenAI nebo FoundryAgent pokud potřebujete agenta spravovaného službou v Foundry

🔴 Návrh pro klienta a dělení balíčku vedoucího poskytovatele

PR:#4818

Žádost o přijetí změn #4818 reorganizuje strukturu poskytovatelů Pythonu kolem balíčků a jmenných prostorů specifických pro jednotlivé poskytovatele.

  • Klienti OpenAI se nyní nacházejí v balíčku agent-framework-openai, zatímco stále importují z jmenného prostoru agent_framework.openai.
  • Klienti Microsoft Foundry jsou nyní umístěni v balíčku agent-framework-foundry a jmenném prostoru agent_framework.foundry.
  • Foundry Local je také publikován jako agent_framework.foundryFoundryLocalClient.
  • OpenAIResponsesClient se přejmenuje na OpenAIChatClient.
  • OpenAIChatClient se přejmenuje na OpenAIChatCompletionClient.
  • Konfigurace klienta je standardizována na model, nahrazující starší parametry, jako model_id, deployment_name a model_deployment_name.
  • Pro nový kód Azure OpenAI použijte agent_framework.openai klienty. Dřívější AzureOpenAI* shimy kompatibility byly později odstraněny v #4990.
  • Pro nový kód Foundry použijte FoundryChatClient pro přímou inferenci projektu, FoundryAgent pro agenty výzev a hostované agenty, a FoundryLocalClient pro místní runtime prostředí.
  • AzureAIClient, AzureAIProjectAgentProvider, AzureAIAgentClient, AzureAIAgentsProvider a asistenti Pythonu byly během refaktoringu přesunuty na kompatibilní cesty a později odstraněny v #4990.
  • Ukázkové pokrytí bylo reorganizováno tak, aby odpovídalo novému rozložení vedoucího poskytovatele, včetně ukázek Foundry v části samples/02-agents/providers/foundry/.

Mapování balíčků

Scénář Install Primární jmenný prostor
OpenAI a Azure OpenAI pip install agent-framework-openai agent_framework.openai
Koncové body projektu Microsoft Foundry, služba agenta, paměť a vkládání pip install agent-framework-foundry agent_framework.foundry
Místní prostředí Foundry pip install agent-framework-foundry-local --pre agent_framework.foundry

Before:

from agent_framework.openai import OpenAIResponsesClient

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

After:

from agent_framework.openai import OpenAIChatClient

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

Pokud jste dříve používali Azure OpenAI přímo, namapujte staré vyhrazené třídy na nové třídy OpenAI primárně poskytované tímto poskytovatelem.

  • AzureOpenAIResponsesClientOpenAIChatClient
  • AzureOpenAIChatClientOpenAIChatCompletionClient
  • AzureOpenAIEmbeddingClientOpenAIEmbeddingClient
  • AzureOpenAIAssistantsClient OpenAIChatClient→ pro přímou migraci rozhraní API pro odpovědi nebo FoundryAgent pokud potřebujete agenta Foundry spravovaného službou.

Změna kódu je většinou přesun názvu třídy plus deployment_namemodel. Kvůli kompatibilitě Azure OpenAI použijte explicitní vstupy Azure na nových klientech OpenAI. credential= je teď upřednostňovanou možností ověřování Azure, zatímco volatelná api_key cesta zůstává cestou kompatibility:

Před (AzureOpenAIResponsesClient):

from agent_framework.azure import AzureOpenAIResponsesClient

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

Za (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,
)

Před (AzureOpenAIChatClient):

from agent_framework.azure import AzureOpenAIChatClient

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

Za (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,
)

Pokud chcete přejít z koncových bodů Azure OpenAI na koncový bod projektu Microsoft Foundry, použijte místo toho plochu s orientací na Foundry:

Před (koncový bod Azure OpenAI):

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

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

Po projektu Foundry:

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)

Pro místní runtime prostředí Microsoft Foundry použijte obor názvů Foundry spolu s místním konektorem:

from agent_framework.foundry import FoundryLocalClient

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

Pokud vynecháte model, nastavíte FOUNDRY_LOCAL_MODEL ve svém prostředí.

Pokud je to možné, aktualizujte také názvy prostředí nebo konfigurace:

  • Použijte OPENAI_CHAT_MODEL pro OpenAIChatClient, OPENAI_CHAT_COMPLETION_MODEL pro OpenAIChatCompletionClient, s OPENAI_MODEL jako sdílenou záložní možností.
  • Azure OpenAI teď používá AZURE_OPENAI_CHAT_MODEL pro OpenAIChatClient, AZURE_OPENAI_CHAT_COMPLETION_MODEL pro OpenAIChatCompletionClient, a AZURE_OPENAI_MODEL jako sdílenou záložní možnost.
  • Použijte azure_endpoint pro adresy URL prostředků Azure OpenAI nebo base_url pokud už máte úplnou .../openai/v1 adresu URL a nastavíte api_version pro plochu rozhraní API Azure OpenAI, kterou používáte.
  • Přijmout nastavení specifická pro Foundry, jako FOUNDRY_PROJECT_ENDPOINT, FOUNDRY_MODEL, FOUNDRY_AGENT_NAME a FOUNDRY_AGENT_VERSION pro klienty Cloud Foundry.
  • Použití ANTHROPIC_CHAT_MODEL pro Anthropic a FOUNDRY_LOCAL_MODEL pro Foundry Local

Tato změna se poprvé objevila během python-1.0.0rc6 cyklu.


🔴 Základní závislosti jsou teď záměrně štíhlé.

PR:#4904

Žádost o přijetí změn #4904 se řídí rozdělením #4818 balíčku zprostředkovatele tím, že zeštíhluje agent-framework-core a odebere z základního balíčku více tranzitivních závislostí zprostředkovatele.

  • agent-framework-core je nyní záměrně minimální.
  • Pokud importujete agent_framework.openai, nainstalujte agent-framework-openai.
  • Pokud importujete agent_framework.foundry, nainstalujte agent-framework-foundry pro odvozování projektu Foundry, agenty spravované službou, poskytovatele paměti a vkládání. Použijte agent-framework-foundry-local --pre pro lokální runtime.
  • Pokud používáte nástroje MCPAgent.as_mcp_server() nebo jiné integrace MCP při minimální instalaci, nainstalujte mcp --pre ručně. Pro podporu protokolu WebSocket MCP nainstalujte mcp[ws] --pre.
  • Pokud chcete širokou zkušenost ve stylu „vše zahrnuto“, nainstalujte meta balíček agent-framework.

Tím nedojde k opětovnému přepracování povrchu poskytovatele; změní se, co se instaluje ve výchozím nastavení, když přidáte pouze jádro.

Dříve (instalace obsahující pouze jádro často přinesly více funkcionality poskytovatele nepřímo):

pip install agent-framework-core

Po (nainstalujte balíček zprostředkovatele, který skutečně používáte):

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

or:

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

Pokud upgradujete existující projekt, který dříve závisel na základních a opožděných importech zprostředkovatelů, proveďte audit importů a zpřístupněte balíčky zprostředkovatele explicitně ve vašem prostředí nebo souborech závislostí. Totéž proveďte u závislostí MCP, pokud spoléháte na nástroje MCP nebo hostování serveru MCP.


🔴 Obecná klienti OpenAI teď preferují explicitní směrovací signály.

PR:#4925

Změna v rámci PR #4925 změní, jak se obecní agent_framework.openai klienti rozhodují pro OpenAI a Azure OpenAI.

  • Obecní klienti OpenAI se už nepřepínají na Azure jen proto, že jsou k dispozici proměnné prostředí AZURE_OPENAI_*.
  • Pokud je OPENAI_API_KEY nakonfigurován, obecní klienti zůstávají na OpenAI, pokud nepředáte explicitní signál směrování Azure, jako například credential nebo azure_endpoint.
  • Pokud jsou k dispozici pouze AZURE_OPENAI_* nastavení, mohou se obecní klienti vrátit ke směrování na základě prostředí Azure.
  • Upřednostňovaný vzor Azure OpenAI je nyní předávat explicitní nastavení Azure včetně credential=AzureCliCredential(), OpenAIChatClient, OpenAIChatCompletionClient a klienta pro embedding.
  • AzureOpenAI* Zastaralé obálky zachovávají své kompatibilní chování, takže stávající kód založený na obálkách se neřídí novými pravidly přednosti obecného klienta.

OpenAIChatClient

import os
from agent_framework.openai import OpenAIChatClient

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

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

Po (obecné openAI zůstane na OpenAI; předání explicitních vstupů Azure k vynucení směrování Azure):

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

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

Pokud vaše prostředí obsahuje jak OPENAI_*, tak AZURE_OPENAI_* hodnoty, auditujte jakoukoli obecnou konstrukci klienta a výslovně určete poskytovatele. Ukázky poskytovatelů Azure se z tohoto důvodu aktualizovaly tak, aby předávaly vstupy Azure přímo.

Embeddingy Azure nyní sledují stejný model směrování:

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

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

Pro vkládací scénáře mapujte:

  • AzureOpenAIEmbeddingClientOpenAIEmbeddingClient
  • AZURE_OPENAI_EMBEDDING_MODELmodel
  • OPENAI_EMBEDDING_MODEL zůstává proměnnou prostředí pro vkládání na straně OpenAI.

python-1.0.0rc5 / python-1.0.0b260319 (19. března 2026)

🔴 Potrubí klienta chatu přeuspořádáno: FunctionInvocation nyní obklopuje ChatMiddleware

PR:#4746

Pořadí v pipeline ChatClient se změnilo. FunctionInvocation je nyní nejkrajnější vrstvou a zabalí ChatMiddlewarese, což znamená, že middleware chatu běží pro každé volání modelu (včetně každé iterace smyčky volání nástroje) místo toho, aby běžel jednou kolem celou sekvencí volání funkce.

Původní objednávka pipeline:

ChatMiddleware → FunctionInvocation → RawChatClient

Nové pořadí kanálů:

FunctionInvocation → ChatMiddleware → ChatTelemetry → RawChatClient

Pokud máte vlastní middleware pro chat, který předpokládal, že běží pouze jednou při každém volání agenta (obalující celou smyčku volání nástroje), aktualizujte ho tak, aby byl bezpečný pro opakované spuštění. Pro každý jednotlivý požadavek LLM se nyní vyvolá middleware pro chat, včetně těch, které odesílají výsledky nástrojů zpět do modelu.

Navíc ChatTelemetry je teď oddělená vrstva od ChatMiddleware v potrubí, běžící nejblíže k RawChatClient.

🔴 Veřejné moduly runtime kwargs rozdělené do explicitních kontejnerů

PR:#4581

Veřejný agent Pythonu a rozhraní API chatu už nepovažují univerzální veřejné **kwargs přesměrování za primární mechanismus runtime dat. Hodnoty modulu runtime jsou teď rozdělené podle účelu:

  • Použijte function_invocation_kwargs pro hodnoty, které by měly vidět jenom nástroje nebo funkční middleware.
  • Používá se client_kwargs pro konfiguraci kwargs na úrovni klienta a middlewaru klienta.
  • Přístup k datům o nástroji nebo modulu runtime prostřednictvím FunctionInvocationContext (ctx.kwargs a ctx.session).
  • Definujte nástroje s vloženým parametrem kontextu místo **kwargs; vložené parametry kontextu nejsou zobrazeny ve schématu, které model vidí.
  • Při delegování na dílčího agenta použijte agent.as_tool(propagate_session=True), pokud podřízený agent musí sdílet relaci volajícího.

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",
    },
)

Pokud implementujete vlastní veřejné run() nebo get_response() metody, přidejte function_invocation_kwargs a client_kwargs do signatur těchto metod. U nástrojů upřednostňujte parametr anotovaný jako FunctionInvocationContext – může mít název ctx, contextnebo jakýkoli jiný název s poznámkami. Pokud zadáte explicitní model schématu nebo vstupu, rozpozná se také prostý nenotovaný parametr s názvem ctx . Stejný kontextový objekt je k dispozici pro middleware funkcí a je tam, kde je nyní aktivní funkce modulu runtime kwargs a stav relace. Definice nástrojů, které stále spoléhají pouze na **kwargs, využívají starou cestu kompatibility a budou odebrány.


python-1.0.0rc4 / python-1.0.0b260311 (11. března 2026)

Poznámky k verzi:python-1.0.0rc4

🔴 Integrace Azure AI nyní cílí na azure-ai-projects GA 2.0

PR:#4536

Integrace Azure AI v Pythonu teď předpokládají plochu GA 2.0 azure-ai-projects .

  • Podporovaný rozsah závislostí je nyní azure-ai-projects>=2.0.0,<3.0.
  • foundry_features funkce passthrough byla odstraněna z vytváření agenta Azure AI.
  • Chování ve verzi Preview se teď používá allow_preview=True u podporovaných klientů nebo poskytovatelů.
  • Odstraněny byly smíšené beta/GA kompatibilní mezivrstvy, proto aktualizujte všechny importy a názvy typů na rozhraní sady SDK verze 2.0 GA.

🔴 Obslužné rutiny nástrojů GitHub Copilot teď používají ToolInvocation / ToolResult a Python 3.11 nebo novější

PR:#4551

agent-framework-github-copilot nyní sleduje github-copilot-sdk>=0.1.32.

  • Obslužné rutiny nástrojů přijímají ToolInvocation dataclass místo nezpracovaného dictsouboru .
  • Vraťte ToolResult pomocí snake_case polí, jako jsou result_type a text_result_for_llm.
  • Balíček agent-framework-github-copilot teď vyžaduje Python 3.11 nebo novější.

Before:

from typing import Any


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

After:

from copilot.tools import ToolInvocation, ToolResult


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

python-1.0.0rc3 / python-1.0.0b260304 (4. března 2026)

Poznámky k verzi:python-1.0.0rc3

🔴 Poskytovatel dovedností dokončil práci související s definovaným kódem Skill / SkillResource

PR:#4387

Dovednosti agenta Pythonu teď podporují kódově definované Skill a SkillResource objekty společně se souborovými dovednostmi a povrch veřejného poskytovatele je standardizovaný na SkillsProvider.

  • Pokud stále importujete starší verzi Preview nebo interní FileAgentSkillsProvider, přepněte na SkillsProvider.
  • Vyhledávání prostředků založené na souborech už nevyužívá zpětné odkazy v SKILL.md. Prostředky se místo toho zjišťují z adresáře dovedností.

Pokud jste používali náhledový nebo interní kód importující FileAgentSkillsProvider, přepněte na veřejné rozhraní:

from agent_framework import Skill, SkillResource, SkillsProvider

python-1.0.0rc2 / python-1.0.0b260226 (26. února 2026)

Poznámky k verzi:python-1.0.0rc2

🔴Deklarativní pracovní postupy nahrazují InvokeToolInvokeFunctionTool

PR:#3716

Deklarativní pracovní postupy Pythonu už nepoužívají starý InvokeTool druh akce. Nahraďte ho InvokeFunctionTool a registrujte Python funkce s 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. února 2026)

Vydání:agent-framework-core a agent-framework-azure-ai byly povýšeny na 1.0.0rc1. Všechny ostatní balíčky byly aktualizovány na 1.0.0b260219.

🔴 Jednotné zpracování přihlašovacích údajů Azure napříč všemi balíčky

PR:#4088

Parametry ad_token, ad_token_provider a pomocné rutiny get_entra_auth_token byly nahrazeny jednotným parametrem credential ve všech balíčcích Pythonu týkajících se Azure. Nový přístup se používá azure.identity.get_bearer_token_provider k automatickému ukládání tokenů do mezipaměti a aktualizaci.

Ovlivněné třídy:AzureOpenAIChatClient, AzureOpenAIResponsesClient, , AzureOpenAIAssistantsClient, AzureAIClientAzureAIAgentClient, AzureAIProjectAgentProviderAzureAIAgentsProviderAzureAISearchContextProvider, , PurviewClientPurviewPolicyMiddleware, . 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(),
    ...
)

Parametr credential přijímá TokenCredential, AsyncTokenCredentialnebo volatelného zprostředkovatele tokenu. Ukládání tokenů do mezipaměti a aktualizace se zpracovává automaticky.


🔴 Přepracovaná hierarchie výjimek Pythonu

PR:#4082

Plochá ServiceException rodina byla nahrazena výjimkovými větvemi omezenými na doménu pod jediným AgentFrameworkException kořenem. Díky tomu mají volající přesné except cíle a jasně definovaný význam chyb.

Nová hierarchie:

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

Odebrané výjimky: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
    ...

Poznámka:

Chyby ověřování inicializace nyní používají integrované ValueError/TypeError místo vlastních výjimek. Výjimky rozhraní Agent Framework jsou vyhrazené pro selhání na úrovni domény.


🔴 Stav zprostředkovatele vymezený podle source_id

PR:#3995

Háky zprostředkovatele teď místo úplného stavu relace obdrží slovník stavu s oborem zprostředkovatele (state.setdefault(provider.source_id, {})). To znamená, že implementace poskytovatelů, které dříve přistupovaly ke vnořenému stavu přes state[self.source_id]["key"], nyní musí přistupovat přímo přes state["key"].

Kromě toho se InMemoryHistoryProvider výchozí source_id nastavení změnilo z "memory" na "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")

🔴 Zarovnání zpráv psaných v chatu/agentem (run vs get_response)

PR:#3920

Implementace chatovacího klienta get_response nyní konzistentně přijímají Sequence[Message]. agent.run(...) zůstává flexibilní (str, , Content, Messagenebo sekvence těchto) a normalizuje vstupy před voláním klientů chatu.

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] Obecné nastavení bylo odebráno pro propustnost schématu.

PR:#3907

Cesty nástrojů založené na schématu už nespoléhají na předchozí FunctionTool[Any] obecné chování. Použijte FunctionTool přímo a zadejte buď pydantic BaseModel, nebo explicitní schémata tam, kde je to potřeba (například pomocí @tool(schema=...)).

Before:

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

After:

placeholder: FunctionTool = FunctionTool(...)

🔴 Pydantické nastavení nahrazeno TypedDict + load_settings()

PR:#3843, #4032

Třída založená na pydantic-settings byla AFBaseSettings nahrazena lehkým systémem nastavení na bázi funkcí pomocí TypedDict a load_settings(). Závislost pydantic-settings byla zcela odebrána.

Všechny třídy nastavení (např OpenAISettings. , AzureOpenAISettings, AnthropicSettings) jsou nyní TypedDict definice a hodnoty nastavení jsou přístupné prostřednictvím syntaxe slovníku místo přístupu k atributům.

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 import load_settings
from agent_framework.openai import OpenAISettings

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

Důležité

Agent Framework nenačítá hodnoty ze .env souborů automaticky. K načítání musíte explicitně vyjádřit výslovný souhlas .env :

  • Volání load_dotenv() z balíčku python-dotenv na začátku vaší aplikace
  • Předání env_file_path=".env" do load_settings()
  • Nastavení proměnných prostředí přímo v shellu nebo integrovaném vývojovém prostředí (IDE)

Pořadí load_settings vyhodnocení je: explicitní přepsání → .env hodnot souboru (pokud je k dispozici env_file_path) → proměnné prostředí → výchozí hodnoty. Pokud zadáte env_file_path, soubor musí existovat nebo je vyvolán FileNotFoundError .


🟡 Oprava předání pracovního postupu modelu a serializace historie

PR:#4083

Opravuje více selhání při použití modelů odůvodnění (např. gpt-5-mini, gpt-5.2) v pracovních postupech s více agenty. Položky odůvodnění z API odpovědí jsou nyní správně serializovány a jsou zahrnuty pouze v historii, pokud je také přítomen function_call, což brání chybám rozhraní API. Šifrovaný nebo skrytý obsah odůvodnění je nyní správně vygenerován a summary formát pole je opraven. Zároveň se service_session_id vymaže při předání, aby se zabránilo úniku stavu mezi agenty.


🟡Bedrock přidán do core[all] a výchozí volby nástrojů byly opraveny

PR:#3953

Amazon Bedrock je nyní součástí agent-framework-core[all] extras a je k dispozici prostřednictvím agent_framework.amazon lazy import surface. Bylo také opraveno chování při volbě nástroje: Nenastavené hodnoty volby nástroje nyní zůstávají nenastavené, takže poskytovatelé používají výchozí hodnoty služby, zatímco explicitně nastavené hodnoty jsou zachovány.

from agent_framework.amazon import BedrockChatClient

🟡 AzureAIClient upozorňoval na nepodporované přepsání nastavení běhového prostředí

PR:#3919

V době této změny bylo zaznamenáno varování, když se běhové prostředí AzureAIClient nebo tools lišilo od konfigurace v době vytvoření agenta. Tento povrch Pythonu byl od té doby odstraněn. Pro současný kód Pythonu použijte FoundryChatClient, když potřebujete konfiguraci nástroje nebo prostředí runtime vlastněné aplikací, nebo OpenAIChatClient pro scénáře Responses API pro přímé použití, které vyžadují dynamické úpravy.


🟡 workflow.as_agent() Místní historie se teď nastavuje jako výchozí, když poskytovatelé nejsou uvedeni.

PR:#3918

Při vytváření workflow.as_agent() bez context_providers se nyní ve výchozím nastavení přidává InMemoryHistoryProvider("memory"). Pokud jsou explicitně zadáni zprostředkovatelé kontextu, zůstane tento seznam beze změny.

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

🟡 Kontext trasování OpenTelemetry je přenášen do požadavků MCP.

PR:#3780

Při instalaci OpenTelemetry se kontext trasování (např. W3C traceparent) automaticky vloží do požadavků MCP prostřednictvím params._meta. To umožňuje kompletní end-to-end distribuované trasování napříč voláními mezi agenty a serverem MCP. Není potřeba měnit žádný kód – toto je doplňkové chování, které se aktivuje, když existuje platný kontext rozsahu.


🟡 Podpora trvalých pracovních postupů pro Azure Functions

PR:#3630

Balíček agent-framework-azurefunctions teď podporuje spouštění Workflow grafů ve službě Azure Durable Functions. Předáním parametru do workflow se automaticky zaregistrují entity agentů, funkce aktivit a koncové body HTTP.

from agent_framework.azure 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

Podporuje vzory fan-out/fan-in, shared state a human-in-the-loop s konfigurovatelným časovým limitem a automatickým zamítnutím při vypršení platnosti.


python-1.0.0b260212 (12. února 2026)

Poznámky k verzi:python-1.0.0b260212

🔴 Hosted*Tool třídy nahrazené klientskými get_*_tool() metodami

PR:#3634

Hostované třídy nástrojů byly odebrány ve prospěch továrních metod v kontextu klienta. Díky tomu je dostupnost nástroje explicitní podle poskytovatele.

Odebraná třída 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 OpenAIChatClient

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

🔴 Finalizovaný kanál zprostředkovatele relace/kontextu (AgentSession, context_providers)

PR:#3850

Migrace relace Pythonu a poskytovatele kontextu byla dokončena. AgentThread a staré typy zprostředkovatele kontextu byly odebrány.

  • AgentThreadAgentSession
  • agent.get_new_thread()agent.create_session()
  • agent.get_new_thread(service_thread_id=...)agent.get_session(service_session_id=...)
  • context_provider= / chat_message_store_factory= vzory jsou nahrazeny context_providers=[...]
  • ChatMessageStore byla odebrána. Použijte HistoryProvider (nebo InMemoryHistoryProvider pro výchozí variantu v paměti), oba exportované z agent_framework. Pokud není předán žádný zprostředkovatel kontextu, agent automaticky vloží InMemoryHistoryProvider.

Before:

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

After:

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

🔴 Byl refaktorován model kontrolního bodu a chování úložiště

PR:#3744

Interní kontrolní body byly přepracovány, což má vliv na trvalou kompatibilitu kontrolních bodů a vlastní implementace úložiště:

  • WorkflowCheckpoint nyní ukládá živé objekty (serializace probíhá v úložišti kontrolních bodů).
  • FileCheckpointStorage nyní používá serializaci pickle
  • workflow_id byla odebrána a previous_checkpoint_id byla přidána
  • Byly odstraněny zastaralé háčky kontrolních bodů

Pokud zachováte kontrolní body mezi verzemi, znovu vygenerujete nebo migrujete existující artefakty kontrolních bodů před obnovením pracovních postupů.


🟡 Koncové body projektu Foundry se původně objevily prostřednictvím AzureOpenAIResponsesClient

PR:#3814

Tato funkce preview původně umožňovala AzureOpenAIResponsesClient připojení ke koncovým bodům projektu Foundry. Doporučení Pythonu používají FoundryChatClient pro inferenci projektů Foundry nebo FoundryAgent pro agenty Foundry spravované službou namísto odstraněných AzureOpenAIResponsesClient.

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

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

🔴 Middleware call_next už nepřijímá context

PR:#3829

Pokračování middlewaru teď nepřijímá žádné argumenty. Pokud váš middleware stále volá call_next(context), aktualizujte ho na 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. února 2026)

Poznámky k verzi:python-1.0.0b260210

🔴 Metody vytváření pracovních postupů odebrané z WorkflowBuilder

PR:#3781

register_executor() a register_agent() byly odebrány z WorkflowBuilder. Všechny metody tvůrce (add_edge, , add_fan_out_edges, add_fan_in_edgesadd_chain, add_switch_case_edge_group, add_multi_selection_edge_group) a start_executor již nepřijímají názvy řetězců – vyžadují exekutor nebo instance agenta přímo.

Pro izolaci stavu zabalte instanciaci exekutora/agenta a sestavení pracovního postupu uvnitř pomocné metody, aby každé volání vytvářelo nové instance.

WorkflowBuilder s vykonavateli

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 s agenty

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()

Izolace stavu pomocí pomocných metod

Pro pracovní postupy, které potřebují izolovaný stav pro každé volání, zabalte konstrukci do pomocné funkce.

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 přejmenováno na Agent, ChatMessage přejmenováno na Message

PR:#3747

Základní typy Pythonu byly zjednodušeny odebráním redundantní Chat předpony. Nejsou k dispozici žádné aliasy zpětné kompatibility.

Před Po
ChatAgent Agent
RawChatAgent RawAgent
ChatMessage Message
ChatClientProtocol SupportsChatGetResponse

Aktualizace importů

Before:

from agent_framework import ChatAgent, ChatMessage

After:

from agent_framework import Agent, Message

Odkazy na typy aktualizací

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")])

Poznámka:

ChatClient, ChatResponsea ChatOptionsnejsou přejmenovány touto změnou.


🔴 Typy rozhraní API pro kontrolu aktualizací napříč modely odpovědí a zpráv

PR:#3647

Tato verze zahrnuje zásadní a rozsáhlé přepracování typování zpráv a odpovědí a pomocných rozhraní API.

  • Role a FinishReason nyní jsou NewType obalové prvky nad str s údaji RoleLiteral/FinishReasonLiteral o známých hodnotách. Považovat je za řetězce (bez .value použití).
  • Message konstrukce je standardizována na Message(role, contents=[...]); řetězce v contents jsou automaticky převedeny na textový obsah.
  • ChatResponse a AgentResponse konstruktory se nyní zaměřují na messages= (jednoduché Message nebo sekvence). Starší využití text= konstruktora bylo odstraněno z odpovědí.
  • ChatResponseUpdate a AgentResponseUpdate již nepřijímá text=; používat contents=[Content.from_text(...)].
  • Byly zjednodušeny názvy pomocníků pro kombinování aktualizací.
  • try_parse_value byl odebrán z ChatResponse a AgentResponse.

Pomocná metoda přejmenování

Před Po
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(...)

Aktualizace konstrukce aktualizace odpovědí

Before:

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

After:

from agent_framework import AgentResponseUpdate, Content

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

Nahradit try_parse_value s try/except na .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}")

🔴 run / get_response Jednotný model a ResponseStream využití

PR:#3379

Rozhraní API Pythonu byla konsolidována kolem agent.run(...) a client.get_response(...), přičemž streamování bylo reprezentováno 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)

🔴 Přejmenování základního kontextu nebo typu protokolu

Žádosti o přijetí změn:#3714, #3717

Před Po
AgentRunContext AgentContext
AgentProtocol SupportsAgentRun

Aktualizujte importy a typové anotace odpovídajícím způsobem.


🔴 Parametr pokračování middlewaru přejmenovaný na call_next

PR:#3735

Podpisy middlewaru by teď měly používat call_next místo 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)

🔴 Názvy TypeVar standardizované (TNameNameT)

PR:#3770

Základ kódu se teď řídí konzistentním stylem pojmenování TypeVar, kde se používá přípona T .

Before:

TMessage = TypeVar("TMessage")

After:

MessageT = TypeVar("MessageT")

Pokud udržujete vlastní obálky kolem obecných typů frameworku, zarovnejte místní názvy TypeVar s novou konvencí, aby se snížily změny v anotacích.


🔴 Workflow-as-agent výstup a změny ve streamování

PR:#3649

workflow.as_agent() chování bylo aktualizováno, aby výstup a streamování odpovídaly standardním vzorům odpovědí agentů. Zkontrolujte uživatele, kteří používají agentové workflow závislé na zastaralém zpracování výstupů nebo aktualizací, a aktualizujte je na aktuální tok AgentResponse/AgentResponseUpdate.


🔴 Metody fluent builderu přesunuté na parametry konstruktoru

PR:#3693

Fluentní metody s jednou konfigurací napříč 6 buildery (WorkflowBuilder, SequentialBuilder, ConcurrentBuilder, GroupChatBuilder, MagenticBuilder, HandoffBuilder) byly převedeny na parametry konstruktoru. Metody Fluent, které byly jedinou cestou konfigurace pro nastavení, jsou odstraněny ve prospěch použití argumentů konstruktoru.

WorkflowBuilder

set_start_executor(), with_checkpointing()a with_output_from() jsou odebrány. Místo toho použijte parametry konstruktoru.

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()a with_intermediate_outputs() jsou odebrány. Místo toho použijte parametry konstruktoru.

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(), a with_intermediate_outputs() jsou odebrány. Místo toho použijte parametry konstruktoru.

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()a with_intermediate_outputs() jsou odebrány. Místo toho použijte parametry konstruktoru.

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() a with_termination_condition() jsou odebrány. Místo toho použijte parametry konstruktoru.

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()
)

Změny validace

  • WorkflowBuilder nyní vyžaduje start_executor jako argument konstruktoru (dříve nastavený pomocí fluent metody).
  • SequentialBuilder, ConcurrentBuilder, GroupChatBuilder a MagenticBuilder nyní vyžadují buď participants, nebo participant_factories při konstrukci – nevynechání žádného z nich vyvolá ValueError.

Poznámka:

HandoffBuilder již přijata participants/participant_factories jako parametry konstruktoru a nebyla v tomto ohledu změněna.


🔴Události pracovního postupu sjednocené do jednoho WorkflowEvent s diskriminátorem type

PR:#3690

Všechny jednotlivé podtřídy událostí pracovního postupu byly nahrazeny jedinou obecnou WorkflowEvent[DataT] třídou. Místo použití isinstance() kontrol k identifikaci typů událostí teď event.type řetězcový literál zkontrolujete (např. "output", "request_info", "status"). To se řídí stejným vzorem Content jako sloučení tříd z python-1.0.0b260123.

Odebrané třídy událostí

Následující exportované podtřídy událostí již neexistují:

Stará třída Nová event.type hodnota
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"

Aktualizace importů

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

Aktualizace kontrol typů událostí

Before:

async for event in workflow.run(input_message, stream=True):
    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(input_message, stream=True):
    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}")

Streamování s využitím 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("Write a blog post about AI agents.", stream=True):
    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}")

Datové anotace

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

Poznámka:

WorkflowEvent je obecný (WorkflowEvent[DataT]), ale pro kolekce smíšených událostí použijte WorkflowEvent[Any] nebo neparametrizovanou WorkflowEvent.


🔴 workflow.send_responses* Odstraněn; Použít workflow.run(responses=...)

PR:#3720

send_responses() a send_responses_streaming() byly odebrány z Workflow. Pokračujte pozastavené pracovní postupy předáním odpovědí přímo do 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],
    stream=True,
):
    ...

🔴 SharedState přejmenováno na State; rozhraní API stavu pracovního postupu jsou synchronní

PR:#3667

Stavová rozhraní API již nevyžadují await, a pojmenování bylo standardizováno.

Před Po
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

🔴 Tvůrci orchestrace se přesunuli do agent_framework.orchestrations

PR:#3685

Tvůrci orchestrace jsou teď ve vyhrazeném prostoru názvů balíčků.

Before:

from agent_framework import SequentialBuilder, GroupChatBuilder

After:

from agent_framework.orchestrations import SequentialBuilder, GroupChatBuilder

🟡 Dlouhotrvající odpovědi na pozadí a tokeny pokračování

PR:#3808

Odpovědi na pozadí jsou nyní podporovány pro běhy agenta Python options={"background": True} a 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})

🟡 Typy náhledu zprostředkovatele relací/kontextu přidané vedle sebe

PR:#3763

Nové typy kanálů relací/kontextu byly zavedeny spolu se staršími rozhraními API pro postupnou migraci, včetně SessionContext a BaseContextProvider.


🟡 Streamování interpretu kódu teď zahrnuje přírůstkové změny kódu.

PR:#3775

Streamovací interpret kódu nyní poskytuje rozdílové aktualizace kódu ve streamovaném obsahu, takže uživatelská rozhraní mohou postupně vykreslovat vygenerovaný kód.


🟡 @tool podporuje explicitní zpracování schématu.

PR:#3734

Definice nástrojů teď můžou použít explicitní zpracování schématu, když odvozený výstup schématu vyžaduje přizpůsobení.


python-1.0.0b260130 (30. ledna 2026)

Poznámky k verzi:python-1.0.0b260130

🟡 ChatOptions a ChatResponse/AgentResponse jsou nyní generické vůči formátu odpovědi

PR:#3305

ChatOptions, ChatResponsea AgentResponse jsou nyní obecné typy parametrizované podle typu formátu odpovědi. To umožňuje lepší odvození typů při použití strukturovaných výstupů s 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!)

Návod

Jedná se o vylepšení, které nezpůsobuje přerušení. Stávající kód bez parametrů typu nadále funguje. Pro možnosti a odpověď nemusíte zadávat typy ve výše uvedeném fragmentu kódu. jsou zde uvedeny pro přehlednost.


🟡 BaseAgent Byla přidána podpora pro sadu Claude Agent SDK

PR:#3509

Sada Python SDK nyní obsahuje BaseAgent implementaci sady Claude Agent SDK, která umožňuje prvotřídní použití založené na adaptérech v rozhraní Agent Framework.


python-1.0.0b260128 (28. ledna 2026)

Poznámky k verzi:python-1.0.0b260128

🔴 AIFunction přejmenováno na FunctionTool a @ai_function přejmenováno na @tool

PR:#3413

Třída a dekorátor byly přejmenovány kvůli přehlednosti a konzistenci s terminologií v odvětví.

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 import FunctionTool, tool

@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)

🔴 Model továrny přidaný do GroupChat a Magentic; Přejmenování rozhraní API

PR:#3224

Přidání objektu pro vytváření účastníků a orchestrátoru do skupinového chatu Zahrnuje také přejmenování:

  • with_standard_managerwith_manager
  • participant_factoriesregister_participant

Before:

from agent_framework.workflows import MagenticBuilder

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

After:

from agent_framework.orchestrations import MagenticBuilder

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

🔴 Github přejmenováno na GitHub

PR:#3486

Názvy tříd a balíčků byly aktualizovány tak, aby používaly správné písmena.

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. ledna 2026)

Poznámky k verzi:python-1.0.0b260127

🟡 BaseAgent Byla přidána podpora pro sadu GitHub Copilot SDK

PR:#3404

Sada Python SDK teď obsahuje BaseAgent implementaci integrace sady GitHub Copilot SDK.


python-1.0.0b260123 (23. ledna 2026)

Poznámky k verzi:python-1.0.0b260123

🔴 Typy obsahu zjednodušené na jednu třídu s konstruktory třídy (classmethod)

PR:#3252

Nahradili jsme všechny staré typy obsahu, které byly odvozeny z BaseContent, jedinou třídou Content s třídními metodami pro vytvoření konkrétních typů.

Úplné referenční informace k migraci

Starý typ Nová metoda
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(...)

Další nové metody (žádný přímý předchůdce):

  • Content.from_text_reasoning(...) — Obsah týkající se uvažování/myšlení
  • Content.from_hosted_vector_store(...) — Pro odkazy na úložiště vektorů
  • Content.from_usage(...) — Informace o využití/tokenu
  • Content.from_mcp_server_tool_call(...) / Content.from_mcp_server_tool_result(...) — Pro serverové nástroje MCP
  • Content.from_code_interpreter_tool_call(...) / Content.from_code_interpreter_tool_result(...) — Pro interpret kódu
  • Content.from_image_generation_tool_call(...) / Content.from_image_generation_tool_result(...) — Pro generování imagí

Kontrola typů

isinstance() Místo kontrol použijte type vlastnost:

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 import Content

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

Základní příklad

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 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")

🔴 Typy anotací zjednodušené na Annotation a TextSpanRegionTypedDicts

PR:#3252

Nahradili jsme typy poznámek založené na třídách jednoduššími TypedDict definicemi.

Starý typ Nový typ
CitationAnnotation (třída) Annotation (TypedDict with type="citation")
BaseAnnotation (třída) Annotation (TypedDict)
TextSpanRegion (třída s SerializationMixin) TextSpanRegion (TypedDict)
Annotations (alias typu) Annotation
AnnotatedRegions (alias typu) 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"
}

Poznámka:

Protože Annotation a TextSpanRegion jsou teď TypedDicty, vytvoříte je jako slovníky, nikoli jako instance třídy.


🔴 response_format Chyby ověřování jsou teď viditelné uživatelům.

PR:#3274

ChatResponse.value a AgentResponse.value nyní vyvolají ValidationError , pokud se ověření schématu nezdaří, místo toho, aby vracely None beze slova.

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 zjednodušená logika spouštění; Opravy klienta MCP a Anthropic

PR:#3322

Definice run metody a její chování v rámci AG-UI bylo zjednodušené.

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 AgentFrameworkAgent

agui_agent = AgentFrameworkAgent(agent=agent)
async for event in agui_agent.run(request):
    ...

🟡 Klient Anthropic teď podporuje response_format strukturované výstupy.

PR:#3301

Teď můžete použít strukturované analýzy výstupu s klienty Anthropic prostřednictvím response_format, podobně jako OpenAI a klienti Azure.


🟡 Rozšířená konfigurace Azure AI (reasoning, rai_config)

Žádosti o přijetí změn:#3403, #3265

Podpora Azure AI byla rozšířena o podporu konfigurace uvažování a rai_config při vytváření agenta.


python-1.0.0b260116 (16. ledna 2026)

Poznámky k verzi:python-1.0.0b260116

🔴 create_agent přejmenováno na as_agent

PR:#3249

Byla přejmenována metoda pro lepší srozumitelnost vzhledem ke svému účelu.

Before:

from agent_framework.core import ChatClient

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

After:

from agent_framework.openai import OpenAIChatClient

client = OpenAIChatClient(...)
agent = client.as_agent()

🔴 WorkflowOutputEvent.source_executor_id přejmenováno na executor_id

PR:#3166

Vlastnost byla přejmenována pro konzistenci rozhraní API.

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=True):
    if event.type == "output":
        executor = event.executor_id

🟡 AG-UI podporuje kontinuitu relací spravovaných službami

PR:#3136

AG-UI teď zachovává identitu konverzací spravovanou službou (například relace/vlákna spravovaná službou Foundry), aby se zachovala kontinuita více procesů.


python-1.0.0b260114 (14. ledna 2026)

Poznámky k verzi:python-1.0.0b260114

🔴 Refaktoring orchestrací

PR:#3023

Rozsáhlé refaktorování a zjednodušení orchestrací v pracovních postupech Agent Frameworku:

  • Skupinový chat: Rozdělit exekutor orchestrátoru na vyhrazeného agenta a na funkce (BaseGroupChatOrchestrator, GroupChatOrchestrator, AgentBasedGroupChatOrchestrator). Zjednodušená na hvězdicovou topologii s modelem vysílání.
  • Předání: Odebrání podpory jedné úrovně, koordinátoru a vlastního vykonavatele. Přesun na model vysílání s HandoffAgentExecutor.
  • Sekvenční a konkurenční: Zjednodušený mechanismus pro informace o žádostech, který spoléhá na dílčí pracovní postupy pomocí AgentApprovalExecutor a AgentRequestInfoExecutor.

Before:

from agent_framework.workflows import GroupChat, HandoffOrchestrator

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

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

After:

from agent_framework.orchestrations import (
    GroupChatOrchestrator,
    HandoffAgentExecutor,
)

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

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

🔴 Možnosti představené jako TypedDict a Generic

PR:#3140

Možnosti jsou nyní zadávány pomocí TypedDict pro lepší zabezpečení typů a automatické doplňování v integrovaném vývojovém prostředí (IDE).

📖 Úplné pokyny k migraci najdete v průvodci typovanými možnostmi.

Before:

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

After:

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

🔴 display_name Odstraněn; context_provider na jednotné číslo; middleware musí být seznam

PR:#3139

  • display_name parametr odebraný z agentů
  • context_providers zůstává stávajícím parametrem pořadí množného čísla pro poskytovatele.
  • middleware teď vyžaduje seznam (už nepřijímá jednu instanci).
  • AggregateContextProvider odebráno z kódu (v případě potřeby použijte ukázkovou implementaci).

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 import Agent

agent = Agent(
    name="my-agent",  # display_name removed
    client=client,
    context_providers=[provider1, provider2],
    middleware=[my_middleware],  # must be a list now
)

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

🔴 AgentRunResponse* přejmenováno na AgentResponse*

PR:#3207

AgentRunResponse a AgentRunResponseUpdate byly přejmenovány na AgentResponse a AgentResponseUpdate.

Before:

from agent_framework import AgentRunResponse, AgentRunResponseUpdate

After:

from agent_framework import AgentResponse, AgentResponseUpdate

🟡 Přidán modul runtime deklarativního pracovního postupu pro pracovní postupy definované v YAML

PR:#2815

Byl přidán modul runtime založený na grafu pro provádění deklarativních pracovních postupů YAML, který umožňuje orchestraci s více agenty bez vlastního kódu modulu runtime.


🟡 Vylepšení načítání a spolehlivosti MCP

PR:#3154

Integrace MCP získaly lepší chování při ztrátě připojení, podporu stránkování při načítání a možnosti řízení reprezentace.


🟡 Foundry A2ATool teď podporuje připojení bez cílové adresy URL.

PR:#3127

A2ATool teď dokáže vyřešit připojení A2A s podporou Foundry prostřednictvím metadat připojení projektu i v případě, že není nakonfigurovaná přímá cílová adresa URL.


python-1.0.0b260107 (7. ledna 2026)

Poznámky k verzi:python-1.0.0b260107

V této verzi nejsou žádné významné změny.


python-1.0.0b260106 (6. ledna 2026)

Poznámky k verzi:python-1.0.0b260106

V této verzi nejsou žádné významné změny.


Souhrnná tabulka

Vydání Poznámky k vydání Typ Změna PR
1.8.0 Poznámky 🔴 Lámání github-copilot-sdk aktualizováno na verzi 1.0.0: SubprocessConfig odebráno (použijte RuntimeConnection + kwargs), cesty importu byly přesunuty do copilot.session_events, copilot_homebase_directory, obslužné funkce oprávnění používají konkrétní typy rozhodnutí. #6292
1.8.0 Poznámky 🟡 Vylepšení Progresivní expozice nástrojů prostřednictvím FunctionInvocationContext #6233
1.8.0 Poznámky 🟡 Vylepšení Zjišťování dovedností na základě MCP (McpSkillsSource) #6169
1.8.0 Poznámky 🟡 Vylepšení Nativní podpora strukturovaného výstupu v Bedrocku pomocí rozhraní Converse API #6052
1.8.0 Poznámky 🟡 Vylepšení Integrace Foundry s adaptivními evaluacemi (generování hodnoticích rubrik) #6101
1.8.0 Poznámky 🟡 Vylepšení Klientský balíček Mistral AI embedding #5480
1.8.0 Poznámky 🟡 Vylepšení agent-framework-declarative povýšeno na verzi Candidate #6256
1.7.0 Poznámky 🔴 Lámání Deklarativní: akce pouze pro Python byly odebrány a druhy aliasů byly přejmenovány na kanonické názvy v jazyce C# #6126
1.7.0 Poznámky 🟡 Vylepšení HarnessAgent a poskytovatel pro agenty na pozadí přidán #6041
1.7.0 Poznámky 🟡 Vylepšení A2AAgentSession s odkazovanými ID úkolů a podporou vyžadovanou vstupem #5980
1.6.0 Poznámky 🔴 Lámání Instrumentování je ve výchozím nastavení zapnuto pro balíčky core a foundry. #5865
1.6.0 Poznámky 🟡 Vylepšení Nástroj Shell s podporou místního spouštění a spouštění Dockeru #5664
1.6.0 Poznámky 🟡 Vylepšení Nový agent-framework-monty balíček poskytovatele CodeAct #5915
1.4.0 Poznámky 🔴 Lámání [Experimentální dovednosti] Uvést vyhledávání složek dovedností souborů do souladu se specifikací agentskills.io #5807
1.4.0 Poznámky 🔴 Lámání [Experimentální dovednosti] Extrahování metadat specifikace dovedností do SkillFrontmatter #5775
1.4.0 Poznámky 🔴 Lámání DevUI: Zpřísnění výchozího řízení přístupu a nastavení CORS #5740
1.4.0 Poznámky 🔴 Lámání A2A: Migrace na a2a-sdk v1.0 #5752
1.3.0 Poznámky 🔴 Lámání [Experimentální dovednosti] Přepracování dovedností agenta na vícezdrojovou architekturu #5584
1.3.0 Poznámky 🟡 Vylepšení ClassSkill pro definice dovedností založené na třídách s deklarativními metadaty #5678
1.3.0 Poznámky 🟡 Vylepšení Ochrana proti prompt injection pomocí řízení informačních toků #5331
1.3.0 Poznámky 🟡 Vylepšení github-copilot-sdk byl aktualizován na verzi 1.0.0b2 s instruction_directories a copilot_home #5665
1.2.2 Poznámky 🔴 Lámání Výstupy terminálu orchestrace standardizované jako AgentResponse; Workflow.as_agent() vrátí konečnou odpověď pouze #5301
1.2.2 Poznámky 🟡 Vylepšení Balíček zprostředkovatele kontextu Azure AI Content Understanding #4829
1.1.0 Poznámky 🔴 Lámání CosmosCheckpointStorage deserializace pickle je ve výchozím nastavení omezena #5200
1.1.0 Poznámky 🟡 Vylepšení GeminiChatClient Přidány #4847
1.1.0 Poznámky 🟡 Vylepšení Balíček Hyperlight CodeAct #5185
1.1.0 Poznámky 🟡 Vylepšení Podpora Foundry Toolboxes #5346
1.1.0 Poznámky 🟡 Vylepšení finish_reason na AgentResponse a AgentResponseUpdate #5211
1.0.1 Poznámky 🔴 Lámání FileCheckpointStorage omezená deserializace pickle (posílení zabezpečení) #4941
1.0.1 Poznámky 🔴 Lámání Oprava správy kontextu pracovního postupu předání #5136
1.0.1 Poznámky 🟡 Vylepšení Úložiště kontrolních bodů pro pracovní postupy ve službě Cosmos DB NoSQL #4916
1.0.0 Poznámky 🔴 Lámání Message(..., text=...) konstrukce je zcela odstraněna; vytvořte textové zprávy s použitím contents=[...] #5062
1.0.0 Poznámky 🟡 Vylepšení Vydané balíčky Pythonu (agent-framework, agent-framework-core, agent-framework-openai, agent-framework-foundry) už nevyžadují --pre; beta konektory však stále vyžadují. #5062
1.0.0 Poznámky 🔴 Lámání Vkládání Pythonu se přesunulo na agent_framework.foundry; použijte nastavení agent-framework-foundry, FoundryEmbeddingClient a FOUNDRY_MODELS_* místo odebraného balíčku agent-framework-azure-ai. #5056
1.0.0 Poznámky 🔴 Lámání workflow.run() nyní používá explicitní function_invocation_kwargs / client_kwargs, s globálním i cíleným nastavením podle ID exekutora #5010
1.0.0 Poznámky 🟡 Vylepšení GitHubCopilotAgent Nyní vyvolá kontextové hooky zprostředkovatele before_run / after_run a zahrnuje kontext výzvy přidaný zprostředkovatelem. #5013
1.0.0 Poznámky 🟡 Vylepšení Strukturovaný výstup v Pythonu teď přijímá mapování schématu JSON jako response_format, s parsovaným kódem JSON zobrazeným na response.value #5022
1.0.0rc6 Pouze žádost o přijetí změn 🔴 Lámání Zastaralá kompatibilitní rozhraní Azure/OpenAI byla odebrána; místo toho použijte OpenAI klienty od předního poskytovatele nebo klienty Foundry-Python. #4990
1.0.0rc6 Pouze žádost o přijetí změn 🔴 Lámání Refaktoring vedoucího zprostředkovatele: rozdělení agent-framework-openai, agent-framework-foundrya agent-framework-foundry-local; přejmenování klientů OpenAI; přesun Foundry do agent_framework.foundry; vyřazení cest kompatibility Azure AI a Asistentů #4818
1.0.0rc6 Pouze žádost o přijetí změn 🔴 Lámání agent-framework-core je nyní úmyslně štíhlý; nainstalujte explicitní balíčky zprostředkovatele, jako je agent-framework-openai nebo agent-framework-foundry, a nainstalujte mcp ručně pro nástroje MCP při minimálních instalacích, nebo použijte metabalíček agent-framework pro širší výchozí prostředí. #4904
1.0.0rc6 Pouze žádost o přijetí změn 🔴 Lámání Obecní agent_framework.openai klienti nyní preferují explicitní směrovací signály; OpenAI zůstane na OpenAI, když OPENAI_API_KEY je nastaven, a scénáře Azure by měly předávat explicitní vstupy směrování Azure, jako credential nebo azure_endpoint, a pak nakonfigurovat api_version #4925
1.0.0rc5 / 1.0.0b260318 Není k dispozici (naplánované) 🔴 Lámání Veřejné moduly runtime kwargs rozdělené do function_invocation_kwargs a client_kwargs; nástroje nyní používají FunctionInvocationContext / ctx.session #4581
1.0.0rc4 / 1.0.0b260311 Poznámky 🔴 Lámání Integrace Azure AI teď cílí na azure-ai-projects GA 2.0; foundry_features byla odebrána a allow_preview je volitelnou možností verze Preview. #4536
1.0.0rc4 / 1.0.0b260311 Poznámky 🔴 Lámání Integrace GitHub Copilotu se teď používá ToolInvocation / ToolResult, agent-framework-github-copilot vyžaduje Python 3.11 nebo novější. #4551
1.0.0rc3 / 1.0.0b260304 Poznámky 🔴 Lámání Poskytovatel dovedností přidá kód definovaný Skill / SkillResourcekódem; starší FileAgentSkillsProvider importy a odkazy na prostředky backtick se musí aktualizovat. #4387
1.0.0rc2 / 1.0.0b260226 Poznámky 🔴 Lámání Deklarativní pracovní postupy nahrazující InvokeToolInvokeFunctionTool a WorkflowFactory.register_tool() #3716
1.0.0rc1 / 1.0.0b260219 Poznámky 🔴 Lámání Jednotné zpracování přihlašovacích údajů Azure napříč balíčky Azure #4088
1.0.0rc1 / 1.0.0b260219 Poznámky 🔴 Lámání Přepracovaná hierarchie výjimek Pythonu v části AgentFrameworkException #4082
1.0.0rc1 / 1.0.0b260219 Poznámky 🔴 Lámání Stav zprostředkovatele je nyní definován v rámci source_id. #3995
1.0.0rc1 / 1.0.0b260219 Poznámky 🔴 Lámání Vlastní get_response() implementace musí přijmout Sequence[Message] #3920
1.0.0rc1 / 1.0.0b260219 Poznámky 🔴 Lámání FunctionTool[Any] Odebraná průchozí vrstva schématu #3907
1.0.0rc1 / 1.0.0b260219 Poznámky 🔴 Lámání Nastavení přesunuta z AFBaseSettings / pydantic-settings na TypedDict + load_settings() Č. 3843, č. 4032
1.0.0rc1 / 1.0.0b260219 Poznámky 🟡 Vylepšení Oprava předání pracovního postupu modelu a serializace historie #4083
1.0.0rc1 / 1.0.0b260219 Poznámky 🟡 Vylepšení Bedrock přidán do core[all]; opravena výchozí nastavení volby nástrojů #3953
1.0.0rc1 / 1.0.0b260219 Poznámky 🟡 Vylepšení AzureAIClient upozornění na nepodporované přepsání modulu runtime #3919
1.0.0rc1 / 1.0.0b260219 Poznámky 🟡 Vylepšení workflow.as_agent() vloží místní historii, když poskytovatelé nejsou nastaveni. #3918
1.0.0rc1 / 1.0.0b260219 Poznámky 🟡 Vylepšení Kontext trasování OpenTelemetry se přenáší do požadavků MCP. #3780
1.0.0rc1 / 1.0.0b260219 Poznámky 🟡 Vylepšení Přidání podpory trvalých pracovních postupů pro Azure Functions #3630
1.0.0b260212 Poznámky 🔴 Lámání Hosted*Tool třídy odebrané; vytváření hostovaných nástrojů prostřednictvím klientských get_*_tool() metod #3634
1.0.0b260212 Poznámky 🔴 Lámání Kanál zprostředkovatele relace/kontextu byl finalizován: AgentThread odebrán, používán AgentSession + context_providers #3850
1.0.0b260212 Poznámky 🔴 Lámání Refaktoring modelu kontrolního bodu/úložiště (workflow_id odstraněno, previous_checkpoint_id přidáno, změna chování úložiště) #3744
1.0.0b260212 Poznámky 🟡 Vylepšení AzureOpenAIResponsesClient lze vytvořit z koncového bodu projektu Foundry nebo AIProjectClient #3814
1.0.0b260212 Poznámky 🔴 Lámání Pokračování operací middlewaru již nepřijímá context; aktualizujte call_next(context) na call_next() #3829
1.0.0b260210 Poznámky 🔴 Lámání send_responses() / send_responses_streaming() Odstraněn; Použít workflow.run(responses=...) #3720
1.0.0b260210 Poznámky 🔴 Lámání SharedStateState; rozhraní API pro stav pracovního postupu jsou synchronní a pole stavu kontrolního bodu bylo přejmenováno #3667
1.0.0b260210 Poznámky 🔴 Lámání Tvůrci orchestrace přesunuti do agent_framework.orchestrations balíčku #3685
1.0.0b260210 Poznámky 🟡 Vylepšení Odpovědi na pozadí a continuation_token podpora přidaná do odpovědí agenta Pythonu #3808
1.0.0b260210 Poznámky 🟡 Vylepšení Typy náhledu relace/kontextu přidané vedle sebe (SessionContext, BaseContextProvider) #3763
1.0.0b260210 Poznámky 🟡 Vylepšení Aktualizace streamovaného interpreta kódu nyní zahrnují postupné změny kódu. #3775
1.0.0b260210 Poznámky 🟡 Vylepšení @tool Dekorátor přidá podporu explicitního zpracování schématu. #3734
1.0.0b260210 Poznámky 🔴 Lámání register_executor() / register_agent() odebrané z WorkflowBuilder; používejte instance přímo a používejte pomocné metody pro izolaci stavu. #3781
1.0.0b260210 Poznámky 🔴 Lámání ChatAgentAgent, ChatMessageMessage, RawChatAgentRawAgent, ChatClientProtocolSupportsChatGetResponse #3747
1.0.0b260210 Poznámky 🔴 Lámání Kontrola rozhraní API typů: Role/FinishReason změny typu, zpřísnění konstruktoru odpovědi/aktualizace, přejmenování pomocné rutiny na from_updatesa odebrání try_parse_value #3647
1.0.0b260210 Poznámky 🔴 Lámání Rozhraní API sjednocená kolem run/get_response a ResponseStream #3379
1.0.0b260210 Poznámky 🔴 Lámání AgentRunContext přejmenováno na AgentContext #3714
1.0.0b260210 Poznámky 🔴 Lámání AgentProtocol přejmenováno na SupportsAgentRun #3717
1.0.0b260210 Poznámky 🔴 Lámání Parametr middlewaru next přejmenovaný na call_next #3735
1.0.0b260210 Poznámky 🔴 Lámání Pojmenování TypeVar standardizované (TNameNameT) #3770
1.0.0b260210 Poznámky 🔴 Lámání Chování výstupu/streamu pracovního postupu jako agenta v souladu s aktuálním tokem odezvy agenta #3649
1.0.0b260210 Poznámky 🔴 Lámání Metody fluent builderu byly přesunuty na parametry konstruktoru u 6 builderů. #3693
1.0.0b260210 Poznámky 🔴 Lámání Události pracovního postupu sjednocené do jednoho WorkflowEvent s diskriminátorem type ; isinstance()event.type == "..." #3690
1.0.0b260130 Poznámky 🟡 Vylepšení ChatOptions / ChatResponse / AgentResponse obecný formát odpovědi #3305
1.0.0b260130 Poznámky 🟡 Vylepšení BaseAgent Byla přidána podpora pro integrace Claude Agent SDK #3509
1.0.0b260128 Poznámky 🔴 Lámání AIFunction FunctionTool@ai_function@tool #3413
1.0.0b260128 Poznámky 🔴 Lámání Tovární vzor pro GroupChat/Magentic; with_standard_managerwith_manager, participant_factoriesregister_participant #3224
1.0.0b260128 Poznámky 🔴 Lámání GithubGitHub #3486
1.0.0b260127 Poznámky 🟡 Vylepšení BaseAgent Přidání podpory pro integrace sady GitHub Copilot SDK #3404
1.0.0b260123 Poznámky 🔴 Lámání Typy obsahu konsolidované do jedné Content třídy s classmethods #3252
1.0.0b260123 Poznámky 🔴 Lámání response_format Chyby ověřování nyní vyvolávají ValidationError #3274
1.0.0b260123 Poznámky 🔴 Lámání AG-UI zjednodušená logika spuštění #3322
1.0.0b260123 Poznámky 🟡 Vylepšení Klient Anthropic přidává response_format podporu strukturovaných výstupů. #3301
1.0.0b260123 Poznámky 🟡 Vylepšení Konfigurace Azure AI rozšířena o podporu reasoning a rai_config Č. 3403, č. 3265
1.0.0b260116 Poznámky 🔴 Lámání create_agentas_agent #3249
1.0.0b260116 Poznámky 🔴 Lámání source_executor_idexecutor_id #3166
1.0.0b260116 Poznámky 🟡 Vylepšení AG-UI podporuje kontinuitu relace/vláken spravovanou službou. #3136
1.0.0b260114 Poznámky 🔴 Lámání Refaktoring orchestrací (GroupChat, Handoff, Sekvenční, Souběžný) #3023
1.0.0b260114 Poznámky 🔴 Lámání Možnosti jako TypedDict a Generic #3140
1.0.0b260114 Poznámky 🔴 Lámání display_name odstraněn; context_providerscontext_provider (v jednotném čísle); middleware musí být seznam #3139
1.0.0b260114 Poznámky 🔴 Lámání AgentRunResponse / AgentRunResponseUpdate přejmenováno na AgentResponse/AgentResponseUpdate #3207
1.0.0b260114 Poznámky 🟡 Vylepšení Přidán modul runtime pro deklarativní pracovní postupy definované jazykem YAML #2815
1.0.0b260114 Poznámky 🟡 Vylepšení Vylepšení načítání a spolehlivosti MCP (zpracování ztrát připojení, stránkování, ovládací prvky reprezentace) #3154
1.0.0b260114 Poznámky 🟡 Vylepšení Foundry A2ATool podporuje připojení bez explicitní cílové adresy URL. #3127
1.0.0b260107 Poznámky Žádné významné změny
1.0.0b260106 Poznámky Žádné významné změny

Další kroky