Python 2026 – Jelentős változások – útmutató

Ez a dokumentum felsorolja a Python-kiadások 2026 eleje óta bekövetkezett összes jelentős változását, beleértve a kompatibilitástörő módosításokat és a kódra esetlegesen hatással lévő fontos fejlesztéseket. Minden módosítás a következőként van megjelölve:

  • 🔴 Kompatibilitástörő – Kódmódosításokat igényel a frissítéshez
  • 🟡 Fejlesztés – Új képesség vagy fejlesztés; a meglévő kód továbbra is működik

Ez a dokumentum nyomon követi a 2026-os kiadások jelentős Python változásait, ezért a verziók közötti frissítéskor tekintse meg, hogy ne maradjon le a fontos módosításokról. Az egyes témakörökre (például a beállítások migrálására) vonatkozó részletes frissítési utasításokért tekintse meg a csatolt frissítési útmutatókat vagy a csatolt pr-fájlokat.


python-1.8.0 (2026. június 4.)

Kibocsátási megjegyzések:python-1.8.0

🔴 github-copilot-sdk verziófrissítés az 1.0.0-s verzióra kompatibilitástörő API-módosításokkal

PR:#6292

A PR #6292 az 1.0.0b2-es verzióról agent-framework-github-copilot a stabil github-copilot-sdk kiadásra frissül, alkalmazkodva a GA-verzióban bevezetett összes kompatibilitástörő API-változáshoz.

  • SubprocessConfig eltávolítva — használjon RuntimeConnection.for_stdio(path=...) + kulcsszóargumentumokat a(z) CopilotClient esetében (connection, log_level, base_directory).
  • Áthelyezett importálási útvonalakcopilot.generated.session_eventscopilot.session_events.
  • Beállítások átnevezvecopilot_homebase_directory; a környezeti változó most GITHUB_COPILOT_BASE_DIRECTORY (korábban GITHUB_COPILOT_COPILOT_HOME volt).
  • Engedélykezelők – használjon konkrét döntéstípusokat a(z) PermissionRequestResult(kind=...) helyett. A beépített PermissionHandler.approve_all rendszer felváltja a manuális jóváhagyási mintákat.
  • Alapértelmezett tiltó kezelő – most PermissionDecisionUserNotAvailable() értéket ad vissza (az SDK tartalék működésének megfelelően).
  • Engedélykezelő típusa – mostantól a szinkronizálás és az aszinkron visszahívások (Callable[..., PermissionRequestResult | Awaitable[PermissionRequestResult]]) is támogatottak.

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

🟡 Az eszközök fokozatos megjelenítése a következőn keresztül: FunctionInvocationContext

PR:#6233

Támogatja az eszközök futtatás közbeni fokozatos elérhetővé tételét a(z) FunctionInvocationContext használatával. Az eszközök mostantól dinamikusan hozzáadhatók vagy eltávolíthatók az ugyanazon ügynökfuttatáson belüli korábbi eszközeredmények alapján.

Az eszközök rendelkezésre állásának szabályozása című témakörben talál teljes dokumentációt, beleértve a mintákat, a kikötéseket és az eszközrendezési példákat.


🟡 MCP-alapú készségek felderítése (McpSkillsSource)

PR:#6169

Hozzáadja a(z) McpSkillsSource elemet a(z) agent-framework-core elemhez, lehetővé téve a képességek felderítését és betöltését MCP-kiszolgálókon keresztül.


🟡 A Bedrock natív strukturált kimeneti támogatása a Converse API-n keresztül

PR:#6052

agent-framework-bedrock Natív strukturált kimeneti támogatást valósít meg az AWS Bedrock Converse API-n keresztül, amely lehetővé teszi response_format a Bedrock-modellek használatát.


🟡 Foundry Adaptive Evals integrálása (értékelési szempontrendszer-generálás)

PR:#6101

Hozzáadja a Foundry Adaptive Evals-integrációt a(z) agent-framework-foundry elemhez az értékelési munkafolyamatokban történő automatikus szempontrendszer-generáláshoz.


🟡 Miistral AI beágyazási ügyfélcsomag

PR:#5480

Új agent-framework-mistral csomag, amely Mistral AI-beágyazási ügyfelet biztosít.


🟡 agent-framework-declarative kiadásra jelölt verzióvá léptetve

PR:#6256

A agent-framework-declarative csomag a béta állapotból kiadásra jelölt állapotba lép.


python-1.7.0 (2026. május 28.)

Kibocsátási megjegyzések:python-1.7.0

🔴 Deklaratív: a csak Pythonban elérhető műveletek eltávolítva, az aliasfajták pedig a C# kanonikus neveire átnevezve

PR:#6126

A PR #6126 eltávolítja a csak Pythonhoz tartozó deklaratív műveleteket, és átnevezi az aliasfajtákat, hogy megfeleljenek a C#-ban használt kanonikus elnevezéseknek a nyelvek közötti egységesség érdekében.

  • Azok a kizárólag Pythonban létező deklaratív művelettípusok, amelyeknek nincs C#-megfelelőjük, el lesznek távolítva.
  • A művelet aliastípusai mostantól igazodnak a C#-elnevezési konvenciókhoz; ennek megfelelően frissítse a meglévő deklaratív YAML-/JSON-fájlokat.

🟡 HarnessAgent és a háttérügynökök hámszolgáltatója

PRs:#6041, #6069

A HarnessAgent elemet hozzáadja a agent-framework-core-hez, lehetővé téve a harness által támogatott ügynöki mintákat a háttérfeldolgozáshoz.


🟡 A2AAgentSession hivatkozott feladatazonosítókkal és bemenethez szükséges támogatással

PR:#5980

Hozzáadja a A2AAgentSession elemet a agent-framework-a2a-hez és a agent-framework-core-höz, támogatva a hivatkozott feladatazonosítókat és az inputot igénylő folyamatot az A2A-protokollal folytatott interakciókhoz.


🟡 Kísérleti parancssori ügynök konvertálása és üzembe helyezési API-k

PR:#5959

Kísérleti API-kat ad hozzá a agent-framework-foundry parancssori definíciók ügynökökké alakításához és programozott üzembe helyezéséhez.


python-1.6.0 (2026. május 21.)

Kibocsátási megjegyzések:python-1.6.0

🔴 Az instrumentálás alapértelmezés szerint engedélyezve van

PR:#5865

Ez a PR alapértelmezetten engedélyezi az OpenTelemetry-instrumentálást a #5865 és agent-framework-core esetében.

  • Az ügynökfuttatások mostantól automatikusan, explicit bejelentkezés nélkül bocsátanak ki telemetriai adatokat.
  • Ha korábban letiltotta a rendszerezést, vagy egyéni telemetriai folyamatokkal rendelkezik, ellenőrizze, hogy az alapértelmezett viselkedés nem ütközik-e.
  • A letiltáshoz ahol alkalmazható, adja meg a következőt: enable_instrumentation=False.

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)

🟡 Rendszerhéjeszköz helyi és Docker-végrehajtási támogatással

PR:#5664

Beépített parancsértelmező eszközt ad hozzá a(z) agent-framework-core elemhez, amely egyaránt támogatja a helyi futtatást és a Docker-alapú, homokozóban történő végrehajtást.


🟡 Új agent-framework-monty CodeAct-szolgáltatói csomag

PR:#5915

Bemutatja a agent-framework-monty Monty által támogatott CodeAct-integrációk (alfa fázis) csomagját.


python-1.4.0 (2026. május 14.)

Kibocsátási megjegyzések:python-1.4.0

🔴 [Kísérleti készségek API] Fájlismereti mappafelderítés igazítása agentskills.io specifikációhoz

PR:#5807

A PR #5807 frissíti a kísérleti készségek API-t, hogy a fájlalapú képességmappák felderítése igazodjon a agentskills.io specifikációhoz.

  • Megváltozott a készségmappafeloldási logika; a kísérleti készségek API-val frissítheti az egyéni készségkönyvtár-elrendezéseket.

🔴 [Experimental Skills API] A készségspecifikáció metaadatainak kinyerése ide: SkillFrontmatter

PR:#5775

A PR #5775 egy dedikált SkillFrontmatter adatosztályba helyezi át a szakértelem-specifikáció metaadatait.

  • Ha közvetlenül éri el a készségmetaadatok mezőit, frissítse a hivatkozásokat úgy, hogy a SkillFrontmatter attribútumait használják.

🔴 DevUI: Az alapértelmezett hozzáférés-vezérlés és a CORS-helyzet szigorítása

PR:#5740

A PR #5740 szigorítja az alapértelmezett hozzáférés-vezérlési és CORS-konfigurációt a agent-framework-devui.

  • Az alapértelmezett CORS-források mostantól szigorúbbak.
  • Ha a DevUI-beállítás az egyéni tartományokból származó kereszt-forrás hozzáférésre támaszkodik, explicit módon konfigurálja az engedélyezett forrásokat.

🔴 A2A: Migrálás az a2a-sdk 1.0-s verzióra

PR:#5752

A PR #5752 a agent-framework-a2a v1.0-ra migrálja a a2a-sdk elemet.

  • Az A2A protokolltípusok és a szállítási API-k az a2a-sdk 1.0 konvenciók szerint alakulnak.
  • Frissítse az A2A protokolltípusokkal közvetlenül kommunikáló kódot.

🟡 AG-UI: Az eszköz eredménymegjelenítési csatornája és a kiadási jelölt előléptetése

PRs:#5762, #5844

Hozzáad egy eszközeredmény-megjelenítési csatornát a(z) agent-framework-ag-ui elemhez, és a csomagot kiadásra jelölt állapotba emeli.


python-1.3.0 (2026. május 7.)

Kibocsátási megjegyzések:python-1.3.0

🔴 [Kísérleti készségek API] Ügynöki készségek átstrukturálása többforrásos architektúrára

PR:#5584

A PR #5584 átalakítja a kísérleti készségek API-t, hogy támogassa a több forrásból történő képességbetöltést.

  • A képességregisztráció és a felderítési logika megváltozott a kísérleti képességek funkció esetében.
  • Ha a kísérleti képességek API-t használja, tekintse át az új többforrásos betöltési konvenciókat.

🟡 ClassSkill osztályalapú képességdefiníciókhoz

PR:#5678

Hozzáadja a ClassSkill elemet a deklaratív metaadatokkal és automatikus metódusfelderítéssel rendelkező, osztályalapú készségdefiníciókhoz a agent-framework-core-hez.


🟡 Információáramlás-szabályozású promptinjektálás elleni védelem

PR:#5331

agent-framework-core-hoz ad hozzá egy információáramlást szabályozó mechanizmust, amely segít védekezni a promptinjekciós támadások ellen.


🟡 github-copilot-sdk frissítés az 1.0.0b2-re

PR:#5665

Frissítés erről: agent-framework-github-copilot, erre: github-copilot-sdk>=1.0.0b2; hozzáadja a(z) instruction_directories elemet, a(z) copilot_home konfigurációt, valamint a futásidejű beállítások továbbítását a munkamenet folytatásakor.


🟡 approval_mode kikényszerítése a Claude és a GitHub Copilot ügynökökben

PR:#5562

agent-framework-claude és agent-framework-github-copilot most a approval_mode dekorátor használatát is kikényszeríti a függvényeszközökön, a többi ügynökimplementációval összhangban.


🟡 Az OpenAI és a Gemini allowed_tools eszköz választási támogatása

PR:#5322

Hozzáadja az allowed_tools alatti agent-framework-openai eszközválasztás támogatását, így korlátozhatja, hogy a modell mely eszközöket hívhatja meg.


