Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
-
SubprocessConfigeltávolítva — használjonRuntimeConnection.for_stdio(path=...)+ kulcsszóargumentumokat a(z)CopilotClientesetében (connection,log_level,base_directory). -
Áthelyezett importálási útvonalak –
copilot.generated.session_events→copilot.session_events. -
Beállítások átnevezve —
copilot_home→base_directory; a környezeti változó mostGITHUB_COPILOT_BASE_DIRECTORY(korábbanGITHUB_COPILOT_COPILOT_HOMEvolt). -
Engedélykezelők – használjon konkrét döntéstípusokat a(z)
PermissionRequestResult(kind=...)helyett. A beépítettPermissionHandler.approve_allrendszer 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
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
SkillFrontmatterattribú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
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
AgentResponseobjektumokra 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
WorkflowCheckpointExceptionhibá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 újallowed_checkpoint_typeskonstruktorparaméteren keresztül – ellenkező esetben a terhelések emelkednekWorkflowCheckpointException. - 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 aMessage(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á, ígycontents=["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ésagent-framework-foundrymost 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ésagent-framework-ollamatovábbra is igényelnek--pre. - Ha egyetlen telepítési parancs bétaverziós csomagot tartalmaz, tartsa meg a
--preazon 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ésFoundryEmbeddingSettingselemeket aagent_framework.foundry-ból. - Telepítse
agent-framework-foundrya Foundry csevegéshez, a szolgáltatás által kezelt ügynökökhöz, memóriaszolgáltatókhoz és beágyazódásokhoz. -
agent_framework.azuremár nem exportálAzureAIInferenceEmbeddingClient,AzureAIInferenceEmbeddingOptions,AzureAIInferenceEmbeddingSettingsvagyAzureAISettings. - Az öntödei beágyazások most már
FOUNDRY_MODELS_ENDPOINT,FOUNDRY_MODELS_API_KEY,FOUNDRY_EMBEDDING_MODELés opciókéntFOUNDRY_IMAGE_EMBEDDING_MODEL-t használnak. -
FoundryChatClientésFoundryAgenttovábbra is használja a projektvégpont beállításait, példáulFOUNDRY_PROJECT_ENDPOINTésFOUNDRY_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 aclient_kwargsegysé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.valueelemeznek (általábandictvagylist). - 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
modelmindenhol, ahol korábban amodel_id-t használta. -
Agent.default_optionsés futtatásonkéntoptions={...}most"model"-re számítanak, nem"model_id"-re. - A válaszobjektumok a
response.modelfelületet mutatják, nem aresponse.model_idfelü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, ésOPENAI_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ésAZURE_OPENAI_EMBEDDING_MODEL. - Antropikus most használja
ANTHROPIC_CHAT_MODEL, és Foundry Local használjaFOUNDRY_LOCAL_MODEL. - Az antropikus csomag olyan szolgáltató által üzemeltetett burkolókat is hozzáad, mint a
AnthropicFoundryClient,AnthropicBedrockClientésAnthropicVertexClient.
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ésHistoryProvidermost már a canonical Python alaposztályai. -
BaseContextProviderésBaseHistoryProviderideiglenesen 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 teljesrun()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_idvagyoptions={"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.azuremár nem exportáljaAzureOpenAI*vagy a régebbiAzureAI*ü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.openaifelületnek. -
OpenAIChatClientésOpenAIChatCompletionClientközvetlen OpenAI- vagy Azure OpenAI-forgatókönyvek esetén használjaOpenAIEmbeddingClient. - A
FoundryChatClienta Foundry-projektek következtetésére, míg aFoundryAgentPrompt ügynökökhöz vagy Hosted ügynökökhöz használható. - Az aktuális
agent_framework.azurené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 aagent_framework.foundryalatt.
Ha régebbi Python-kódot migrál, használja az alábbi cserelehetőségeket:
-
AzureOpenAIResponsesClient→OpenAIChatClient -
AzureOpenAIChatClient→OpenAIChatCompletionClient -
AzureOpenAIEmbeddingClient→OpenAIEmbeddingClient -
AzureAIAgentClient/AzureAIClient/AzureAIProjectAgentProvider/AzureAIAgentsProviderFoundryChatClient→ vagyFoundryAgentattól függően, hogy az alkalmazás az ügynökdefiníció tulajdonosa-e -
OpenAIAssistantsClient/OpenAIAssistantProviderOpenAIChatClient→ a Python OpenAI aktuális működéséhez, vagyFoundryAgentha 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-openaicsomagban élnek, miközben továbbra is importálnak aagent_framework.openainévtérből. - A Microsoft Foundry-ügyfelek mostantól a
agent-framework-foundrycsomagban és aagent_framework.foundrynévtérben élnek. - A Foundry Local ki van téve a
agent_framework.foundryfájlból, mintFoundryLocalClient. - A(z)
OpenAIResponsesClientnevet megváltoztatjukOpenAIChatClient-re. - A(z)
OpenAIChatClientnevet megváltoztatjukOpenAIChatCompletionClient-re. - Az ügyfélkonfiguráció szabványosítva van
model-n, és lecseréli az olyan régebbi paramétereket, mint azmodel_id,deployment_nameésmodel_deployment_name. - Új Azure OpenAI-kódhoz használja a
agent_framework.openaiklienseket. A korábbiAzureOpenAI*kompatibilitási toldalékokat később a #4990-ben eltávolították. - Új Foundry-kód esetén használja a
FoundryChatClientközvetlen projekt következtetésekhez,FoundryAgenta Prompt Agents és HostedAgents, valamintFoundryLocalClienta 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:
-
AzureOpenAIResponsesClient→OpenAIChatClient -
AzureOpenAIChatClient→OpenAIChatCompletionClient -
AzureOpenAIEmbeddingClient→OpenAIEmbeddingClient -
AzureOpenAIAssistantsClientOpenAIChatClient→ a direct Responses API migrálásához, vagyFoundryAgentha 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_name → model. 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_MODELhasználataOpenAIChatClientesetén, azOPENAI_CHAT_COMPLETION_MODELOpenAIChatCompletionClientesetén, azOPENAI_MODELpedig közös tartalékként. - Az Azure OpenAI mostantól a
AZURE_OPENAI_CHAT_MODEL-t használja aOpenAIChatClientszámára, aAZURE_OPENAI_CHAT_COMPLETION_MODEL-t aOpenAIChatCompletionClientszámára, és aAZURE_OPENAI_MODELa közös tartalékként szolgál. - Használja a
azure_endpointjelölést az Azure OpenAI-erőforrás URL-címeihez, vagy abase_urljelölést, ha már rendelkezik teljes.../openai/v1URL-címmel, és állítsa be aapi_versionjelö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ésFOUNDRY_AGENT_VERSIONbevezetése a Cloud Foundry ügyfelek számára. - Használja a
ANTHROPIC_CHAT_MODELAnthropic ésFOUNDRY_LOCAL_MODELFoundry 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-coremost szándékosan minimalistává lett. - Ha importálja
agent_framework.openai, telepítse azagent-framework-openaielemet. - Ha importálja
agent_framework.foundry, telepítseagent-framework-foundrya 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 aagent-framework-foundry-local --prejelö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ítsemcp --premanuálisan. A WebSocket MCP-támogatásához telepítse a következőtmcp[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_KEYkonfigurálva van, az általános ügyfelek az OpenAI-n maradnak, hacsak nem ad át explicit Azure-útválasztási jelet, példáulcredentialvagyazure_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 aOpenAIChatCompletionClient, 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:
-
AzureOpenAIEmbeddingClient→OpenAIEmbeddingClient -
AZURE_OPENAI_EMBEDDING_MODEL→model -
OPENAI_EMBEDDING_MODELAz 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
FunctionInvocationContexteszköz-/futtatókörnyezet-adatok elérése (ctx.kwargsésctx.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 egydictadatosztályt kapnak. - Térj vissza
ToolResult, a snake_case mezőket használva, mint példáulresult_typeéstext_result_for_llm. - A
agent-framework-github-copilotcsomaghoz 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ő
FileAgentSkillsProviderverziót importálja, váltson aSkillsProviderverzió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()
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 apython-dotenvcsomagbó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.
-
AgentThread→AgentSession -
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 acontext_providers=[...]váltja fel. -
ChatMessageStoreel lett távolítva. Használja aHistoryProviderelemet (vagy az alapértelmezett memóriabeli esethez aInMemoryHistoryProviderelemet); mindkettő aagent_frameworkmodulból van exportálva. Ha nincs átadva kontextusszolgáltató, az ügynök automatikusan beinjektálja aInMemoryHistoryProviderelemet.
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.
-
WorkflowCheckpointmost élő objektumokat tárol (a szerializálás az Ellenőrzőpont-tárolóban történik) -
FileCheckpointStoragemostantól a pickle szerializálást használja -
workflow_idel lett távolítva, ésprevious_checkpoint_idhozzá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ésFinishReasonmost márNewTypeburkolók azstrszámára, ismert értékekkelRoleLiteral/FinishReasonLiteral. Kezelje őket sztringként (nincs.valuehasználat). -
Messagea konstrukció szabványosítva vanMessage(role, contents=[...]); a(z)contentssztringek automatikusan szöveges tartalommá alakulnak. -
ChatResponseésAgentResponsekonstruktorok mostantól amessages=(egyediMessagevagy sorozat) köré összpontosítanak; a régitext=konstruktor használat el lett távolítva a válaszokból. -
ChatResponseUpdateésAgentResponseUpdatetöbbé nem fogadja eltext=; használjacontents=[Content.from_text(...)]. - A frissítés-egyesítő segédnevek egyszerűbbek voltak.
-
try_parse_valueel 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
| 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 (TName → NameT)
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
-
WorkflowBuildermost konstruktor argumentumként szükségesstart_executor(korábban fluent metódussal lett beállítva) -
SequentialBuilder,ConcurrentBuilder,GroupChatBuilder, ésMagenticBuildermost vagyparticipantsvagyparticipant_factoriesaz építési időpontban szükséges — ha egyiket sem adjuk meg,ValueErrorvá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_manager→with_manager -
participant_factories→register_participant
Before:
from agent_framework.workflows import MagenticBuilder
builder = MagenticBuilder()
builder.with_standard_manager(manager)
builder.participant_factories(factory1, factory2)
After:
from agent_framework.orchestrations import MagenticBuilder
builder = MagenticBuilder()
builder.with_manager(manager)
builder.register_participant(factory1)
builder.register_participant(factory2)
🔴
Github á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)
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ésAgentRequestInfoExecutorhaszná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_nameaz ügynökökből eltávolított paraméter -
context_providersa szolgáltatók aktuális többes számsorparamétere marad -
middlewaremost már szüksége van egy listára (már nem fogad el egyetlen példányt) -
AggregateContextProvidereltá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_home → base_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 |
ChatAgent → Agent, ChatMessage → Message, RawChatAgent → RawAgent, ChatClientProtocol → SupportsChatGetResponse |
#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 (TName → NameT) |
#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 |
AIFunction → FunctionTool, @ai_function → @tool |
#3413 |
| 1.0.0b260128 | Notes | 🔴 Törés | Gyári minta a GroupChat/Magentichez; with_standard_manager → with_manager, participant_factories → register_participant |
#3224 |
| 1.0.0b260128 | Notes | 🔴 Törés |
Github → GitHub |
#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_agent → as_agent |
#3249 |
| 1.0.0b260116 | Notes | 🔴 Törés |
source_executor_id → executor_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_providers → context_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 | — |