Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
-
SubprocessConfigodstraněno — použijteRuntimeConnection.for_stdio(path=...)+ pojmenované argumenty uCopilotClient(connection,log_level,base_directory). -
Cesty importu byly přesunuty —
copilot.generated.session_events→copilot.session_events. -
Nastavení bylo přejmenováno –
copilot_home→base_directory; proměnná prostředí je nyníGITHUB_COPILOT_BASE_DIRECTORY(bylaGITHUB_COPILOT_COPILOT_HOME). -
Obslužné rutiny pro oprávnění — používejte konkrétní typy rozhodnutí místo
PermissionRequestResult(kind=...). PředdefinovanéPermissionHandler.approve_allnahrazuje 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=Falsetam, 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
SkillFrontmatteratributy.
🔴 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
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 konstruktoruallowed_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ístoMessage(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žecontents=["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-openaiaagent-framework-foundryjsou 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-mem0aagent-framework-ollama, stále vyžadují--pre. - Pokud jeden instalační příkaz obsahuje jakýkoli beta balíček, ponechte
--prev 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,FoundryEmbeddingOptionsaFoundryEmbeddingSettingszagent_framework.foundry. - Nainstalujte
agent-framework-foundrypro chat Foundry, službou spravované agenty, poskytovatele paměti a embeddingy. -
agent_framework.azurejiž nevyexportujeAzureAIInferenceEmbeddingClient,AzureAIInferenceEmbeddingOptions,AzureAIInferenceEmbeddingSettingsneboAzureAISettings. - Embedování Foundry nyní používá
FOUNDRY_MODELS_ENDPOINT,FOUNDRY_MODELS_API_KEY,FOUNDRY_EMBEDDING_MODELa volitelnéFOUNDRY_IMAGE_EMBEDDING_MODEL. -
FoundryChatClientaFoundryAgentstále používají nastavení koncového bodu projektu, jako jeFOUNDRY_PROJECT_ENDPOINTaFOUNDRY_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_kwargsiclient_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.valuePythonu kompatibilních s JSON (obvykledictnebolist). - 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
modelvšude, kde jste dříve použilimodel_id. -
Agent.default_optionsa při každém spuštěníoptions={...}nyní očekáváme"model", ne"model_id". - Povrch objektů odpovědi
response.model, neresponse.model_id. - Teď se používají nastavení OpenAI
OPENAI_MODEL,OPENAI_CHAT_MODEL,OPENAI_CHAT_COMPLETION_MODELaOPENAI_EMBEDDING_MODEL. - Nastavení Azure OpenAI teď používá
AZURE_OPENAI_MODEL,AZURE_OPENAI_CHAT_MODELAZURE_OPENAI_CHAT_COMPLETION_MODEL, aAZURE_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,AnthropicBedrockClientaAnthropicVertexClient.
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í.
-
ContextProvideraHistoryProviderjsou teď kanonickými základními třídami Pythonu. -
BaseContextProvideraBaseHistoryProviderzůstávají dočasně jako zastaralé aliasy pro kompatibilitu, ale nový kód by měl migrovat na nová jména. -
SessionContextnyní může shromažďovat poskytovatelem přidané chaty nebo middlewareové funkce a zprostředkovat zploštěný seznam prostřednictvímextend_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émrun(). - 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_idnebooptions={"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.azureuž neexportujeAzureOpenAI*nebo se zobrazí staršíAzureAI*agent/ klient/poskytovatel. - Typy kompatibility asistentů Python OpenAI už nejsou součástí aktuálního
agent_framework.openairozhraní. - Použijte
OpenAIChatClient,OpenAIChatCompletionClientaOpenAIEmbeddingClientpro přímé scénáře OpenAI nebo Azure OpenAI. - Použijte
FoundryChatClientpro inferenci projektu Foundry aFoundryAgentpro Prompt agenty nebo HostovanéAgenty. - Aktuální
agent_framework.azureobor 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ámciagent_framework.foundry.
Pokud migrujete starší kód Pythonu, použijte tyto nahrazení:
-
AzureOpenAIResponsesClient→OpenAIChatClient -
AzureOpenAIChatClient→OpenAIChatCompletionClient -
AzureOpenAIEmbeddingClient→OpenAIEmbeddingClient -
AzureAIAgentClient/AzureAIClient/AzureAIProjectAgentProvider/AzureAIAgentsProviderFoundryChatClient→ neboFoundryAgentv závislosti na tom, jestli vaše aplikace vlastní definici agenta -
OpenAIAssistantsClient/OpenAIAssistantProviderOpenAIChatClient→ pro aktuální práci s Pythonem OpenAI neboFoundryAgentpokud 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 prostoruagent_framework.openai. - Klienti Microsoft Foundry jsou nyní umístěni v balíčku
agent-framework-foundrya jmenném prostoruagent_framework.foundry. - Foundry Local je také publikován jako
agent_framework.foundryFoundryLocalClient. -
OpenAIResponsesClientse přejmenuje naOpenAIChatClient. -
OpenAIChatClientse přejmenuje naOpenAIChatCompletionClient. - Konfigurace klienta je standardizována na
model, nahrazující starší parametry, jakomodel_id,deployment_nameamodel_deployment_name. - Pro nový kód Azure OpenAI použijte
agent_framework.openaiklienty. DřívějšíAzureOpenAI*shimy kompatibility byly později odstraněny v #4990. - Pro nový kód Foundry použijte
FoundryChatClientpro přímou inferenci projektu,FoundryAgentpro agenty výzev a hostované agenty, aFoundryLocalClientpro místní runtime prostředí. -
AzureAIClient,AzureAIProjectAgentProvider,AzureAIAgentClient,AzureAIAgentsProvidera 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.
-
AzureOpenAIResponsesClient→OpenAIChatClient -
AzureOpenAIChatClient→OpenAIChatCompletionClient -
AzureOpenAIEmbeddingClient→OpenAIEmbeddingClient -
AzureOpenAIAssistantsClientOpenAIChatClient→ pro přímou migraci rozhraní API pro odpovědi neboFoundryAgentpokud potřebujete agenta Foundry spravovaného službou.
Změna kódu je většinou přesun názvu třídy plus deployment_name → model. 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_MODELproOpenAIChatClient,OPENAI_CHAT_COMPLETION_MODELproOpenAIChatCompletionClient, sOPENAI_MODELjako sdílenou záložní možností. - Azure OpenAI teď používá
AZURE_OPENAI_CHAT_MODELproOpenAIChatClient,AZURE_OPENAI_CHAT_COMPLETION_MODELproOpenAIChatCompletionClient, aAZURE_OPENAI_MODELjako sdílenou záložní možnost. - Použijte
azure_endpointpro adresy URL prostředků Azure OpenAI nebobase_urlpokud už máte úplnou.../openai/v1adresu URL a nastavíteapi_versionpro plochu rozhraní API Azure OpenAI, kterou používáte. - Přijmout nastavení specifická pro Foundry, jako
FOUNDRY_PROJECT_ENDPOINT,FOUNDRY_MODEL,FOUNDRY_AGENT_NAMEaFOUNDRY_AGENT_VERSIONpro klienty Cloud Foundry. - Použití
ANTHROPIC_CHAT_MODELpro Anthropic aFOUNDRY_LOCAL_MODELpro 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-coreje nyní záměrně minimální. - Pokud importujete
agent_framework.openai, nainstalujteagent-framework-openai. - Pokud importujete
agent_framework.foundry, nainstalujteagent-framework-foundrypro odvozování projektu Foundry, agenty spravované službou, poskytovatele paměti a vkládání. Použijteagent-framework-foundry-local --prepro lokální runtime. - Pokud používáte nástroje MCP
Agent.as_mcp_server()nebo jiné integrace MCP při minimální instalaci, nainstalujtemcp --preručně. Pro podporu protokolu WebSocket MCP nainstalujtemcp[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_KEYnakonfigurován, obecní klienti zůstávají na OpenAI, pokud nepředáte explicitní signál směrování Azure, jako napříkladcredentialneboazure_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,OpenAIChatCompletionClienta 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:
-
AzureOpenAIEmbeddingClient→OpenAIEmbeddingClient -
AZURE_OPENAI_EMBEDDING_MODEL→model -
OPENAI_EMBEDDING_MODELzů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_kwargspro hodnoty, které by měly vidět jenom nástroje nebo funkční middleware. - Používá se
client_kwargspro konfiguraci kwargs na úrovni klienta a middlewaru klienta. - Přístup k datům o nástroji nebo modulu runtime prostřednictvím
FunctionInvocationContext(ctx.kwargsactx.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_featuresfunkce passthrough byla odstraněna z vytváření agenta Azure AI. - Chování ve verzi Preview se teď používá
allow_preview=Trueu 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í
ToolInvocationdataclass místo nezpracovanéhodictsouboru . - Vraťte
ToolResultpomocí snake_case polí, jako jsouresult_typeatext_result_for_llm. - Balíček
agent-framework-github-copilotteď 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 naSkillsProvider. - 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()
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íčkupython-dotenvna začátku vaší aplikace - Předání
env_file_path=".env"doload_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.
-
AgentThread→AgentSession -
agent.get_new_thread()→agent.create_session() -
agent.get_new_thread(service_thread_id=...)→agent.get_session(service_session_id=...) -
context_provider=/chat_message_store_factory=vzory jsou nahrazenycontext_providers=[...] -
ChatMessageStorebyla odebrána. PoužijteHistoryProvider(neboInMemoryHistoryProviderpro výchozí variantu v paměti), oba exportované zagent_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ě:
-
WorkflowCheckpointnyní ukládá živé objekty (serializace probíhá v úložišti kontrolních bodů). -
FileCheckpointStoragenyní používá serializaci pickle -
workflow_idbyla odebrána aprevious_checkpoint_idbyla 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.
-
RoleaFinishReasonnyní jsouNewTypeobalové prvky nadstrs údajiRoleLiteral/FinishReasonLiteralo známých hodnotách. Považovat je za řetězce (bez.valuepoužití). -
Messagekonstrukce je standardizována naMessage(role, contents=[...]); řetězce vcontentsjsou automaticky převedeny na textový obsah. -
ChatResponseaAgentResponsekonstruktory se nyní zaměřují namessages=(jednoduchéMessagenebo sekvence). Starší využitítext=konstruktora bylo odstraněno z odpovědí. -
ChatResponseUpdateaAgentResponseUpdatejiž nepřijímátext=; používatcontents=[Content.from_text(...)]. - Byly zjednodušeny názvy pomocníků pro kombinování aktualizací.
-
try_parse_valuebyl odebrán zChatResponseaAgentResponse.
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é (TName → NameT)
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
-
WorkflowBuildernyní vyžadujestart_executorjako argument konstruktoru (dříve nastavený pomocí fluent metody). -
SequentialBuilder,ConcurrentBuilder,GroupChatBuilderaMagenticBuildernyní vyžadují buďparticipants, neboparticipant_factoriespř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_manager→with_manager -
participant_factories→register_participant
Before:
from agent_framework.workflows import MagenticBuilder
builder = MagenticBuilder()
builder.with_standard_manager(manager)
builder.participant_factories(factory1, factory2)
After:
from agent_framework.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í
AgentApprovalExecutoraAgentRequestInfoExecutor.
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_nameparametr odebraný z agentů -
context_providerszůstává stávajícím parametrem pořadí množného čísla pro poskytovatele. -
middlewareteď vyžaduje seznam (už nepřijímá jednu instanci). -
AggregateContextProviderodebrá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_home → base_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í |
SharedState → State; 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í |
ChatAgent → Agent, ChatMessage → Message, RawChatAgent → RawAgent, ChatClientProtocol → SupportsChatGetResponse |
#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é (TName → NameT) |
#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_manager → with_manager, participant_factories → register_participant |
#3224 |
| 1.0.0b260128 | Poznámky | 🔴 Lámání |
Github → GitHub |
#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_agent → as_agent |
#3249 |
| 1.0.0b260116 | Poznámky | 🔴 Lámání |
source_executor_id → executor_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_providers → context_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 | — |