python-1.2.2 (2026. április 29.)

Kibocsátási megjegyzések:python-1.2.2

🔴 Vezénylési terminálkimenetek szabványosítva AgentResponse

PR:#5301

A PR #5301 szabványosítja a vezénylési terminálkimeneteket, mivel AgentResponse így Workflow.as_agent() csak a végső választ adja vissza.

  • A szekvenciális jóváhagyás (with_request_info) és az egyidejű (intermediate_outputs=True) folyamatok most ugyanazt a kimeneti szerződést követik.
  • Ha közvetlenül felhasználja az orchesztrációs eredményeket, nyers szöveg vagy vegyes típusok helyett AgentResponse objektumokra számítson.

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

🟡 Azure AI Content Understanding kontextusszolgáltató

PR:#4829

Új alfacsomag agent-framework-azure-contentunderstanding – automatikusan elemzi a fájlmellékleteket (dokumentumok, képek, hang, videó), és strukturált eredményeket injektál az LLM-környezetbe.


🟡 Durable Workflow támogatás Foundry-hosztoláson keresztül

PR:#5531

Hosztolt Durable Workflow-támogatást ad hozzá a agent-framework-foundry-hosting elemhez, és továbbítja a teljes beszélgetési előzményeket a workflow-ügynököknek.


python-1.1.0 (2026. április 21.)

Kibocsátási megjegyzések:python-1.1.0

🔴 CosmosCheckpointStorage korlátozott pásztázással történő deszerializálás alapértelmezés szerint

PR:#5200

CosmosCheckpointStorage mostantól alapértelmezés szerint korlátozott pickle-deszerializálást használ, összhangban a(z) FileCheckpointStorage viselkedésével.

  • Ha az ellenőrzőpontok alkalmazás által definiált típusokat tartalmaznak, a(z) allowed_checkpoint_types=["my_app.models:MyState"] segítségével adja át őket.
  • Enélkül az egyéni típusok deszerializálása WorkflowCheckpointException hibát eredményez.

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 Hozzáadott

PR:#4847

Új agent-framework-gemini csomag GeminiChatClient a Google Gemini API és a Vertex AI támogatásával.


🟡 Hyperlight CodeAct-csomag

PR:#5185

Új agent-framework-hyperlight csomag a Hyperlight-alapú CodeAct tesztkörnyezeti kódvégrehajtáshoz.


🟡 Az Foundry Toolboxes támogatása

PR:#5346

Mostantól támogatja a Foundry-eszközkészleteket a agent-framework-foundry-ben, lehetővé téve az Azure AI Foundryból származó felügyelt eszközkonfigurációk használatát.


🟡 finish_reason a AgentResponse és AgentResponseUpdate rendszeren

PR:#5211

Hozzáadja a(z) finish_reason mezőt a(z) AgentResponse és AgentResponseUpdate elemhez, lehetővé téve a felhasználók számára annak ellenőrzését, hogy miért állt le a modell a generálással.


🟡 Üzemeltetett ügynök V2 támogatása a Foundryben

PR:#5379

A agent-framework-foundry most már támogatja a hosztolt ügynökök V2-verzióját, a Foundry ügynökszolgáltatás legújabb képességeihez igazodva.


python-1.0.1 (2026. április 9.)

Kibocsátási megjegyzések:python-1.0.1

🔴 FileCheckpointStorage korlátozott pickle-deszerializálás (biztonsági megerősítés)

PR:#4941

A checkpointok deszerializálása mostantól alapértelmezés szerint egy korlátozott unpickleren keresztül történik, amely csak a biztonságos, beépített Python-típusok egy készletét és az összes agent_framework keretrendszertípust engedélyezi.

  • Ha az alkalmazás az egyéni típusokat ellenőrzőpontokban tárolja, adja át az azonosítókat "module:qualname" az új allowed_checkpoint_types konstruktorparaméteren keresztül – ellenkező esetben a terhelések emelkednek WorkflowCheckpointException.
  • További részletekért tekintse meg a biztonsági szempontokat .

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

🔴 Az átadási munkafolyamat kontextuskezelésének javítása

PR:#5136

A PR #5136 kijavítja az átadási munkafolyamat környezetkezelését. Ez egy viselkedésbeli változás — az átadó ügynökök mostantól helyesen megőrzik az elkülönített kontextust az átmenetek során.


🟡 Cosmos DB NoSQL ellenőrzőpont-tároló munkafolyamatokhoz

PR:#4916

Új agent-framework-azure-cosmos csomag, amely Cosmos DB NoSQL-alapú ellenőrzőpont-tárterületet biztosít Python munkafolyamatokhoz.


python-1.0.0 (2026. április 2.)

Kibocsátási megjegyzések:python-1.0.0

Ez a szakasz azokat a jelentős Python-módosításokat rögzíti, amelyek a következő után landoltak python-1.0.0rc6, és amelyek most már a python-1.0.0 részei.

🔴 Message(..., text=...) az építkezés most teljesen el lett távolítva

PR:#5062

A PR #5062 befejezi a Python korábbi üzenetmodelljének törlését az utolsó keretrendszeroldali kódútvonalak eltávolításával, amelyek továbbra is létrehoznak Message objektumokat a következővel text=...: .

  • Szövegüzeneteket Message(role="user", contents=["Hello"])-ként építsen fel a Message(role="user", text="Hello") helyett.
  • Ez bárhol érvényes, ahol közvetlenül készít üzeneteket, beleértve a munkafolyamat-kérelmeket, az egyéni köztesszoftver-válaszokat, a vezénylési segítőket és a migrálási kódot.
  • A contents=[...] belső karakterláncok továbbra is automatikusan normalizálódnak szöveges tartalommá, így contents=["Hello"] a legegyszerűbb szöveges formátum marad.

Before:

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

After:

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

🟡 A kiadott Python-csomagokra már nincs szükség --pre

PR:#5062

A PR #5062 promotálja a fő Python-csomagokat 1.0.0, és frissíti a telepítési útmutatót annak érdekében, hogy megkülönböztessük a kiadott csomagokat a még előzetes állapotban lévőktől.

  • agent-framework, agent-framework-core, agent-framework-openai és agent-framework-foundry most már megjelent állapotban vannak, és már nem igényelnek --pre.
  • Béta-összekötők, például agent-framework-ag-ui, agent-framework-azurefunctions, agent-framework-copilotstudio, agent-framework-foundry-local, agent-framework-github-copilot, , agent-framework-mem0és agent-framework-ollama továbbra is igényelnek --pre.
  • Ha egyetlen telepítési parancs bétaverziós csomagot tartalmaz, tartsa meg a --pre azon a parancson.

🔴 A Foundry mostantól a Python-beágyazások és a models-endpoint beállításainak tulajdonosa

PR:#5056

A PR #5056 eltávolítja az önálló agent-framework-azure-ai csomagot, és áthelyezi a Python beágyazási felületét a következőre agent-framework-foundry : és agent_framework.foundry.

  • Használja a FoundryEmbeddingClient, FoundryEmbeddingOptions és FoundryEmbeddingSettings elemeket a agent_framework.foundry-ból.
  • Telepítse agent-framework-foundry a Foundry csevegéshez, a szolgáltatás által kezelt ügynökökhöz, memóriaszolgáltatókhoz és beágyazódásokhoz.
  • agent_framework.azure már nem exportál AzureAIInferenceEmbeddingClient, AzureAIInferenceEmbeddingOptions, AzureAIInferenceEmbeddingSettingsvagy AzureAISettings.
  • Az öntödei beágyazások most már FOUNDRY_MODELS_ENDPOINT, FOUNDRY_MODELS_API_KEY, FOUNDRY_EMBEDDING_MODEL és opcióként FOUNDRY_IMAGE_EMBEDDING_MODEL-t használnak.
  • FoundryChatClient és FoundryAgent továbbra is használja a projektvégpont beállításait, például FOUNDRY_PROJECT_ENDPOINT és FOUNDRY_MODEL.

Before:

import os

from agent_framework.azure import AzureAIInferenceEmbeddingClient

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

After:

import os

from agent_framework.foundry import FoundryEmbeddingClient

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

🔴 A munkafolyamatok mostantól explicit gyűjtőkbe irányítják a futtatókörnyezeti kwargokat

PR:#5010

A PR #5010 frissíti a Pythont workflow.run(...), így a futtatókörnyezeti kwargok function_invocation_kwargs=client_kwargs= módon explicit átadva lesznek a generikusan továbbított helyett **kwargs.

  • A lapos leképezések globálisként lesznek kezelve, és a munkafolyamat minden egyező ügynök-végrehajtójának továbbítva lesznek.
  • Ha egy vagy több legfelső szintű kulcs egyezik a végrehajtóazonosítókkal, a rendszer a teljes leképezést végrehajtónkénti célzásként kezeli, és minden végrehajtó csak a saját bejegyzését kapja meg.
  • Az egyéni AgentExecutor(id="...") és egyéb explicit munkafolyamat-végrehajtó azonosítók a kulcsok, amelyeket megcéloz.
  • Ugyanezek a globális és a célzott szabályok vonatkoznak mind a function_invocation_kwargs és a client_kwargs egységekre.

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 mostantól környezeti szolgáltatókat futtat az egyes meghívások köré

PR:#5013

A PR #5013 kijavít egy Python-viselkedési rést, ahol GitHubCopilotAgent elfogadja context_providers, de valójában nem hajtja végre őket.

  • before_run() most a Copilot-kérés elküldése előtt fut.
  • A szolgáltató által hozzáadott üzenetek és utasítások szerepelnek a Copilot parancssori felületét elérő üzenetben.
  • after_run() most a végső válasz összeállítása után fut, beleértve a streamelési útvonalat is.

Ha már átadta context_providersGitHubCopilotAgent, nincs szükség migrálásra — a hookok mostantól következetesen viselkednek a Python agent többi felületével.


🟡 A strukturált kimenet mostantól a Pydantic-modellek mellett JSON-sémaleképezéseket is elfogad

PR:#5022

A PR #5022 kibővíti a Python strukturált kimeneti elemzését, így response_format pydantikus modell vagy JSON-sémaleképezés is lehet.

  • A pydantic-modellek továbbra is begépelt modellpéldányokat elemeznek a számítógépen response.value.
  • A JSON-sémaleképezések mostantól JSON-kompatibilis Python-értékeket response.value elemeznek (általában dict vagy list).
  • Ugyanezek az elemzési szabályok érvényesek, amikor összegyűjti a végső választ egy streamből.

Ez nem kompatibilitástörő változás, hanem fejlesztés, de hasznos tudni, hogy a sémákat már JSON-szerű szótárakként tárolja-e.


python-1.0.0rc6

Ez a szakasz azokat a jelentős Python-módosításokat rögzíti, amelyeket a python-1.0.0rc6-hoz szállítottak vagy amelyekhez kapcsolódóan követték.

🔴 A modellválasztás szabványosítva van model

PR:#4999

A PR #4999 elvégzi a Python-oldali modellválasztási tisztítást a konstruktorok, a beírt beállítások, az ügynök alapértelmezései, a válaszobjektumok és a környezeti változók között.

  • Használja model mindenhol, ahol korábban a model_id-t használta.
  • Agent.default_options és futtatásonként options={...} most "model"-re számítanak, nem "model_id"-re.
  • A válaszobjektumok a response.model felületet mutatják, nem a response.model_id felületet.
  • Az OpenAI-beállítások most már a következőket használják: OPENAI_MODEL, OPENAI_CHAT_MODEL, OPENAI_CHAT_COMPLETION_MODEL, és OPENAI_EMBEDDING_MODEL.
  • Az Azure OpenAI-beállítások most már használhatók AZURE_OPENAI_MODEL, AZURE_OPENAI_CHAT_MODELAZURE_OPENAI_CHAT_COMPLETION_MODELés AZURE_OPENAI_EMBEDDING_MODEL.
  • Antropikus most használja ANTHROPIC_CHAT_MODEL, és Foundry Local használja FOUNDRY_LOCAL_MODEL.
  • Az antropikus csomag olyan szolgáltató által üzemeltetett burkolókat is hozzáad, mint a AnthropicFoundryClient, AnthropicBedrockClientés AnthropicVertexClient.

Before:

from agent_framework.anthropic import AnthropicClient

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

After:

from agent_framework.anthropic import AnthropicClient

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

🔴 A környezetszolgáltatók modellhívásonként hozzáadhatnak köztes szoftvereket, és megőrizhetik az előzményeket

PR:#4992

A PR #4992 frissíti a Python környezetszolgáltatói folyamatot, és azt, hogy a keretrendszer által felügyelt előzmények hogyan őrizhetők meg a többhívásos futtatások során.

  • ContextProvider és HistoryProvider most már a canonical Python alaposztályai.
  • BaseContextProvider és BaseHistoryProvider ideiglenesen elavult aliasként maradnak a kompatibilitás érdekében, de az új kódnak át kell költöznie az új nevekre.
  • SessionContextmostantól összegyűjtheti a szolgáltató által hozzáadott csevegési vagy függvényközvetítménytextend_middleware(), és közzéteheti az összesimított listát.get_middleware()
  • Agent(..., require_per_service_call_history_persistence=True) A modellhívások mindegyike köré futtatja az előzményszolgáltatókat, nem pedig egyszer a teljes run() hívása után.
  • Ez a mód keretrendszer által felügyelt helyi előzményekhez készült, és nem kombinálható meglévő szolgáltatás által felügyelt beszélgetésekkel, például session.service_session_id vagy options={"conversation_id": ...}.

Before:

from agent_framework import BaseHistoryProvider

class CustomHistoryProvider(BaseHistoryProvider):
    ...

After:

from agent_framework import Agent, HistoryProvider

class CustomHistoryProvider(HistoryProvider):
    ...

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

🔴 Elavult Azure/OpenAI kompatibilitási felületek eltávolítása

PR:#4990

A PR #4990 befejezi a szolgáltató által vezető migrálást #4818 a korábbi előzetes verziókban elérhető, elavult Python-kompatibilitási felületek eltávolításával.

  • agent_framework.azure már nem exportálja AzureOpenAI* vagy a régebbi AzureAI* ügynök-/ügyfél-/szolgáltatói felületeket.
  • A Python OpenAI Assistants kompatibilitási típusai már nem részei az aktuális agent_framework.openai felületnek.
  • OpenAIChatClient és OpenAIChatCompletionClient közvetlen OpenAI- vagy Azure OpenAI-forgatókönyvek esetén használja OpenAIEmbeddingClient.
  • A FoundryChatClient a Foundry-projektek következtetésére, míg a FoundryAgent Prompt ügynökökhöz vagy Hosted ügynökökhöz használható.
  • Az aktuális agent_framework.azure névtér mostantól a fennmaradó Azure-integrációkat is lefedi, például az Azure AI Kereséset, a Cosmos-előzményeket, az Azure Functionst és a tartós munkafolyamatokat. Öntödei csevegő, ügynök, memória és beágyazási kliensek találhatók a agent_framework.foundry alatt.

Ha régebbi Python-kódot migrál, használja az alábbi cserelehetőségeket:

  • AzureOpenAIResponsesClientOpenAIChatClient
  • AzureOpenAIChatClientOpenAIChatCompletionClient
  • AzureOpenAIEmbeddingClientOpenAIEmbeddingClient
  • AzureAIAgentClient / AzureAIClient / AzureAIProjectAgentProvider / AzureAIAgentsProvider FoundryChatClient→ vagy FoundryAgentattól függően, hogy az alkalmazás az ügynökdefiníció tulajdonosa-e
  • OpenAIAssistantsClient / OpenAIAssistantProvider OpenAIChatClient→ a Python OpenAI aktuális működéséhez, vagy FoundryAgent ha szolgáltatás által felügyelt ügynökre van szüksége a Foundryben

🔴 Szolgáltatók által vezetett ügyféltervezés és csomagfelosztás

PR:#4818

A PR #4818 átszervezi a Python-szolgáltató felületét a szolgáltatóspecifikus csomagok és névterek köré.

  • Az OpenAI-ügyfelek most már a agent-framework-openai csomagban élnek, miközben továbbra is importálnak a agent_framework.openai névtérből.
  • A Microsoft Foundry-ügyfelek mostantól a agent-framework-foundry csomagban és a agent_framework.foundry névtérben élnek.
  • A Foundry Local ki van téve a agent_framework.foundry fájlból, mint FoundryLocalClient.
  • A(z) OpenAIResponsesClient nevet megváltoztatjuk OpenAIChatClient-re.
  • A(z) OpenAIChatClient nevet megváltoztatjuk OpenAIChatCompletionClient-re.
  • Az ügyfélkonfiguráció szabványosítva van model-n, és lecseréli az olyan régebbi paramétereket, mint az model_id, deployment_nameés model_deployment_name.
  • Új Azure OpenAI-kódhoz használja a agent_framework.openai klienseket. A korábbi AzureOpenAI* kompatibilitási toldalékokat később a #4990-ben eltávolították.
  • Új Foundry-kód esetén használja a FoundryChatClient közvetlen projekt következtetésekhez, FoundryAgent a Prompt Agents és HostedAgents, valamint FoundryLocalClient a helyi futtatókörnyezetek esetében.
  • AzureAIClient, AzureAIProjectAgentProvider, AzureAIAgentClient, AzureAIAgentsProvider, és a Python Assistants kompatibilitási felülete az újrabontás során kompatibilitási útvonalakra került, majd később eltávolították a #4990 keretében.
  • A mintalefedettség az új szolgáltató-vezető elrendezésnek megfelelően lett átrendezve, beleértve az Öntödei mintákat samples/02-agents/providers/foundry/ is.

Csomagleképezés

Scenario Install Elsődleges névtér
OpenAI és Azure OpenAI pip install agent-framework-openai agent_framework.openai
Microsoft Foundry-projektvégpontok, ügynökszolgáltatás, memória és beágyazások pip install agent-framework-foundry agent_framework.foundry
Foundry Local 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")

Ha korábban közvetlenül használta az Azure OpenAI-t, képezheti le a régi dedikált osztályokat az új szolgáltató által vezető OpenAI-osztályokra:

  • AzureOpenAIResponsesClientOpenAIChatClient
  • AzureOpenAIChatClientOpenAIChatCompletionClient
  • AzureOpenAIEmbeddingClientOpenAIEmbeddingClient
  • AzureOpenAIAssistantsClient OpenAIChatClient→ a direct Responses API migrálásához, vagy FoundryAgent ha szolgáltatás által felügyelt Foundry-ügynökre van szüksége

A kódmódosítás többnyire osztálynév-áthelyezés és deployment_namemodel. Az Azure OpenAI kompatibilitásához explicit Azure-bemeneteket használjon az új OpenAI-ügyfeleken. credential= most már az előnyben részesített Azure-hitelesítési felület, míg a hívható api_key továbbra is kompatibilitási elérési út marad:

Előtte (AzureOpenAIResponsesClient):

from agent_framework.azure import AzureOpenAIResponsesClient

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

Utána (OpenAIChatClient):

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

api_version = "your-azure-openai-api-version"

client = OpenAIChatClient(
    azure_endpoint=azure_endpoint,
    model=deployment_name,
    credential=AzureCliCredential(),
    api_version=api_version,
)

Előtte (AzureOpenAIChatClient):

from agent_framework.azure import AzureOpenAIChatClient

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

Utána (OpenAIChatCompletionClient):

from agent_framework.openai import OpenAIChatCompletionClient
from azure.identity import AzureCliCredential

api_version = "your-azure-openai-api-version"

client = OpenAIChatCompletionClient(
    azure_endpoint=azure_endpoint,
    model=deployment_name,
    credential=AzureCliCredential(),
    api_version=api_version,
)

Ha az Azure OpenAI-végpontokról egy Microsoft Foundry-projektvégpontra szeretne váltani, használja inkább az Foundry-orientált felületet:

(Azure OpenAI-végpont) előtt:

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

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

Utána (Foundry projekt):

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)

Helyi Microsoft Foundry-futtatókörnyezetek esetén használja az Foundry névteret és a helyi összekötőt:

from agent_framework.foundry import FoundryLocalClient

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

Ha kihagyja a model-t, állítsa be a FOUNDRY_LOCAL_MODEL-et a környezetében.

Szükség esetén frissítse a környezet-/konfigurációneveket is:

  • Az OPENAI_CHAT_MODEL használata OpenAIChatClient esetén, az OPENAI_CHAT_COMPLETION_MODELOpenAIChatCompletionClient esetén, az OPENAI_MODEL pedig közös tartalékként.
  • Az Azure OpenAI mostantól a AZURE_OPENAI_CHAT_MODEL-t használja a OpenAIChatClient számára, a AZURE_OPENAI_CHAT_COMPLETION_MODEL-t a OpenAIChatCompletionClient számára, és a AZURE_OPENAI_MODEL a közös tartalékként szolgál.
  • Használja a azure_endpoint jelölést az Azure OpenAI-erőforrás URL-címeihez, vagy a base_url jelölést, ha már rendelkezik teljes .../openai/v1 URL-címmel, és állítsa be a api_version jelölést az Ön által használt Azure OpenAI API-felülethez.
  • Cloud Foundry-specifikus beállítások, mint például FOUNDRY_PROJECT_ENDPOINT, FOUNDRY_MODEL, FOUNDRY_AGENT_NAME és FOUNDRY_AGENT_VERSION bevezetése a Cloud Foundry ügyfelek számára.
  • Használja a ANTHROPIC_CHAT_MODEL Anthropic és FOUNDRY_LOCAL_MODEL Foundry Local kódokat.

Ez a változás először a python-1.0.0rc6 ciklus során landolt.


🔴 Az alapvető függőségek mostantól szándékosan minimálisak

PR:#4904

A PR #4904 követi a szolgáltatói csomag #4818 felosztását azáltal, hogy karcsúsítja a agent-framework-core-t és eltávolítja a közvetett szolgáltatói függőségeket az alapcsomagból.

  • agent-framework-core most szándékosan minimalistává lett.
  • Ha importálja agent_framework.openai, telepítse az agent-framework-openai elemet.
  • Ha importálja agent_framework.foundry, telepítse agent-framework-foundry a Foundry projektértelmezéséhez, a szolgáltatás által kezelt ügynökök, a memória biztosítók és a beágyazások érdekében. Használja a agent-framework-foundry-local --pre jelölőt a helyi futtatókörnyezetekhez.
  • Ha mcp-eszközöket vagy Agent.as_mcp_server()más MCP-integrációkat használ minimális telepítéshez, telepítse mcp --pre manuálisan. A WebSocket MCP-támogatásához telepítse a következőt mcp[ws] --pre: .
  • Ha a széles körű "mindent tartalmaz" élményt szeretné, telepítse a metacsomagot agent-framework.

Ez nem újratervezi a szolgáltató felületét; alapértelmezés szerint módosítja a telepített elemeket, ha csak a magot hozza be.

Korábban (a csak magos telepítések gyakran több szolgáltatói funkciót hoztak átvitt módon):

pip install agent-framework-core

Utána (telepítse a ténylegesen használt szolgáltatói csomagot):

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

or:

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

Ha olyan meglévő projektet frissít, amely korábban az alapvető és a lusta szolgáltatói importálástól függött, naplózhatja az importálásokat, és explicité teheti a szolgáltatói csomagokat a környezetében vagy a függőségi fájlokban. Tegye ugyanezt az MCP-függőségek esetében is, ha MCP-eszközökre vagy MCP-kiszolgálók üzemeltetésére támaszkodik.


🔴 Az általános OpenAI-ügyfelek most már az explicit útválasztási jeleket részesítik előnyben

PR:#4925

A pr #4925 megváltoztatja, hogy az általános agent_framework.openai ügyfelek hogyan döntsenek az OpenAI és az Azure OpenAI között.

  • Az általános OpenAI-ügyfelek már nem váltanak az Azure-ra csak azért, mert AZURE_OPENAI_* környezeti változók vannak jelen.
  • Ha OPENAI_API_KEY konfigurálva van, az általános ügyfelek az OpenAI-n maradnak, hacsak nem ad át explicit Azure-útválasztási jelet, például credential vagy azure_endpoint.
  • Ha csak AZURE_OPENAI_* a beállítások vannak megadva, az általános ügyfelek továbbra is visszatérhetnek az Azure környezetalapú útválasztására.
  • Az előnyben részesített Azure OpenAI-minta most az, hogy az explicit Azure-beállításokat, valamint a credential=AzureCliCredential(), OpenAIChatClient és a OpenAIChatCompletionClient, illetve a beágyazási kliens paramétereit adjuk át.
  • Az elavult AzureOpenAI* burkolók megőrzik a kompatibilitási viselkedésüket, így a meglévő burkolóalapú kód nem követi az új általános ügyfél-elsőbbségi szabályokat.

Korábban (OpenAIChatClient az Azure-ba irányíthatott, mert az Azure env vars jelen volt):

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

Miután (az általános OpenAI továbbra is az OpenAI-n működik; az explicit Azure-bemenetek átadásával kényszeríti az Azure-útválasztást):

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

Ha a környezet mindkettőt OPENAI_* és AZURE_OPENAI_* értéket tartalmaz, ellenőrizze az általános agent_framework.openai ügyfélszerkezeteket, és tegye explicitvé a szolgáltató választását. Emiatt az Azure-szolgáltatói minták frissültek, hogy közvetlenül az Azure-bemeneteket adják át.

Az Azure-beágyazások mostantól ugyanazt az útválasztási modellt követik:

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

Beágyazási forgatókönyvek esetén térkép:

  • AzureOpenAIEmbeddingClientOpenAIEmbeddingClient
  • AZURE_OPENAI_EMBEDDING_MODELmodel
  • OPENAI_EMBEDDING_MODEL Az OpenAI-oldal beágyazási környezeti változója marad

python-1.0.0rc5 / python-1.0.0b260319 (2026. március 19.)

🔴 A csevegési ügyfélfolyamat átrendezve: A FunctionInvocation mostantól a ChatMiddleware-et burkolja

PR:#4746

A ChatClient folyamatrendezése megváltozott. FunctionInvocation most a legkülső réteg lett, és csomagolja be a ChatMiddleware-t, ami azt jelenti, hogy a chatköztes szoftver modellhívásonként fut (beleértve az eszköz hívási ciklusának minden iterációját) ahelyett, hogy egyszer a teljes függvényhívási sorrend során futna.

Régi csővezeték rend:

ChatMiddleware → FunctionInvocation → RawChatClient

Új folyamatrend:

FunctionInvocation → ChatMiddleware → ChatTelemetry → RawChatClient

Ha olyan egyéni chat middleware-rel rendelkezik, amely feltételezi, hogy ügynöki meghívásonként csak egyszer fut le (befoglalva az egész eszközhívási ciklust), frissítse úgy, hogy biztonságosan ismételhetően lehessen végrehajtani. A rendszer mostantól meghívja a csevegőközépszoftvert minden egyes LLM-kéréshez, beleértve azokat a kéréseket is, amelyek az eszköz eredményeit visszaküldik a modellnek.

Emellett a ChatTelemetry most már egy külön réteg a ChatMiddleware-től, amely a legközelebb fut RawChatClient-hez.

🔴 Nyilvános futtatókörnyezeti kwargs explicit csoportokra bontották fel

PR:#4581

A nyilvános Python-ügynök és a csevegési API-k már nem kezelik a nyilvános **kwargs továbbítást elsődleges futtatókörnyezet-adat mechanizmusként. A futásidejű értékek mostantól cél szerint vannak felosztva:

  • Olyan értékekhez használható function_invocation_kwargs , amelyeket csak az eszközöknek vagy a függvényközvetmezőknek kell látniuk.
  • Az ügyfélrétegű kwargs és az ügyfél köztes szoftver konfigurációjához használható client_kwargs .
  • Az FunctionInvocationContext eszköz-/futtatókörnyezet-adatok elérése (ctx.kwargs és ctx.session).
  • Az eszközök definiálása injektált környezeti paraméter helyett **kwargs; az injektált környezeti paraméterek nem jelennek meg a modell által látott sémában.
  • Ha eszközként delegál egy alügynököt, használja a agent.as_tool(propagate_session=True)-ot, ha az alügynöknek meg kell osztania a hívó munkamenetét.

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

Ha egyéni nyilvános run() vagy get_response() metódusokat implementál, adja hozzá a function_invocation_kwargs és client_kwargs az aláírásokhoz. Az eszközök esetében előnyben részesítsen egy FunctionInvocationContext megjegyzéssel ellátott paramétert – nevezhető ctx, context néven vagy bármilyen más jegyzetelt néven. Ha explicit sémát/bemeneti modellt ad meg, a rendszer ctx egy egyszerű, névvel nem ellátott paramétert is felismer. Ugyanaz a környezeti objektum érhető el a köztes szoftver működéséhez, és a futtatókörnyezeti függvény kwargs és munkamenet-állapota itt él. Azok az eszközdefiníciók, amelyek továbbra is **kwargs csak régi kompatibilitási útvonalat használnak, és el lesznek távolítva.


python-1.0.0rc4 / python-1.0.0b260311 (2026. március 11.)

Kibocsátási megjegyzések:python-1.0.0rc4

🔴Az Azure AI-integrációk mostantól a 2.0 GA-t célják azure-ai-projects

PR:#4536

A Python Azure AI-integrációk mostantól a GA 2.0 azure-ai-projects felületet feltételezik.

  • A támogatott függőségi tartomány most már azure-ai-projects>=2.0.0,<3.0.
  • foundry_features átengedés el lett távolítva az Azure AI-ügynök létrehozásának folyamatából.
  • Az előnézet viselkedése mostantól a támogatott ügyfeleket és szolgáltatókat magában foglaló rendszerekben használja a allow_preview=True.
  • A vegyes béta-/GA kompatibilitási illeszkedők eltávolításra kerültek, ezért frissítse az importálásokat és a típusneveket a 2.0-ás GA SDK felületére.

🔴 A GitHub Copilot eszközkezelői már használják ToolInvocation / ToolResult és a Python 3.11+

PR:#4551

agent-framework-github-copilot most már nyomon követi github-copilot-sdk>=0.1.32.

  • Az eszközkezelők a nyers ToolInvocationhelyett egy dict adatosztályt kapnak.
  • Térj vissza ToolResult, a snake_case mezőket használva, mint például result_type és text_result_for_llm.
  • A agent-framework-github-copilot csomaghoz most már a Python 3.11+-ra van szükség.

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 (2026. március 4.)

Kibocsátási megjegyzések:python-1.0.0rc3

🔴 Készségszolgáltató véglegesítve a kód alapján meghatározott szabályok szerint Skill / SkillResource

PR:#4387

A Python Agent Skills mostantól támogatja a kóddal definiált Skill és SkillResource objektumokat a fájlalapú készségek mellett, és a nyilvános szolgáltatói felület szabványosítva van a SkillsProvider-en.

  • Ha továbbra is a régebbi előzetes/belső FileAgentSkillsProvider verziót importálja, váltson a SkillsProvider verzióra.
  • A fájlalapú erőforrás-keresés már nem támaszkodik a backtick által idézett hivatkozásokra a fájlban SKILL.md; az erőforrásokat ehelyett a képességkönyvtárból deríti fel a rendszer.

Ha előzetes/belső kódot importált FileAgentSkillsProvider, váltson az aktuális nyilvános interfészre:

from agent_framework import Skill, SkillResource, SkillsProvider

python-1.0.0rc2 / python-1.0.0b260226 (2026. február 26.)

Kibocsátási megjegyzések:python-1.0.0rc2

🔴Deklaratív munkafolyamatok lecserélése InvokeToolInvokeFunctionTool

PR:#3716

A deklaratív Python-munkafolyamatok már nem használják a régi InvokeTool művelettípust. Cserélje le a InvokeFunctionTool elemre, és regisztrálja a WorkflowFactory.register_tool() elemmel a Python függvényeket.

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 (2026. február 19.)

Kiadás:agent-framework-core és agent-framework-azure-ai előléptetve.1.0.0rc1 Az összes többi csomag frissítve van.1.0.0b260219

🔴 Egységes Azure-hitelesítő adatok kezelése minden csomagban

PR:#4088

A ad_token, ad_token_providerés get_entra_auth_token paraméterek/segédek egységes credential paraméterrel lettek helyettesítve az összes Azure-ral kapcsolatos Python-csomagban. Az új megközelítés az automatikus jogkivonat-gyorsítótárazásra és frissítésre használja a azure.identity.get_bearer_token_provider-t.

Érintett osztályok:AzureOpenAIChatClient, AzureOpenAIResponsesClient, AzureOpenAIAssistantsClient, AzureAIClient, AzureAIAgentClient, AzureAIProjectAgentProvider, AzureAIAgentsProviderAzureAISearchContextProvider, PurviewClient, PurviewPolicyMiddleware, . PurviewChatPolicyMiddleware

Before:

from azure.identity import AzureCliCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    AzureCliCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAIResponsesClient(
    azure_ad_token_provider=token_provider,
    ...
)

After:

from azure.identity import AzureCliCredential

client = AzureOpenAIResponsesClient(
    credential=AzureCliCredential(),
    ...
)

A credential paraméter elfogadja TokenCredential, AsyncTokenCredential, vagy egy hívható token szolgáltatót. A tokenek gyorsítótárazása és frissítése automatikusan megtörténik.


🔴 Újratervezett Python-kivételhierarchia

PR:#4082

A "lapos" ServiceException családot egy tartományra kiterjedő kivételágak váltották fel egyetlen AgentFrameworkException gyökér alatt. Ez pontos except célokat és egyértelmű hibaszemantikát biztosít a hívók számára.

Új hierarchia:

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

Eltávolított kivételek:ServiceException, ServiceInitializationError, , ServiceResponseExceptionServiceContentFilterException, ServiceInvalidAuthError, ServiceInvalidExecutionSettingsError, ServiceInvalidRequestError, ServiceInvalidResponseError, AgentExecutionExceptionAgentInvocationError, 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
    ...

Megjegyzés:

Az inicializálási hibák mostantól a beépített ValueError/TypeError-t használják az egyéni kivételek helyett. Az Ügynök-keretrendszer kivételei tartományszintű hibák esetén vannak fenntartva.


🔴 Szolgáltatói állapot hatóköre: source_id

PR:#3995

Mostantól a szolgáltató horgai a teljes munkamenet-állapot helyett egy szolgáltatói hatókörű állapotszótárat (state.setdefault(provider.source_id, {})) kapnak. Ez azt jelenti, hogy a szolgáltatói implementációknak, amelyek eddig state[self.source_id]["key"]-en keresztül fértek hozzá a beágyazott állapothoz, most közvetlenül state["key"]-hez kell hozzáférniük.

Emellett az InMemoryHistoryProvider alapértelmezett source_id érték a helyről a másikra "memory"módosult"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")

🔴 Csevegő/ügynöküzenetek beírásának igazítása (run vs get_response)

PR:#3920

A csevegő kliens implementációk get_response mostantól következetesen kapnak Sequence[Message]. agent.run(...)továbbra is rugalmas (str, Content, Message vagy ezek sorozata), és normalizálja a bemeneteket, mielőtt hívná a chat kliens-eket.

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] a sémaátengedéshez eltávolított általános beállítás

PR:#3907

A sémaalapú eszközútvonalak már nem támaszkodnak az előző FunctionTool[Any] általános viselkedésre. Használjon FunctionTool közvetlenül, és adjon meg egy pydantikus BaseModel-sémát vagy explicit sémát, ha szükséges (például a @tool(schema=...)).

Before:

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

After:

placeholder: FunctionTool = FunctionTool(...)

🔴 Pydantic Settings helyére TypedDict + load_settings()

PRs:#3843, #4032

A pydantic-settings-alapú AFBaseSettings osztályt egy egyszerűsített, függvényalapú beállítási rendszerrel cseréltük le, amely TypedDict és load_settings()-t használ. A pydantic-settings függőség teljesen el lett távolítva.

Mostantól az összes beállításosztály (pl. OpenAISettings, AzureOpenAISettings, AnthropicSettings) TypedDict definíciók, és a beállításértékek az attribútumok helyett szótárszintaxist használva érhetők el.

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

Fontos

Az Agent Framework nem tölti be automatikusan az értékeket a fájlokból .env . Az .env betöltéséhez kifejezetten hozzá kell járulnia az alábbi módok valamelyikével:

  • Az alkalmazás indításakor a load_dotenv() meghívása a python-dotenv csomagból
  • env_file_path=".env" Továbbításload_settings()
  • Környezeti változók beállítása közvetlenül a rendszerhéjban vagy az IDE-ben

A load_settings feloldási sorrend a következő: explicit felülbírálások → .env fájlértékek (ha env_file_path meg van adva) → környezeti változók → alapértelmezett értékek. Ha megadja env_file_path, a fájlnak léteznie kell, különben egy FileNotFoundError hibát ad vissza.


🟡 Az érvelési modell munkafolyamat-átadásának és előzményeinek szerializálásának javítása

PR:#4083

Több hibát is kijavít érvelési modellek (pl. gpt-5-mini, gpt-5.2) használata esetén többügynök-munkafolyamatokban. A Válaszok API érvelési elemei most már megfelelően szerializálva vannak, és csak akkor szerepelnek az előzményekben, ha function_call egy is jelen van, megakadályozva az API-hibák kialakulását. A titkosított/rejtett érvelési tartalom már megfelelően ki van bocsátva, és a summary mező formátuma ki lett javítva. Az service_session_id az átadás során is törlődik, hogy elkerüljük az ügynökközi állapot szivárgását.


🟡 Az alapkőzet hozzáadva core[all] és az eszközválasztás alapértelmezett beállítása javítva

PR:#3953

Az Amazon Bedrock mostantól az agent-framework-core[all] extrák részét képezi, és a agent_framework.amazon lusta importálási felületen érhető el. Az eszközválasztási viselkedést is kijavították: a be nem állított eszközválasztási értékek nincsenek beállítva, így a szolgáltatók saját szolgáltatásaik alapértelmezett értékeit használják, míg a kifejezetten beállított értékek megmaradnak.

from agent_framework.amazon import BedrockChatClient

🟡 Az AzureAIClient figyelmeztetett a nem támogatott futtatókörnyezet-felülbírálásokra

PR:#3919

A módosítás időpontjában a AzureAIClient figyelmeztetést naplózott, amikor a futtatókörnyezet tools vagy a structured_output eltér az ügynök létrehozási idejének konfigurációjától. Ez a Python-felület azóta el lett távolítva. Az aktuális Python-kódhoz használja a FoundryChatClient akkor, ha alkalmazás által birtokolt eszköz- vagy futtatókörnyezet-konfigurálásra van szüksége, vagy a OpenAIChatClient közvetlen Responses API-forgatókönyvekhez, amelyek dinamikus felülbírálást igényelnek.


🟡 workflow.as_agent() Mostantól a helyelőzmény az alapértelmezett, ha a szolgáltatók nincsenek beállítva

PR:#3918

Mostantól, ha workflow.as_agent() anélkül, hogy context_providers lenne, jön létre, automatikusan hozzáadja a InMemoryHistoryProvider("memory") -t alapértelmezés szerint. Ha a környezetszolgáltatók explicit módon vannak megadva, a lista változatlan marad.

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

🟡 OpenTelemetry nyomkövetési kontextus továbbított MCP kérésekhez

PR:#3780

Az OpenTelemetria telepítésekor a nyomkövetési környezet (pl. W3Ctraceparent) automatikusan be lesz ágyazva az MCP-kérelmekbe.params._meta Ez lehetővé teszi a teljes körű elosztott nyomkövetést az ügynök → MCP-kiszolgálóhívások között. Nincs szükség kódmódosításra – ez az additív viselkedés aktiválódik, ha létezik érvényes span-környezet.


🟡 Tartós munkafolyamat-támogatás az Azure Functionshez

PR:#3630

A agent-framework-azurefunctions csomag mostantól támogatja a gráfok Azure Durable Functionsben való futtatását Workflow . Az agent entitások, tevékenységfüggvények és HTTP-végpontok automatikus regisztrálásához adjon meg egy workflow paramétert a AgentFunctionApp számára.

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

Támogatja a fan-out/fan-in folyamatokat, a megosztott állapotot és az emberi beavatkozást a folyamatokban konfigurálható időtúllépéssel és automatikus elutasítással az időtúllépési idő lejártakor.


python-1.0.0b260212 (2026. február 12.)

Kibocsátási megjegyzések:python-1.0.0b260212

🔴 Hosted*Tool az ügyfélmetelyek get_*_tool() által lecserélt osztályok

PR:#3634

Az eszközosztályokat eltávolítottuk a gyári metódusok javára, amelyek ügyfélspecifikusak. Így az eszköz rendelkezésre állása a szolgáltató számára explicit módon jelenik meg.

Eltávolított osztály 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()]

🔴 Munkamenet-/környezetszolgáltatói folyamat véglegesítve (AgentSession, context_providers)

PR:#3850

A Python-munkamenet és a környezetszolgáltató áttelepítése befejeződött. AgentThread és a régi környezetszolgáltatói típusok el lettek távolítva.

  • AgentThreadAgentSession
  • agent.get_new_thread()agent.create_session()
  • agent.get_new_thread(service_thread_id=...)agent.get_session(service_session_id=...)
  • A context_provider= / chat_message_store_factory= mintákat a context_providers=[...] váltja fel.
  • ChatMessageStore el lett távolítva. Használja a HistoryProvider elemet (vagy az alapértelmezett memóriabeli esethez a InMemoryHistoryProvider elemet); mindkettő a agent_framework modulból van exportálva. Ha nincs átadva kontextusszolgáltató, az ügynök automatikusan beinjektálja a InMemoryHistoryProvider elemet.

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)

🔴 Az ellenőrzőpont-modell és a tárolási viselkedés újrabontása

PR:#3744

Az ellenőrzőpontok belső részeit újratervezték, ami hatással van a mentett ellenőrzőpontok kompatibilitására és az egyéni tárolási megvalósításokra.

  • WorkflowCheckpoint most élő objektumokat tárol (a szerializálás az Ellenőrzőpont-tárolóban történik)
  • FileCheckpointStorage mostantól a pickle szerializálást használja
  • workflow_id el lett távolítva, és previous_checkpoint_id hozzáadták
  • Elavult ellenőrzőpont-horgok el lettek távolítva

Ha továbbra is megőrzi az ellenőrzőpontokat a verziók között, a munkafolyamatok folytatása előtt hozza létre újra vagy migrálja a meglévő ellenőrzőpont-összetevőket.


🟡 Az Öntödei projektvégpontok eredetileg a AzureOpenAIResponsesClient

PR:#3814

Ez az előzetes verziójú funkció eredetileg lehetővé tette AzureOpenAIResponsesClient a Foundry-projektvégpontokhoz való csatlakozást. Az aktuális Python-útmutató a FoundryChatClient Foundry-projekt következtetéséhez vagy a FoundryAgent szolgáltatás által felügyelt Foundry-ügynökökhöz használatos, az eltávolított AzureOpenAIResponsesClient helyett.

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

🔴 A Köztes szoftver call_next már nem fogadja el context

PR:#3829

A köztes szoftver folytatása most nem vesz fel argumentumokat. Ha a köztes szoftver folyamatosan hívja a call_next(context), frissítse call_next()-re.

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 (2026. február 10.)

Kibocsátási megjegyzések:python-1.0.0b260210

🔴 Munkafolyamat-előállító metódusok eltávolítása WorkflowBuilder

PR:#3781

register_executor() és register_agent() el lettek távolítva a rendszerből WorkflowBuilder. Az összes építő metódus (add_edge, add_fan_out_edges, add_fan_in_edges, add_chain, add_switch_case_edge_group, add_multi_selection_edge_group) és start_executor már nem fogadnak el sztring neveket – közvetlenül végrehajtó vagy ügynök példányokat igényelnek.

Az állapot elkülönítéséhez helyezze a végrehajtó/ügynök példányosítását és a munkafolyamat-építést egy segédmetódusba, hogy minden hívás új példányokat hozzon létre.

WorkflowBuilder végrehajtókkal

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 ügynökökkel

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

Állapotelkülönítés segítő módszerekkel

A meghívásonként izolált állapotot igénylő munkafolyamatok esetében a konstrukciót egy segédmetódusban csomagolja be:

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 átnevezve erre: Agent, ChatMessage átnevezve erre: Message

PR:#3747

Az alapvető Python-típusok egyszerűbbek lettek a redundáns Chat előtag eltávolításával. Nincs megadva visszamenőleges kompatibilitási alias.

Előtte Utána
ChatAgent Agent
RawChatAgent RawAgent
ChatMessage Message
ChatClientProtocol SupportsChatGetResponse

Importok frissítése

Before:

from agent_framework import ChatAgent, ChatMessage

After:

from agent_framework import Agent, Message

Típushivatkozások frissítése

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

Megjegyzés:

A módosítás ChatClient nevezi át a(z) ChatResponse, ChatOptions és elemet.


🔴 Típusok API-felülvizsgálati frissítései a válasz- és üzenetmodelleket érintően

PR:#3647

Ez a kiadás az üzenet-/válaszírás és a segítő API-k széles körű, kompatibilitástörő törlését tartalmazza.

  • Role és FinishReason most már NewType burkolók az str számára, ismert értékekkelRoleLiteral/FinishReasonLiteral. Kezelje őket sztringként (nincs .value használat).
  • Message a konstrukció szabványosítva van Message(role, contents=[...]); a(z) contents sztringek automatikusan szöveges tartalommá alakulnak.
  • ChatResponse és AgentResponse konstruktorok mostantól a messages= (egyedi Message vagy sorozat) köré összpontosítanak; a régi text= konstruktor használat el lett távolítva a válaszokból.
  • ChatResponseUpdate és AgentResponseUpdate többé nem fogadja el text=; használja contents=[Content.from_text(...)].
  • A frissítés-egyesítő segédnevek egyszerűbbek voltak.
  • try_parse_value el lett távolítva a(z) ChatResponse-ból/ből és a(z) AgentResponse-ból/ből.

Segédmetódus átnevezése

Előtte Utána
ChatResponse.from_chat_response_updates(...) ChatResponse.from_updates(...)
ChatResponse.from_chat_response_generator(...) ChatResponse.from_update_generator(...)
AgentResponse.from_agent_run_response_updates(...) AgentResponse.from_updates(...)

A válaszfrissítési konstrukció frissítése

Before:

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

After:

from agent_framework import AgentResponseUpdate, Content

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

try_parse_value cserélje ki try/except-re .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}")

🔴 Egységesített run/get_response modell és ResponseStream használat

PR:#3379

A Python API-k a agent.run(...) és a client.get_response(...) köré lettek konszolidálva, és a streamelés a ResponseStream által van képviselve.

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)

🔴 Alapvető környezet/protokolltípus átnevezése

PRs:#3714, #3717

Előtte Utána
AgentRunContext AgentContext
AgentProtocol SupportsAgentRun

Frissítse az importálást, és ennek megfelelően írja be a széljegyzeteket.


🔴 A middleware folytatási paraméterének átnevezése call_next

PR:#3735

A köztesszoftver-aláírásoknak most már a call_next helyett a next-t kell használniuk.

Before:

async def my_middleware(context, next):
    return await next(context)

After:

async def my_middleware(context, call_next):
    return await call_next(context)

🔴 A TypeVar nevek szabványosítva (TNameNameT)

PR:#3770

A kódbázis mostantól egy konzisztens TypeVar elnevezési stílust követ, amelyben utótagot T használ.

Before:

TMessage = TypeVar("TMessage")

After:

MessageT = TypeVar("MessageT")

Ha egyéni burkolókat tart fenn a keretrendszer generikusai köré, tartsa a helyi TypeVar-neveket összhangban az új konvencióval, hogy csökkentse az annotációk módosítását.


🔴 Workflow-as-agent eredményei és adatátviteli változásai

PR:#3649

workflow.as_agent() viselkedése frissült, hogy a kimenet és a streaming igazodjon a szabványos ügynöki válasmintákhoz. Tekintse át az örökölt kimenettől/frissítéskezeléstől függő, ügynökként végzett munkafolyamat-felhasználókat, és frissítse őket az aktuális AgentResponse/AgentResponseUpdate folyamatra.


🔴 Konstruktorparaméterekbe áthelyezett Fluent Builder-metódusok

PR:#3693

Egyszeres konfigurációra vonatkozó fluent metódusok a 6 készítőn (WorkflowBuilder, SequentialBuilder, ConcurrentBuilder, GroupChatBuilder, MagenticBuilder, HandoffBuilder) áthelyezésre kerültek konstruktorparaméterekként. A konstruktorargumentumok javára a rendszer eltávolítja azokat a fluent metódusokat, amelyek egy beállítás egyetlen konfigurációs útvonalát alkották.

WorkflowBuilder

set_start_executor(), with_checkpointing()és with_output_from() el lesz távolítva. Használjon konstruktorparamétereket.

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()és with_intermediate_outputs() el lesz távolítva. Használjon konstruktorparamétereket.

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(), és with_intermediate_outputs() eltávolítandók. Használjon konstruktorparamétereket.

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()és with_intermediate_outputs() el lesz távolítva. Használjon konstruktorparamétereket.

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() és with_termination_condition() el lesz távolítva. Használjon konstruktorparamétereket.

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

Érvényesítési módosítások

  • WorkflowBuilder most konstruktor argumentumként szükséges start_executor (korábban fluent metódussal lett beállítva)
  • SequentialBuilder, ConcurrentBuilder, GroupChatBuilder, és MagenticBuilder most vagy participants vagy participant_factories az építési időpontban szükséges — ha egyiket sem adjuk meg, ValueError váltódik ki.

Megjegyzés:

HandoffBuilder konstruktorparaméterekként már elfogadott participants/participant_factories , és ebben a tekintetben nem módosult.


🔴 A munkafolyamat-események egyetlen WorkflowEvent elemmé egyesítve, type diszkriminátor használatával

PR:#3690

Az összes munkafolyamat-esemény alosztályát egyetlen általános WorkflowEvent[DataT] osztály váltotta fel. isinstance() Az eseménytípusok ellenőrzése helyett most a event.type sztring literált (például "output", "request_info", "status") kell ellenőriznie. Ez ugyanazt a mintát követi, mint az Content osztálykonszolidáció python-1.0.0b260123-ból.

Eltávolított eseményosztályok

A következő exportált esemény alosztályok már nem léteznek:

Régi osztály Új event.type érték
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"

Importok frissítése

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

Eseménytípus-ellenőrzések frissítése

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

Streamelés AgentResponseUpdate-vel

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

Írjon be széljegyzeteket

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

Megjegyzés:

WorkflowEvent általános (WorkflowEvent[DataT]), de vegyes események gyűjteményeihez használja WorkflowEvent[Any] vagy a nem paraméterezett WorkflowEvent-t.


🔴 workflow.send_responses* Eltávolított; Használja workflow.run(responses=...)

PR:#3720

send_responses() és send_responses_streaming() el lettek távolítva a programból Workflow. A szüneteltetett munkafolyamatok folytatása a válaszok közvetlen run()továbbításával.

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 átnevezve; a Statemunkafolyamat-állapot API-k szinkronban vannak

PR:#3667

Állapot API-k már nem igényelnek await, és az elnevezés szabványosításra került.

Előtte Utána
ctx.shared_state ctx.state
await ctx.get_shared_state("k") ctx.get_state("k")
await ctx.set_shared_state("k", v) ctx.set_state("k", v)
checkpoint.shared_state checkpoint.state

🔴 A vezényléskészítők átkerültek a agent_framework.orchestrations

PR:#3685

Az orchestration építők mostantól dedikált csomagnévtérben találhatók.

Before:

from agent_framework import SequentialBuilder, GroupChatBuilder

After:

from agent_framework.orchestrations import SequentialBuilder, GroupChatBuilder

🟡 Hosszan futó háttérfolyamatok válaszai és folytatási tokenek

PR:#3808

A háttérválaszok mostantól támogatottak a Python-ügynök futtatása során a options={"background": True} és a continuation_token esetében.

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

🟡 A munkamenet-/környezetszolgáltató előzetes verziótípusai egymás mellett hozzáadva

PR:#3763

Új munkamenet-/környezetfolyamat-típusok jelentek meg a növekményes migráláshoz használt örökölt API-k mellett, beleértve SessionContext és BaseContextProvider.


🟡 A kódértelmezés streamelése mostantól növekményes kóddeltákat is tartalmaz

PR:#3775

A streamelt kódértelmező mostantól a streamelt tartalomban futtatja a kód változásfrissítéseit, így a felhasználói felületek fokozatosan renderelhetik a generált kódot.


🟡 @tool támogatja a explicit sémakezelést

PR:#3734

Az eszközdefiníciók mostantól explicit sémakezelést is használhatnak, ha a következtetett sémakimenet testreszabást igényel.


python-1.0.0b260130 (2026. január 30.)

Kibocsátási megjegyzések:python-1.0.0b260130

🟡 ChatOptions és ChatResponse/AgentResponse most általános válaszformátumban

PR:#3305

ChatOptions, ChatResponseés AgentResponse most már általános típusok, amelyeket a válaszformátum típusa paraméterez. Ez jobb típuskövetkeztetést tesz lehetővé strukturált kimenetek használata esetén a következővel 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!)

Jótanács

Ez egy nem kompatibilitástörő fejlesztés. A típusparaméterek nélküli meglévő kód továbbra is működik. Nem kell megadnia a fenti kódrészletben szereplő típusokat a beállításokhoz és a válaszhoz; az egyértelműség kedvéért itt láthatók.


🟡 BaseAgent Támogatás hozzáadva a Claude Agent SDK-hoz

PR:#3509

A Python SDK már tartalmaz egy implementációt BaseAgent a Claude Agent SDK-hoz, amely lehetővé teszi az első osztályú adapteralapú használatot az Agent Frameworkben.


python-1.0.0b260128 (2026. január 28.)

Kibocsátási megjegyzések:python-1.0.0b260128

🔴 AIFunction átnevezve FunctionTool-ra és @ai_function átnevezve @tool-ra

PR:#3413

Az osztályt és a dekoratőrt átnevezték az iparági terminológiával való egyértelműség és konzisztencia érdekében.

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)

🔴 Gyári minta hozzáadva a GroupChathez és a Magentichez; API-átnevezések

PR:#3224

Hozzáadta a résztvevő gyártót és az orchestráló gyártót a csoportos csevegéshez. Az átnevezéseket is tartalmazza:

  • with_standard_managerwith_manager
  • participant_factoriesregister_participant

Before:

from agent_framework.workflows import MagenticBuilder

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

After:

from agent_framework.orchestrations import MagenticBuilder

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

🔴 Github átnevezve GitHub

PR:#3486

Az osztály- és csomagnevek a megfelelő burkolat használatára frissülnek.

Before:

from agent_framework_github_copilot import GithubCopilotAgent

agent = GithubCopilotAgent(...)

After:

from agent_framework_github_copilot import GitHubCopilotAgent

agent = GitHubCopilotAgent(...)

python-1.0.0b260127 (2026. január 27.)

Kibocsátási megjegyzések:python-1.0.0b260127

🟡 BaseAgent a GitHub Copilot SDK támogatása

PR:#3404

A Python SDK már tartalmazza a BaseAgent GitHub Copilot SDK-integrációk implementációját.


python-1.0.0b260123 (2026. január 23.)

Kibocsátási megjegyzések:python-1.0.0b260123

🔴 Egy osztályra egyszerűsített tartalomtípusok classmethod konstruktorokkal

PR:#3252

Az összes régi tartalomtípust (a BaseContent származtatásából) egyetlen Content osztályra cserélte osztálymetódusokkal, hogy meghatározott típusokat hozzon létre.

Teljes áttelepítési referencia

Régi típus Új metódus
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(...)

További új módszerek (közvetlen megelőző nélkül):

  • Content.from_text_reasoning(...) — Érvelési/gondolkodási tartalom
  • Content.from_hosted_vector_store(...) — Vektortároló-hivatkozások esetén
  • Content.from_usage(...) — Használati/token-információk
  • Content.from_mcp_server_tool_call(...) / Content.from_mcp_server_tool_result(...) — MCP-kiszolgálóeszközök esetén
  • Content.from_code_interpreter_tool_call(...) / Content.from_code_interpreter_tool_result(...) — Kódértelmezőhöz
  • Content.from_image_generation_tool_call(...) / Content.from_image_generation_tool_result(...) — Képgeneráláshoz

Típusellenőrzés

isinstance() Ellenőrzések helyett használja a tulajdonságottype:

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)

Egyszerű példa

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

🔴 Az annotációtípusokat egyszerűsítették Annotation és TextSpanRegion TypedDicts-re

PR:#3252

Az osztályalapú széljegyzettípusokat egyszerűbb TypedDict definíciókra cserélte.

Régi típus Új típus
CitationAnnotation (osztály) Annotation (TypedDict type="citation"-val)
BaseAnnotation (osztály) Annotation (TypedDict)
TextSpanRegion (osztály, amely SerializationMixin) TextSpanRegion (TypedDict)
Annotations (írja be az aliast) Annotation
AnnotatedRegions (írja be az aliast) 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"
}

Megjegyzés:

Annotation és TextSpanRegion mivel már TypedDict-ok, szótárakként hozd létre őket az osztálypéldányok helyett.


🔴 response_format érvényesítési hibák most már láthatók a felhasználók számára

PR:#3274

ChatResponse.valueés AgentResponse.value most emelje felValidationError, ha a séma érvényesítése sikertelen ahelyett, hogy csendesen visszatér.None

Before:

response = await agent.run(query, options={"response_format": MySchema})
if response.value:  # Returns None on validation failure - no error details
    print(response.value.name)

After:

from pydantic import ValidationError

# Option 1: Catch validation errors
try:
    print(response.value.name)  # Raises ValidationError on failure
except ValidationError as e:
    print(f"Validation failed: {e}")

# Option 2: Safe parsing (returns None on failure)
if result := response.try_parse_value(MySchema):
    print(result.name)

🔴 Az AG-UI futtatási logika egyszerűsítve; MCP- és Anthropic ügyféljavítások

PR:#3322

Az run AG-UI metódusa aláírása és viselkedése egyszerűbb lett.

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):
    ...

🟡 Az antropikus ügyfél mostantól támogatja response_format a strukturált kimeneteket

PR:#3301

Mostantól az OpenAI és az Azure ügyfelekhez hasonlóan az Anthropic ügyfelekkel is használhat strukturált kimeneti elemzést a response_format segítségével.


🟡 Azure AI-konfiguráció kibővítve (reasoning, rai_config)

PRs:#3403, #3265

Az Azure AI-támogatás az érvelési konfiguráció támogatásával és rai_config az ügynöklétrehozás során bővült.


python-1.0.0b260116 (2026. január 16.)

Kibocsátási megjegyzések:python-1.0.0b260116

🔴 create_agent átnevezve as_agent

PR:#3249

A metódust átnevezték, hogy jobban érthető legyen a célja.

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 átnevezve executor_id

PR:#3166

Az ingatlan átnevezve az API-konformitás érdekében.

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 támogatja a szolgáltatás által felügyelt munkamenet-folytonosságot

PR:#3136

AG-UI mostantól megőrzi a szolgáltatás által felügyelt beszélgetési identitást (például Foundry által felügyelt munkameneteket/szálakat) a többfordulós folytonosság fenntartása érdekében.


python-1.0.0b260114 (2026. január 14.)

Kibocsátási megjegyzések:python-1.0.0b260114

🔴 Vezénylések újrabontása

PR:#3023

Az orchestrationok széles körű újrabontása és egyszerűsítése az Agent Framework munkafolyamataiban:

  • Csoportos csevegés: A vezénylő végrehajtójának felosztása dedikált ügynökalapú és függvényalapú (BaseGroupChatOrchestrator, GroupChatOrchestrator, AgentBasedGroupChatOrchestrator). Egyszerűsített csillagtopológia műsorszórási modellel.
  • Átadás: Eltávolítottuk az egyrétegű, a koordinátori és az egyéni végrehajtói támogatást. Átkerült a közvetítési modellbe a HandoffAgentExecutor.
  • Szekvenciális és egyidejű: Egyszerűsített kéreleminformációs mechanizmus, amely az al-munkafolyamatokra támaszkodik a AgentApprovalExecutor és AgentRequestInfoExecutor használatával.

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

🔴 TypedDict és Generic néven bevezetett beállítások

PR:#3140

A beállítások most már TypedDict használatával vannak definiálva, ami javítja a típusbiztonságot és támogatja az IDE automatikus kiegészítését.

📖 A teljes migrálási utasításokért tekintse meg a Gépelt beállítások útmutatót.

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 eltávolítva; context_provider egyes számra; middleware listává kell válnia

PR:#3139

  • display_name az ügynökökből eltávolított paraméter
  • context_providers a szolgáltatók aktuális többes számsorparamétere marad
  • middleware most már szüksége van egy listára (már nem fogad el egyetlen példányt)
  • AggregateContextProvider eltávolítva a kódból (szükség esetén használjon minta implementációt)

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* átnevezve AgentResponse*

PR:#3207

AgentRunResponse és AgentRunResponseUpdate át lettek nevezve AgentResponse-re és AgentResponseUpdate-re.

Before:

from agent_framework import AgentRunResponse, AgentRunResponseUpdate

After:

from agent_framework import AgentResponse, AgentResponseUpdate

🟡 YAML-alapú munkafolyamatokhoz hozzáadott deklaratív munkafolyamat-futtatókörnyezet

PR:#2815

Gráfalapú futtatókörnyezet lett hozzáadva deklaratív YAML-munkafolyamatok végrehajtásához, amely lehetővé teszi a többügynökök vezénylését egyéni futtatókörnyezeti kód nélkül.


🟡 AZ MCP betöltési/megbízhatósági fejlesztései

PR:#3154

Az MCP-integrációk jobb kapcsolatvesztési kezelést, betöltéskor lapszámozási támogatást kaptak, valamint megjelenítési vezérlési lehetőségeket.


🟡 A Foundry A2ATool mostantól támogatja a cél URL-cím nélküli kapcsolatokat

PR:#3127

A2ATool A Foundry által támogatott A2A-kapcsolatokat már akkor is fel tudja oldani a projektkapcsolat metaadatain keresztül, ha nincs konfigurálva közvetlen cél URL-cím.


python-1.0.0b260107 (2026. január 7.)

Kibocsátási megjegyzések:python-1.0.0b260107

Ebben a kiadásban nincs jelentős változás.


python-1.0.0b260106 (2026. január 6.)

Kibocsátási megjegyzések:python-1.0.0b260106

Ebben a kiadásban nincs jelentős változás.


Összegző tábla

Release Kibocsátási megjegyzések Típus Változás PR
1.8.0 Notes 🔴 Törés github-copilot-sdk frissítve v1.0.0-ra: SubprocessConfig eltávolítva (helyette használja: RuntimeConnection + kwargs), az importútvonalak áthelyezve ide: copilot.session_events, copilot_homebase_directory, a jogosultságkezelők konkrét döntéstípusokat használnak #6292
1.8.0 Notes 🟡 Fejlesztés Eszközök fokozatos elérhetővé tétele a következőn keresztül: FunctionInvocationContext #6233
1.8.0 Notes 🟡 Fejlesztés MCP-alapú készségek felderítése (McpSkillsSource) #6169
1.8.0 Notes 🟡 Fejlesztés A Bedrock natív strukturált kimeneti támogatása a Converse API-n keresztül #6052
1.8.0 Notes 🟡 Fejlesztés Foundry Adaptive Evals integráció (értékelési szempontrendszer-generálás) #6101
1.8.0 Notes 🟡 Fejlesztés Miistral AI beágyazási ügyfélcsomag #5480
1.8.0 Notes 🟡 Fejlesztés agent-framework-declarative kiadásra jelölt verzióvá lépett elő #6256
1.7.0 Notes 🔴 Törés Deklaratív: a csak Pythonhoz tartozó műveletek eltávolítva, az aliasfajták pedig a C# kanonikus neveire átnevezve #6126
1.7.0 Notes 🟡 Fejlesztés HarnessAgent és a háttérügynökök tesztkörnyezet-szolgáltatója hozzáadva #6041
1.7.0 Notes 🟡 Fejlesztés A2AAgentSession hivatkozott feladatazonosítókkal és bemenethez szükséges támogatással #5980
1.6.0 Notes 🔴 Törés A rendszerfigyelési eszközök alapértelmezetten engedélyezettek a core- és foundry-csomagokhoz. #5865
1.6.0 Notes 🟡 Fejlesztés Rendszerhéjeszköz helyi és Docker-végrehajtási támogatással #5664
1.6.0 Notes 🟡 Fejlesztés Új agent-framework-monty CodeAct-szolgáltatói csomag #5915
1.4.0 Notes 🔴 Törés [Kísérleti készségek] Fájlismereti mappafelderítés igazítása agentskills.io specifikációhoz #5807
1.4.0 Notes 🔴 Törés [Kísérleti képességek] Bontsa ki a készségspecifikáció metaadatait ide: SkillFrontmatter #5775
1.4.0 Notes 🔴 Törés DevUI: Az alapértelmezett hozzáférés-szabályozás és a CORS-beállítások szigorítása #5740
1.4.0 Notes 🔴 Törés A2A: Migrálás az a2a-sdk 1.0-s verzióra #5752
1.3.0 Notes 🔴 Törés [Kísérleti készségek] Ügynöki készségek átstrukturálása többforrásos architektúrára #5584
1.3.0 Notes 🟡 Fejlesztés ClassSkill osztályalapú képességdefiníciók deklaratív metaadatokkal #5678
1.3.0 Notes 🟡 Fejlesztés Information-flow control prompt injektálási védelem #5331
1.3.0 Notes 🟡 Fejlesztés github-copilot-sdk frissítve lett a v1.0.0b2 verzióra a következőkkel: instruction_directories és copilot_home #5665
1.2.2 Notes 🔴 Törés A vezénylési terminál kimenetei szabványosítva; AgentResponseWorkflow.as_agent() csak a végső választ adja vissza #5301
1.2.2 Notes 🟡 Fejlesztés Azure AI Content Understanding környezetszolgáltatói csomagja #4829
1.1.0 Notes 🔴 Törés CosmosCheckpointStorage korlátozott pásztázással történő deszerializálás alapértelmezés szerint #5200
1.1.0 Notes 🟡 Fejlesztés GeminiChatClient Hozzáadott #4847
1.1.0 Notes 🟡 Fejlesztés Hyperlight CodeAct-csomag #5185
1.1.0 Notes 🟡 Fejlesztés Az Foundry Toolboxes támogatása #5346
1.1.0 Notes 🟡 Fejlesztés finish_reason a(z) AgentResponse és AgentResponseUpdate rendszeren #5211
1.0.1 Notes 🔴 Törés FileCheckpointStorage korlátozott pickle-deszerializáció (biztonsági szigorítás) #4941
1.0.1 Notes 🔴 Törés Az átadási munkafolyamat kontextuskezelésének javítása #5136
1.0.1 Notes 🟡 Fejlesztés Cosmos DB NoSQL munkafolyamatok ellenőrzőpont-tárolója #4916
1.0.0 Notes 🔴 Törés Message(..., text=...) funkciója teljesen megszűnt; inkább contents=[...] használatával hozzon létre szöveges üzeneteket #5062
1.0.0 Notes 🟡 Fejlesztés A kiadott Python-csomagok (agent-framework, agent-framework-core, agent-framework-openai, agent-framework-foundry) már nem igényelnek --pre; a béta-összekötőknél továbbra is szükség van rá. #5062
1.0.0 Notes 🔴 Törés A Python-beágyazások át lettek helyezve a agent_framework.foundry helyre; használja a agent-framework-foundry, FoundryEmbeddingClient, és FOUNDRY_MODELS_* beállításokat az eltávolított agent-framework-azure-ai csomag helyett. #5056
1.0.0 Notes 🔴 Törés workflow.run() most explicit használ function_invocation_kwargs / client_kwargs, a globális és végrehajtónkénti célzást a végrehajtóazonosítók határozzák meg. #5010
1.0.0 Notes 🟡 Fejlesztés GitHubCopilotAgent most meghívja a kontextusszolgáltatói before_run / after_run horgokat, és tartalmazza a szolgáltató által hozzáadott prompt kontextust #5013
1.0.0 Notes 🟡 Fejlesztés A Python strukturált kimenete mostantól támogatja a JSON séma leképezéseket response_format azzal, hogy az elemzett JSON megjelenik response.value #5022
1.0.0rc6 Csak PR 🔴 Törés Az elavult Azure/OpenAI kompatibilitási felületek el lettek távolítva; használja inkább a szolgáltatóvezető OpenAI-ügyfeleket vagy a Foundry Python-ügyfeleket #4990
1.0.0rc6 Csak PR 🔴 Törés Vezető szerepű újrabontás: agent-framework-openai, agent-framework-foundry és agent-framework-foundry-local felosztása; openAI-ügyfelek átnevezése; Foundry áthelyezése agent_framework.foundry-be; az Azure AI és az Asszisztensek kompatibilitási útvonalainak elavultatása #4818
1.0.0rc6 Csak PR 🔴 Törés agent-framework-core most szándékosan karcsú; telepítsen explicit szolgáltatói csomagokat, például agent-framework-openai vagy agent-framework-foundry, és telepítse mcp manuálisan az MCP-eszközökhöz minimális telepítések esetén, vagy használja a agent-framework metacsomagot a szélesebb körű alapértelmezett felülethez #4904
1.0.0rc6 Csak PR 🔴 Törés Az általános agent_framework.openai ügyfelek most már inkább az explicit útválasztási jeleket részesítik előnyben. Az OpenAI továbbra is az OpenAI-n marad, ha a OPENAI_API_KEY be van állítva, és az Azure-forgatókönyveknek explicit Azure-útválasztási bemeneteket, mint például a credential vagy azure_endpoint kell átadniuk, majd konfigurálniuk kell a api_version-t. #4925
1.0.0rc5 / 1.0.0b260318 N/A (ütemezett) 🔴 Törés Nyilvános futtatókörnyezeti kwargs felosztva function_invocation_kwargs és client_kwargs; az eszközök most FunctionInvocationContext / ctx.session használnak #4581
1.0.0rc4 / 1.0.0b260311 Notes 🔴 Törés Az Azure AI-integrációk mostantól a 2.0 GA-t célként használják azure-ai-projects ; foundry_features el lettek távolítva, és allow_preview az előzetes verziójú jóváhagyás #4536
1.0.0rc4 / 1.0.0b260311 Notes 🔴 Törés A GitHub Copilot integrációja most már használatban van ToolInvocation / ToolResult; agent-framework-github-copilot a Python 3.11+-ra van szükség #4551
1.0.0rc3 / 1.0.0b260304 Notes 🔴 Törés A képességszolgáltató kód által definiált elemeket ad Skill / SkillResourcehozzá; a régebbi FileAgentSkillsProvider importálásokat és a backtick erőforrás-hivatkozásokat frissíteni kell #4387
1.0.0rc2 / 1.0.0b260226 Notes 🔴 Törés Deklaratív munkafolyamatokkal InvokeTool elemet lecseréljük InvokeFunctionTool és WorkflowFactory.register_tool() elemre. #3716
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Törés Egységes Azure-hitelesítő adatok kezelése az Azure-csomagokban #4088
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Törés A Python kivételhierarchiát a következő területen tervezték újra: AgentFrameworkException #4082
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Törés A szolgáltatói állapot hatóköre mostantól a következő: source_id #3995
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Törés Az egyéni get_response() implementációknak Sequence[Message] el kell fogadniuk. #3920
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Törés FunctionTool[Any] A séma átengedési illesztő el lett távolítva #3907
1.0.0rc1 / 1.0.0b260219 Notes 🔴 Törés A beállítások átkerültek a /pydantic-settings fájlból AFBaseSettings a TypedDict + load_settings() #3843, #4032
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Fejlesztés Az érvelési modell munkafolyamatának átadása és az előzmények szerializálásának javítása megtörtént. #4083
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Fejlesztés Bedrock hozzáadva; core[all]az eszközválasztás alapértelmezett beállítása javítva #3953
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Fejlesztés AzureAIClient nem támogatott futtatókörnyezeti felülbírálásokra figyelmeztet #3919
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Fejlesztés workflow.as_agent() beilleszti a helyi előzményeket, ha a szolgáltatók nincsenek beállítva #3918
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Fejlesztés Az OpenTelemetry nyomkövetési környezete mcp-kérelmekre propagál #3780
1.0.0rc1 / 1.0.0b260219 Notes 🟡 Fejlesztés Tartós munkafolyamat-támogatás hozzáadva az Azure Functionshez #3630
1.0.0b260212 Notes 🔴 Törés Hosted*Tooleltávolított osztályok; üzemeltetett eszközök létrehozása ügyfél metódusokkal get_*_tool() #3634
1.0.0b260212 Notes 🔴 Törés Munkamenet-/környezetszolgáltatói folyamat véglegesítve: AgentThread eltávolítva, használja AgentSession + context_providers #3850
1.0.0b260212 Notes 🔴 Törés Ellenőrzőpont-modell/tár újrabontása (workflow_id eltávolítva, previous_checkpoint_id hozzáadva, a tárolási viselkedés megváltozott) #3744
1.0.0b260212 Notes 🟡 Fejlesztés AzureOpenAIResponsesClient a Foundry projektvégpontból hozható létre, vagy AIProjectClient #3814
1.0.0b260212 Notes 🔴 Törés A middleware folytatása már nem fogadja el context; frissítse a call_next(context) elemet a call_next() elemre. #3829
1.0.0b260210 Notes 🔴 Törés send_responses() / send_responses_streaming() Eltávolított; Használja workflow.run(responses=...) #3720
1.0.0b260210 Notes 🔴 Törés SharedState State→; a munkafolyamat-állapot API-k szinkron állapotúak, és az ellenőrzőpont állapotmezője át lett nevezve #3667
1.0.0b260210 Notes 🔴 Törés Az orchestration készítők átkerültek a csomagba agent_framework.orchestrations #3685
1.0.0b260210 Notes 🟡 Fejlesztés Háttérválaszok és continuation_token támogatás hozzáadva a Python-ügynök válaszaihoz #3808
1.0.0b260210 Notes 🟡 Fejlesztés A munkamenet-/környezet előnézeti típusai egymás mellett hozzáadva (SessionContext, BaseContextProvider) #3763
1.0.0b260210 Notes 🟡 Fejlesztés A streamelési kódértelmező frissítései mostantól növekményes kódeltolmálásokat tartalmaznak #3775
1.0.0b260210 Notes 🟡 Fejlesztés @tool a dekoratőr explicit sémakezelési támogatást ad hozzá #3734
1.0.0b260210 Notes 🔴 Törés register_executor() / register_agent() eltávolítva a WorkflowBuilder; közvetlenül használjon példányokat, segítő metódusok az állapotelkülönítéshez #3781
1.0.0b260210 Notes 🔴 Törés ChatAgentAgent, ChatMessageMessage, RawChatAgentRawAgent, ChatClientProtocolSupportsChatGetResponse #3747
1.0.0b260210 Notes 🔴 Törés Típus API áttekitése: Role/FinishReason típusváltozások, válasz/frissítés-konstruktor szigorítása, segítők átnevezése from_updates-re, és try_parse_value eltávolítása #3647
1.0.0b260210 Notes 🔴 Törés Az API-k standardizálva run/get_response és ResponseStream körül #3379
1.0.0b260210 Notes 🔴 Törés AgentRunContext átnevezve lett AgentContext #3714
1.0.0b260210 Notes 🔴 Törés AgentProtocol átnevezve lett SupportsAgentRun #3717
1.0.0b260210 Notes 🔴 Törés Middleware next paraméter átnevezve call_next #3735
1.0.0b260210 Notes 🔴 Törés TypeVar elnevezés egységesítése (TNameNameT) #3770
1.0.0b260210 Notes 🔴 Törés Munkafolyamat ügynökkénti kimenet/folyam viselkedése az aktuális ügynök válaszfolyamatához igazítva #3649
1.0.0b260210 Notes 🔴 Törés A fluent builder metódusok átkerültek a konstruktorparaméterekre 6 építőben #3693
1.0.0b260210 Notes 🔴 Törés Diszkriminánssal egyesített munkafolyamat-események egyetlen WorkflowEvent-ba type; isinstance()event.type == "..." #3690
1.0.0b260130 Notes 🟡 Fejlesztés ChatOptions / ChatResponse / AgentResponse általános válaszformátum #3305
1.0.0b260130 Notes 🟡 Fejlesztés BaseAgent Támogatás hozzáadva a Claude Agent SDK-integrációkhoz #3509
1.0.0b260128 Notes 🔴 Törés AIFunctionFunctionTool, @ai_function@tool #3413
1.0.0b260128 Notes 🔴 Törés Gyári minta a GroupChat/Magentichez; with_standard_managerwith_manager, participant_factoriesregister_participant #3224
1.0.0b260128 Notes 🔴 Törés GithubGitHub #3486
1.0.0b260127 Notes 🟡 Fejlesztés BaseAgent GitHub Copilot SDK-integrációk támogatása #3404
1.0.0b260123 Notes 🔴 Törés Egy osztályba Content összesített tartalomtípusok osztálymethodokkal #3252
1.0.0b260123 Notes 🔴 Törés response_format érvényesítési hibák most már felmerülnek ValidationError #3274
1.0.0b260123 Notes 🔴 Törés AG-UI futtatási logika leegyszerűsítve #3322
1.0.0b260123 Notes 🟡 Fejlesztés Az antropikus ügyfél támogatja response_format a strukturált kimeneteket #3301
1.0.0b260123 Notes 🟡 Fejlesztés Az Azure AI-konfiguráció kibővült a(z) reasoning és rai_config támogatásával. #3403, #3265
1.0.0b260116 Notes 🔴 Törés create_agentas_agent #3249
1.0.0b260116 Notes 🔴 Törés source_executor_idexecutor_id #3166
1.0.0b260116 Notes 🟡 Fejlesztés AG-UI támogatja a szolgáltatás által felügyelt munkamenet-/szál-folytonosságot #3136
1.0.0b260114 Notes 🔴 Törés Orkesztrálások újrabontása (GroupChat, Handoff, Sequential, Concurrent) #3023
1.0.0b260114 Notes 🔴 Törés TypedDict és Generic opciók #3140
1.0.0b260114 Notes 🔴 Törés display_name eltávolított; context_providerscontext_provider (egyes szám); middleware listának kell lennie #3139
1.0.0b260114 Notes 🔴 Törés AgentRunResponse / AgentRunResponseUpdate átnevezve AgentResponse/AgentResponseUpdate #3207
1.0.0b260114 Notes 🟡 Fejlesztés YAML-alapú munkafolyamatokhoz hozzáadott deklaratív futtatási környezet #2815
1.0.0b260114 Notes 🟡 Fejlesztés AZ MCP betöltési/megbízhatósági fejlesztései (kapcsolatvesztés kezelése, lapozás, reprezentációs vezérlők) #3154
1.0.0b260114 Notes 🟡 Fejlesztés Az Foundry A2ATool támogatja a explicit cél URL-cím nélküli kapcsolatokat #3127
1.0.0b260107 Notes Nincs jelentős változás
1.0.0b260106 Notes Nincs jelentős változás

Következő lépések