Python 2026 Önemli Değişiklikler Kılavuzu

Bu belgede, 2026'nın başlangıcından bu yana Python sürümlerindeki önemli değişiklikler ve kodunuzu etkileyebilecek önemli geliştirmeler de dahil olmak üzere tüm önemli değişiklikler listelenmiştir. Her değişiklik şu şekilde işaretlenir:

  • 🔴 Hata — Yükseltme için kod değişiklikleri gerektirir
  • 🟡 Geliştirme — Yeni yetenek veya geliştirme; mevcut kod çalışmaya devam ediyor

Bu belge, 2026 önizlemeden 1.0.0'a geçişte önemli Python değişikliklerini izler, bu nedenle önemli değişiklikleri kaçırmadığınızdan emin olmak için lütfen sürümler arasında yükseltme yaparken bu değişikliklere bakın. Belirli konularla ilgili ayrıntılı yükseltme yönergeleri (örneğin, seçenekler geçişi) için ilgili yükseltme kılavuzlarına veya çekme isteklerine bakın.


python-1.0.0

Bu bölüm, python-1.0.0rc6 sonrasında gerçekleşen ve artık python-1.0.0'nin bir parçası olan önemli Python değişikliklerini belirtir.

🔴 Message(..., text=...) inşaat artık tamamen kaldırılmıştır

Pr:#5062

ÇEKME isteği#5062, ile Messagenesneleri hala oluşturan text=... son çerçeve tarafı kod yollarını kaldırarak önceki Python ileti modeli temizleme işlemini tamamlar.

  • Message(role="user", contents=["Hello"]) yerine Message(role="user", text="Hello") olarak metin mesajları oluşturun.
  • Bu, iş akışı istekleri, özel ara yazılım yanıtları, düzenleme yardımcıları ve geçiş kodu dahil olmak üzere iletileri doğrudan oluşturduğunuz her yerde geçerlidir.
  • İçindeki contents=[...] düz dizeler hala otomatik olarak metin içeriği olarak normalleştirilir, bu nedenle contents=["Hello"] en basit salt metin biçimi olarak kalır.

Before:

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

After:

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

🟡 Yayımlanan Python paketleri artık gerekli değildir --pre

Pr:#5062

PR #5062 , ana Python paketlerini 'a 1.0.0 yükseltiyor ve yayımlanan paketleri hala yayın öncesi olan paketlerden ayırt etmek için yükleme kılavuzunu güncelleştirir.

  • agent-framework, agent-framework-core, agent-framework-openaive agent-framework-foundry artık paket olarak kullanıma sunulur ve artık gerektirmez --pre.
  • Beta bağlayıcıları, agent-framework-ag-ui, agent-framework-azurefunctions, agent-framework-copilotstudio, agent-framework-foundry-local, agent-framework-github-copilot, ve agent-framework-mem0 gibi, yine de --pre gerektirir.
  • Tek bir yükleme komutu herhangi bir beta paketi içeriyorsa, bu komutu kullanmaya devam edin --pre .

🔴 Foundry artık Python eklemelerine ve model-uç nokta ayarlarına sahip

Pr:#5056

PR#5056, bağımsız agent-framework-azure-ai paketini kaldırır ve Python ekleme yüzeyini agent-framework-foundry ve agent_framework.foundry üzerine taşır.

  • FoundryEmbeddingClient, FoundryEmbeddingOptions ve FoundryEmbeddingSettings öğelerini agent_framework.foundry'den kullanın.
  • Foundry sohbeti, hizmet yönetimli aracılar, bellek sağlayıcıları ve eklemeler için agent-framework-foundry yükleyin.
  • agent_framework.azureartık , , AzureAIInferenceEmbeddingClientAzureAIInferenceEmbeddingOptionsveya AzureAIInferenceEmbeddingSettingsdışarı aktarmazAzureAISettings.
  • Foundry gömmeleri artık FOUNDRY_MODELS_ENDPOINT, FOUNDRY_MODELS_API_KEY, FOUNDRY_EMBEDDING_MODEL ve isteğe bağlı FOUNDRY_IMAGE_EMBEDDING_MODEL kullanır.
  • FoundryChatClient ve FoundryAgent, proje uç nokta ayarlarını, FOUNDRY_PROJECT_ENDPOINT ve FOUNDRY_MODEL gibi, kullanmaya devam ediyor.

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

🔴 İş akışları artık çalışma zamanı kwargs'larını açık demetler aracılığıyla yönlendirmektedir

Pr:#5010

PR #5010 Python'ı workflow.run(...) günceller, böylece çalışma zamanı kwargs genel olarak iletilmek yerine function_invocation_kwargs= ve client_kwargs= olarak açıkça geçirilir**kwargs.

  • Düz eşleme global olarak ele alınır ve iş akışındaki tüm eşleşen aracı yürütücülerine iletilir.
  • Bir veya daha fazla üst düzey anahtar yürütücü kimlikleriyle eşleşiyorsa, tüm eşleme yürütücü başına hedefleme olarak kabul edilir ve her yürütücü yalnızca kendi girdisini alır.
  • Özel AgentExecutor(id="...") ve diğer açık iş akışı yürütücü kimlikleri, hedeflediğiniz anahtarlardır.
  • Aynı genel ve hedeflenen kurallar hem hem function_invocation_kwargsde client_kwargs için geçerlidir.

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 artık her çağrının çevresinde bağlam sağlayıcılarını çalıştırır

Pr:#5013

PR #5013, Python'un GitHubCopilotAgent kabul ettiği ancak gerçekten çağırmadığı davranış boşluklarını context_providers düzeltir.

  • before_run() şimdi Copilot istemi gönderilmeden önce çalışır.
  • Copilot CLI'ya ulaşan istemde sağlayıcı tarafından eklenen iletiler ve yönergeler bulunur.
  • after_run() artık akış yolu da dahil olmak üzere son yanıt toplandıktan sonra çalışır.

Eğer zaten context_providers'yı GitHubCopilotAgent'ye aktardıysanız, herhangi bir geçişe gerek yoktur; kancalar artık Python aracı yüzeyinin geri kalanıyla tutarlı bir şekilde çalışmaktadır.


🟡 Yapılandırılmış çıktı artık Pydantic modellerine ek olarak JSON şema eşlemelerini de kabul ediyor

Pr:#5022

PR #5022 , Python yapılandırılmış çıkış ayrıştırmasını genişletir, böylece response_format ya bir Pydantic modeli ya da bir JSON şeması eşlemesi olabilir.

  • Pydantic modelleri yine de response.value üzerinde tipli model örneklerine ayrıştırılır.
  • JSON şema eşlemeleri artık üzerinde response.value (genellikle dict veya list) JSON uyumlu Python değerlerine ayrıştırılmaktadır.
  • Aynı ayrıştırma kuralları, bir akıştan son yanıtı topladığınızda da geçerlidir.

Bu, hataya neden olan bir değişiklik yerine bir geliştirmedir, ancak şemaları zaten JSON benzeri sözlükler olarak depoladığınızdan emin olmak yararlı olur.


python-1.0.0rc6

Bu bölüm, python-1.0.0rc6 için izlenen veya ile gelen önemli Python değişikliklerini belirtir.

🔴 Model seçimi şu şekilde standartlaştırılır: model

Pr:#4999

PR #4999 oluşturucular, yazılı seçenekler, ajan varsayılanları, yanıt nesneleri ve ortam değişkenleri arasında Python tarafı model seçimi temizliğini tamamlar.

  • Daha önce model_id kullandığınız her yerde model kullanın.
  • Agent.default_options ve her çalışma options={...} artık "model", "model_id" bekliyor.
  • Yanıt nesneleri response.model olarak görünür, response.model_id olarak değil.
  • OpenAI ayarları artık OPENAI_MODEL, OPENAI_CHAT_MODEL, OPENAI_CHAT_COMPLETION_MODEL ve OPENAI_EMBEDDING_MODEL kullanıyor.
  • Azure OpenAI ayarları artık , AZURE_OPENAI_MODEL, AZURE_OPENAI_CHAT_MODELve AZURE_OPENAI_CHAT_COMPLETION_MODELkullanırAZURE_OPENAI_EMBEDDING_MODEL.
  • Antropik artık kullanır ANTHROPIC_CHAT_MODELve Foundry Local kullanır FOUNDRY_LOCAL_MODEL.
  • Anthropic paketi ayrıca AnthropicFoundryClient, AnthropicBedrockClient ve AnthropicVertexClient gibi sağlayıcı tarafından barındırılan sarmalayıcıları da ekler.

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

🔴 Bağlam sağlayıcıları model çağrısı başına ara yazılım ekleyebilir ve geçmişi kalıcı hale getirebilir.

Pr:#4992

PR #4992 , Python bağlam sağlayıcısı işlem hattını ve çoklu çağrı çalıştırmaları sırasında çerçeve tarafından yönetilen geçmişin kalıcı hale nasıl alınabileceğini güncelleştirir.

  • ContextProvider ve HistoryProvider artık kurallı Python temel sınıflarıdır.
  • BaseContextProvider ve BaseHistoryProvider geçici olarak uyumluluk için kullanım dışı kalan diğer adlar olarak kalır, ancak yeni kod yeni adlara geçirilmelidir.
  • SessionContext, sağlayıcı aracılığıyla eklenen sohbet veya işlev ara yazılımını extend_middleware() aracılığıyla toplayabilir ve düzleştirilmiş listeyi get_middleware() aracılığıyla erişime açabilir.
  • Agent(..., require_per_service_call_history_persistence=True) her model çağrısının etrafında geçmiş sağlayıcılar çalıştırır, tam run() sürümünden sonra bir kez değil.
  • Bu mod, çerçeveyle yönetilen yerel geçmişe yöneliktir ve session.service_session_id veya options={"conversation_id": ...} gibi mevcut bir hizmet tarafından yönetilen etkileşimle birleştirilemez.

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

🔴 Kullanım dışı bırakılan Azure/OpenAI uyumluluk yüzeyleri kaldırıldı

Pr:#4990

PR #4990, önceki önizleme sürümleri sırasında kullanılabilir durumda kalan ve artık kullanımdan çıkarılan Python uyumluluk yüzeylerini kaldırarak sağlayıcının lider geçişini #4818 tamamlar.

  • agent_framework.azure artık AzureOpenAI* veya eski AzureAI* aracı/istemci/sağlayıcı yüzeylerini dışarı aktarmaz.
  • Python OpenAI Asistanları uyumluluk tipleri artık mevcut agent_framework.openai altyapının bir parçası değildir.
  • Doğrudan OpenAI veya Azure OpenAI senaryoları için , OpenAIChatClientve OpenAIChatCompletionClient kullanınOpenAIEmbeddingClient.
  • Foundry proje çıkarımı için FoundryChatClient ve İstem Aracıları veya HostedAgents için FoundryAgent kullanın.
  • Geçerli agent_framework.azure ad alanı artık Azure AI Search, Cosmos geçmişi, Azure İşlevleri ve dayanıklı iş akışları gibi kalan Azure tümleştirmelerini kapsar. Dökümhane sohbeti, aracı, bellek ve ekleme istemcileri agent_framework.foundry altında bulunur.

Eski Python kodunu geçiriyorsanız şu değiştirmeleri kullanın:

  • AzureOpenAIResponsesClientOpenAIChatClient
  • AzureOpenAIChatClientOpenAIChatCompletionClient
  • AzureOpenAIEmbeddingClientOpenAIEmbeddingClient
  • AzureAIAgentClient / AzureAIClient / AzureAIProjectAgentProvider / AzureAIAgentsProvider uygulamanızın FoundryChatClient aracı tanımına sahip olup olmadığına bağlı olarak → veya FoundryAgent.
  • OpenAIAssistantsClient / OpenAIAssistantProvider OpenAIChatClient Geçerli Python OpenAI çalışması için veya Foundry'de FoundryAgent hizmet tarafından yönetilen bir aracıya ihtiyacınız varsa →

🔴 Lider sağlayıcı müşteri tasarımı ve paket ayrıştırma

Pr:#4818

PR #4818 , Python sağlayıcı yüzeyini sağlayıcıya özgü paketler ve ad alanları çevresinde yeniden düzenler.

  • OpenAI müşterileri artık agent-framework-openai paketinde bulunuyor ve hala agent_framework.openai ad alanından içeri aktarıyor.
  • Microsoft Foundry müşterileri artık agent-framework-foundry paketi ve agent_framework.foundry ad alanında bulunmaktadır.
  • Foundry Local öğesi agent_framework.foundry'den FoundryLocalClient olarak kullanıma sunulur.
  • OpenAIResponsesClient OpenAIChatClientolarak yeniden adlandırılır.
  • OpenAIChatClient OpenAIChatCompletionClientolarak yeniden adlandırılır.
  • İstemci yapılandırması, model, model_id ve deployment_name gibi eski parametrelerin yerine model_deployment_name üzerinde standartlaştırılmıştır.
  • Yeni Azure OpenAI kodu için agent_framework.openai istemcilerini kullanın. Önceki AzureOpenAI* uyumluluk dolguları daha sonra #4990'da kaldırıldı.
  • Yeni Foundry kodu için FoundryChatClient doğrudan proje çıkarımı, FoundryAgent İstem Aracıları ve HostedAgents, ve FoundryLocalClient yerel çalışma zamanları için kullanın.
  • AzureAIClient, AzureAIProjectAgentProvider, AzureAIAgentClient, AzureAIAgentsProviderve Python Yardımcıları uyumluluk yüzeyi bu yeniden düzenleme sırasında uyumluluk yollarına taşındı ve daha sonra #4990'da kaldırıldı.
  • Örnek kapsam, samples/02-agents/providers/foundry/ altındaki Foundry örnekleri de dahil olmak üzere, yeni sağlayıcının öncelikli düzeniyle eşleşecek şekilde yeniden düzenlendi.

Paket haritalama

Scenario Install Birincil ad alanı
OpenAI ve Azure OpenAI pip install agent-framework-openai agent_framework.openai
Microsoft Foundry proje uç noktaları, Aracı Hizmeti, bellek ve eklemeler pip install agent-framework-foundry agent_framework.foundry
Dökümhane Yerel 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")

Daha önce Azure OpenAI'yi doğrudan kullandıysanız, eski ayrılmış sınıfları yeni sağlayıcı lideri OpenAI sınıflarına eşleyin:

  • AzureOpenAIResponsesClientOpenAIChatClient
  • AzureOpenAIChatClientOpenAIChatCompletionClient
  • AzureOpenAIEmbeddingClientOpenAIEmbeddingClient
  • AzureOpenAIAssistantsClient OpenAIChatClient Doğrudan Yanıtlar API'sini geçiş için veya FoundryAgent hizmet tarafından yönetilen bir Foundry aracısı gerekiyorsa →

Kod güncellemesi çoğunlukla sınıf adı taşıma artı deployment_namemodel. Azure OpenAI uyumluluğu için yeni OpenAI istemcilerinde açık Azure girişlerini kullanın. credential= artık tercih edilen Azure kimlik doğrulama yüzeyidir, ancak çağrılabilen api_key bir uyumluluk yolu olarak kalır:

Önce (AzureOpenAIResponsesClient):

from agent_framework.azure import AzureOpenAIResponsesClient

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

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

Önce (AzureOpenAIChatClient):

from agent_framework.azure import AzureOpenAIChatClient

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

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

Azure OpenAI uç noktalarından Microsoft Foundry proje uç noktasına geçmek istiyorsanız, bunun yerine Foundry odaklı yüzeyi kullanın:

Önce (Azure OpenAI uç noktası):

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

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

Sonra (Dökümhane projesi):

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)

Yerel Microsoft Foundry çalışma zamanları için Foundry ad alanını ve yerel bağlayıcıyı kullanın:

from agent_framework.foundry import FoundryLocalClient

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

Eğer model atlıyorsanız, ortamınızda FOUNDRY_LOCAL_MODEL ayarlayın.

Uygun olduğunda ortam/yapılandırma adlarını da güncelleştirin:

  • OPENAI_CHAT_MODEL için OpenAIChatClient, OPENAI_CHAT_COMPLETION_MODEL için OpenAIChatCompletionClient kullanın ve OPENAI_MODEL'yi paylaşılan bir geri dönüş olarak kullanın.
  • Azure OpenAI artık AZURE_OPENAI_CHAT_MODEL, OpenAIChatClient için; AZURE_OPENAI_CHAT_COMPLETION_MODEL, OpenAIChatCompletionClient için; ve paylaşılan geri dönüş olarak AZURE_OPENAI_MODEL kullanır.
  • Azure OpenAI kaynak URL'leri için azure_endpoint veya zaten tam bir base_url URL'niz varsa .../openai/v1 kullanın ve kullanmakta olduğunuz Azure OpenAI API yüzeyi için api_version ayarlayın
  • Foundry Bulut istemcileri için Foundry'ye özgü FOUNDRY_PROJECT_ENDPOINT, FOUNDRY_MODEL, FOUNDRY_AGENT_NAME ve FOUNDRY_AGENT_VERSION ayarlarını benimseyin
  • Antropik için ANTHROPIC_CHAT_MODEL ve Dökümhane Yerel için FOUNDRY_LOCAL_MODEL kullanın.

Bu değişiklik ilk olarak python-1.0.0rc6 döngüsü sırasında indi.


🔴 Çekirdek bağımlılıklar artık kasıtlı olarak zayıf

Pr:#4904

PR #4904 , sağlayıcı paketinin bölünmesini #4818 izleyerek agent-framework-core sadeleştirmek ve çekirdek paketten daha fazla geçişli sağlayıcı bağımlılığını kaldırmak suretiyle takip eder.

  • agent-framework-core artık kasıtlı olarak en düşük düzeydedir.
  • İçeri aktarırsanız agent_framework.openai ve agent-framework-openai yükleyin.
  • Foundry proje çıkarımı, hizmet tarafından yönetilen aracılar, bellek sağlayıcılar ve gömme işlemleri için agent_framework.foundry içeri aktarılırsa agent-framework-foundry yükleyin. Yerel çalışma zamanları için kullanın agent-framework-foundry-local --pre .
  • En az yüklemede MCP araçlarını, Agent.as_mcp_server()veya diğer MCP tümleştirmelerini kullanıyorsanız el ile yükleyin mcp --pre . WebSocket MCP desteği için yükleyin mcp[ws] --pre.
  • Kapsamlı "her şey dahil" deneyimi istiyorsanız meta paketini agent-frameworkyükleyin.

Bu işlem sağlayıcı yüzeyini yeniden tasarlamaz ; yalnızca çekirdeği getirdiğinizde varsayılan olarak yüklenenleri değiştirir.

Önce (yalnızca çekirdek yüklemeleri genellikle geçişli olarak daha fazla sağlayıcı işlevselliği getirir):

pip install agent-framework-core

Ardından (gerçekten kullandığınız sağlayıcı paketini yükleyin):

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

or:

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

Daha önce çekirdek ve yavaş sağlayıcı içeri aktarmalarına bağımlı olan mevcut bir projeyi yükseltirseniz, içeri aktarmalarınızı denetleyin ve sağlayıcı paketlerini ortamınızda veya bağımlılık dosyalarınızda açık hale getirin. MCP araçlarına veya MCP sunucu barındırmaya güveniyorsanız, MCP bağımlılıkları için de aynısını yapın.


🔴 Genel OpenAI istemcileri artık açık yönlendirme sinyallerini tercih ediyor

Pr:#4925

PR #4925 , genel agent_framework.openai istemcilerin OpenAI ile Azure OpenAI arasında nasıl karar vereceğini değiştirir.

  • Ortam değişkenleri mevcut olduğu AZURE_OPENAI_* için genel OpenAI istemcileri artık Azure'a geçemiyor.
  • OPENAI_API_KEY yapılandırılmışsa, credential veya azure_endpoint gibi açık bir Azure yönlendirme sinyali iletmediğiniz sürece genel istemciler OpenAI'de kalır.
  • Yalnızca AZURE_OPENAI_* ayarlar varsa, genel istemciler yine de Azure ortam tabanlı yönlendirmeye geri dönebilir.
  • Tercih edilen Azure OpenAI düzeni, açık Azure ayarlarını credential=AzureCliCredential(), OpenAIChatClient, OpenAIChatCompletionClient ve ekleme istemcisi ile birlikte geçirmektir.
  • Kullanım dışı sarmalayıcılar AzureOpenAI* uyumluluk davranışlarını korur, bu nedenle var olan sarmalayıcı tabanlı kod yeni genel istemci öncelik kurallarına uymaz.

Önce (OpenAIChatClient Azure env vars mevcut olduğundan Azure'a yönlendirebilir):

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

Sonrasında (genel OpenAI, OpenAI'de kalır; Azure yönlendirmesini zorlamak için açık Azure girdilerini iletin):

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

Ortamınız hem hem de OPENAI_*AZURE_OPENAI_* değerleri içeriyorsa, genel agent_framework.openai istemci yapılarını denetleyin ve sağlayıcı seçimini açık hale getirin. Azure sağlayıcı örnekleri bu nedenle Azure girişlerini doğrudan geçirecek şekilde güncelleştirildi.

Azure eklemeleri artık aynı yönlendirme modelini izler:

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

Ekleme senaryoları için haritala:

  • AzureOpenAIEmbeddingClientOpenAIEmbeddingClient
  • AZURE_OPENAI_EMBEDDING_MODELmodel
  • OPENAI_EMBEDDING_MODEL OpenAI tarafında yerleştirme ortam değişkeni olarak kalır

python-1.0.0rc5 / python-1.0.0b260319 (19 Mart 2026)

🔴 Sohbet istemcisi işlem hattı yeniden sıralandı: FunctionInvocation artık ChatMiddleware'i sarmalar

Pr:#4746

ChatClient işlem hattı sıralaması değiştirildi. FunctionInvocation artık en dıştaki katmandır ve ChatMiddleware'yi sarar, bu da sohbet ara katmanının, işlev çağırma dizisinin tamamında bir kez yerine model çağrısı başına (araç çağırma döngüsünün her yinelemesi dahil) çalıştırıldığı anlamına gelir.

Eski işlem hattı sırası:

ChatMiddleware → FunctionInvocation → RawChatClient

Yeni işlem hattı sırası:

FunctionInvocation → ChatMiddleware → ChatTelemetry → RawChatClient

Özel sohbet ara yazılımınız, her ajan çağrısı başına yalnızca bir kez çalışacak şekilde tasarlandıysa (tüm araç çağrı döngüsünü kapsayacak şekilde), tekrarlayan çalıştırma için güvenli hale gelecek şekilde güncelleyin. Artık, araç sonuçlarını modele geri gönderen istekler de dahil olmak üzere, her bir LLM isteği için chat middleware çağrılır.

Buna ek olarak, ChatTelemetry şimdi işlem hattı içinde ChatMiddleware'den ayrı bir katmandır ve RawChatClient'ye en yakın şekilde çalışır.

🔴 Açık demetlere bölünmüş genel çalışma zamanı kwargs

Pr:#4581

Python genel aracısı ve sohbet API'leri artık kapsamlı genel **kwargs iletmeyi birincil çalışma zamanı veri mekanizması olarak kabul etmiyor. Çalışma zamanı değerleri artık amaca göre bölünür:

  • Yalnızca araçların veya işlev ara yazılımının görmesi gereken değerler için kullanın function_invocation_kwargs .
  • client_kwargs'i istemci katmanı kwargs ve istemci ara yazılım yapılandırması için kullanın.
  • FunctionInvocationContext ve ctx.kwargs aracılığıyla ctx.session ile araç/çalışma zamanı verilerine erişme.
  • Araçları yerine eklenen bağlam parametresiyle **kwargstanımlayın; eklenen bağlam parametreleri modelin gördüğü şemada gösterilmez.
  • Bir alt aracıya araç olarak atadığınızda, eğer alt ajan çağıranın oturumunu paylaşmalıysa, agent.as_tool(propagate_session=True) kullanın.

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

Özel bir run() veya get_response() yöntem uygularsanız, bu imzalara function_invocation_kwargs ve client_kwargs ekleyin. Araçlar için, FunctionInvocationContext olarak açıklama ekli bir parametreyi tercih edin; bu, ctx, context veya başka bir açıklamalı ad olarak adlandırılabilir. Belirgin bir şema/giriş modeli sağlarsanız, ctx olarak adlandırılan düz ve notlandırılmamış bir parametre de tanınır. Aynı bağlam nesnesi, işlev ara yazılımı için de kullanılabilir ve çalışma zamanı işlevi kwargs ve oturum durumunun canlı olduğu yerdir. Hala kullanan **kwargs araç tanımları yalnızca eski bir uyumluluk yolu kullanır ve kaldırılır.


python-1.0.0rc4 / python-1.0.0b260311 (11 Mart 2026)

Sürüm Notları:python-1.0.0rc4

🔴Azure yapay zeka tümleştirmeleri artık 2.0 GA'yi hedeflemektedir azure-ai-projects

Pr:#4536

Python Azure AI tümleştirmeleri artık GA 2.0 azure-ai-projects yüzeyini varsayıyor.

  • Desteklenen bağımlılık aralığı artık azure-ai-projects>=2.0.0,<3.0şeklindedir.
  • foundry_features Passthrough, Azure AI aracısı oluşturma işleminden kaldırıldı.
  • Önizleme davranışı artık desteklenen istemcilerde/sağlayıcılarda allow_preview=True kullanıyor.
  • Karma beta/GA uyumluluk ara katmanları kaldırıldı, bu nedenle içeri aktarımları ve tür adlarını 2.0 GA SDK yüzeyine güncelleyin.

🔴GitHub Copilot araç işleyicileri artık ve Python 3.11+ kullanıyor ToolInvocation / ToolResult

Pr:#4551

agent-framework-github-copilot şimdi takip eder github-copilot-sdk>=0.1.32.

  • Araç işleyicileri ham ToolInvocationyerine bir dict veri sınıfı alır.
  • ToolResultresult_type ve text_result_for_llm gibi snake_case alanları kullanarak geri dönün.
  • Paket agent-framework-github-copilot artık Python 3.11+ gerektirir.

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.types import ToolInvocation, ToolResult


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

python-1.0.0rc3 / python-1.0.0b260304 (4 Mart 2026)

Sürüm Notları:python-1.0.0rc3

🔴 Kod tanımlı çerçevede tamamlanan beceri sağlayıcısı Skill / SkillResource

Pr:#4387

Python Aracısı Becerileri artık dosya tabanlı becerilerin yanı sıra kod tanımlı Skill ve SkillResource nesneleri destekliyor ve genel sağlayıcı yüzeyi üzerinde SkillsProviderstandartlaştırılıyor.

  • Eski önizleme/iç sürümü FileAgentSkillsProvider hala içeri aktarıyorsanız, SkillsProvider ögesine geçin.
  • Dosya tabanlı kaynak arama artık SKILL.md içindeki `backtick` işaretli referanslara dayanmamaktadır; kaynaklar bunun yerine beceri kütüphanesinden bulunur.

Önizleme ve/veya iç kodunuz FileAgentSkillsProvider içeri aktarıyorsa, mevcut genel arayüze geçin.

from agent_framework import Skill, SkillResource, SkillsProvider

python-1.0.0rc2 / python-1.0.0b260226 (26 Şubat 2026)

Sürüm Notları:python-1.0.0rc2

🔴 Bildirim temelli iş akışları InvokeTool ile InvokeFunctionTool değiştirilir

Pr:#3716

Bildirim temelli Python iş akışları artık eski InvokeTool eylem türünü kullanmıyor. InvokeFunctionTool ile değiştirin ve Python fonksiyonlarını WorkflowFactory.register_tool() ile kaydedin.

Before:

actions:
  - kind: InvokeTool
    toolName: send_email

After:

factory = WorkflowFactory().register_tool("send_email", send_email)
actions:
  - kind: InvokeFunctionTool
    functionName: send_email

python-1.0.0rc1 / python-1.0.0b260219 (19 Şubat 2026)

Sürüm:agent-framework-core ve agent-framework-azure-ai, 1.0.0rc1 olarak yükseltildi. Diğer tüm paketler 1.0.0b260219 olarak güncellendi.

🔴 Tüm paketlerde Birleşik Azure kimlik bilgileri işleme

Pr:#4088

ad_token, ad_token_providerve get_entra_auth_token parametreleri/yardımcıları, Azure ile ilgili tüm Python paketlerinde birleşik credential bir parametreyle değiştirilmiştir. Yeni yaklaşım, otomatik belirteç önbelleğe alma ve yenileme için kullanır azure.identity.get_bearer_token_provider .

Etkilenen sınıflar:AzureOpenAIChatClient, AzureOpenAIResponsesClient, AzureOpenAIAssistantsClient, AzureAIClient, , AzureAIAgentClient, AzureAIProjectAgentProvider, AzureAIAgentsProviderAzureAISearchContextProviderPurviewClientPurviewPolicyMiddlewarePurviewChatPolicyMiddleware, .

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

credential parametresi TokenCredential, AsyncTokenCredential veya çağrılabilen bir belirteç sağlayıcısı kabul eder. Belirteç önbelleğe alma ve yenileme otomatik olarak işlenir.


🔴 Yeniden tasarlanan Python özel durum hiyerarşisi

Pr:#4082

Düz ServiceException aile, tek AgentFrameworkException bir kök altında etki alanı kapsamlı özel durum dallarıyla değiştirildi. Bu, arayanlara kesin except hedefler ve net hata semantiği sağlar.

Yeni hiyerarşi:

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

Kaldırılan özel durumlar:ServiceException, ServiceInitializationError, ServiceResponseException, ServiceContentFilterException, ServiceInvalidAuthError, , ServiceInvalidExecutionSettingsError, ServiceInvalidRequestError, ServiceInvalidResponseError, AgentExecutionExceptionAgentInvocationErrorAgentInitializationErrorAgentSessionExceptionChatClientInitializationErrorCheckpointDecodingError.

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

Uyarı

Init doğrulama hataları artık özel durumlar yerine yerleşik ValueError/TypeError kullanır. Agent Framework özel durumları etki alanı düzeyindeki hatalar için ayrılmıştır.


🔴 Kapsamı şu şekilde belirlenmiş sağlayıcı durumu: source_id

Pr:#3995

Sağlayıcı kancaları artık tam oturum durumu yerine sağlayıcıya özgü bir durum sözlüğü (state.setdefault(provider.source_id, {})) alır. Bu, önceden state[self.source_id]["key"] aracılığıyla iç içe yerleştirilmiş duruma erişen sağlayıcı uygulamalarının artık doğrudan state["key"] erişmesi gerektiği anlamına gelir.

Ayrıca, InMemoryHistoryProvider varsayılan source_id"memory"'dan "in_memory"'e değiştirildi.

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

🔴 Sohbet/aracı iletisi yazma hizalaması (run vs get_response)

Pr:#3920

Sohbet istemcisi get_response uygulamaları, artık Sequence[Message] tutarlı olarak alır. agent.run(...) esnek (str, Content, Messageveya bunların dizileri) kalır ve sohbet istemcilerini çağırmadan önce girişleri normalleştirir.

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] şema geçişi için genel kurulum kaldırıldı

Pr:#3907

Şema tabanlı araç yolları artık önceki FunctionTool[Any] genel davranışa bağlı değildir. FunctionTool doğrudan kullanın ve gerektiğinde Pydantic BaseModel veya açık şemalar sağlayın (örneğin, @tool(schema=...) ile).

Before:

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

After:

placeholder: FunctionTool = FunctionTool(...)

🔴 Pydantic Settings yerine TypedDict + load_settings()

PR'ler:#3843, #4032

pydantic-settings tabanlı AFBaseSettings sınıfı, TypedDict ve load_settings() kullanılarak çok daha hafif ve işlev tabanlı bir ayar sistemiyle değiştirilmiştir. pydantic-settings Bağımlılık tamamen kaldırıldı.

Tüm ayarlar sınıfları (örneğin, OpenAISettings, AzureOpenAISettings, ) AnthropicSettingsartık TypedDict tanımlardır ve ayar değerlerine öznitelik erişimi yerine sözlük söz dizimi aracılığıyla erişilir.

Before:

from agent_framework.openai import OpenAISettings

settings = OpenAISettings()  # pydantic-settings auto-loads from env
api_key = settings.api_key
model_id = settings.model_id

After:

from agent_framework.openai import OpenAISettings, load_settings

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

Önemli

Agent Framework dosyalardan değerleri otomatik olarak .env. Aşağıdakilerden birini yaparak yüklemeyi açıkça kabul .env etmeniz gerekir:

  • Uygulamanızın başlangıcında load_dotenv() paketinden python-dotenv çağırmak
  • env_file_path=".env" load_settings() ile geçiyor
  • Ortam değişkenlerini doğrudan kabuğunuzda veya IDE'nizde ayarlama

Çözümleme load_settings sırası: açık geçersiz kılmalar → .env dosya değerleri (sağlandığında env_file_path) → ortam değişkenleri → varsayılanlar. Eğer env_file_path belirtirseniz, dosya mevcut olmalıdır veya FileNotFoundError hatası meydana gelir.


🟡 Akıl yürütme modeli iş akışı iletimi ve geçmiş serileştirmesi düzeltilir

Pr:#4083

Çok aracılı iş akışlarında mantık modelleri (örn. gpt-5-mini, gpt-5.2) kullanılırken oluşan birden çok hatayı düzeltir. Yanıtlar API'sinden gelen neden öğeleri artık doğru bir şekilde serileştiriliyor ve yalnızca bir function_call mevcut olduğunda geçmişe dahil ediliyor, bu da API hatalarını önlüyor. Şifrelenmiş/gizli akıl yürütme içeriği artık düzgün bir şekilde yayılıyor ve summary alan biçimi düzeltildi. Ayrıca service_session_id , aracılar arası durum sızıntısını önlemek için iletimde temizlenir.


Bedrock 🟡 öğesine eklendi ve araç seçimi varsayılanları düzeltildi core[all]

Pr:#3953

Amazon Bedrock artık agent-framework-core[all] ekstralara dahildir ve agent_framework.amazon ertelenmiş içe aktarma yüzeyi aracılığıyla kullanılabilir. Araç seçimi davranışı da düzeltildi: ayarsız araç seçimi değerleri artık ayarlanmamış olarak kalır ve sağlayıcılar hizmet varsayılanlarını kullanırken açıkça ayarlanan değerler korunur.

from agent_framework.amazon import BedrockClient

🟡 AzureAIClient geçersiz kılınmış desteklenmeyen çalışma zamanı ayarları konusunda uyarıda bulundu

Pr:#3919

Bu değişiklik sırasında, çalışma zamanı tools veya structured_output aracının oluşturma zamanı yapılandırmasından farklı olduğunda, AzureAIClient bir uyarı günlüğe kaydetti. Bu Python yüzeyi o zamandan beri kaldırılmıştır. Geçerli Python kodu için, uygulamaya ait araç/çalışma zamanı yapılandırmasına ihtiyacınız olduğunda FoundryChatClient kullanın veya dinamik geçersiz kılma gerektiren doğrudan Yanıtlar API senaryoları için OpenAIChatClient kullanın.


🟡 workflow.as_agent() şimdi sağlayıcılar ayarsız olduğunda yerel geçmişi varsayılan olarak ayarlar

Pr:#3918

workflow.as_agent() olmadan context_providersoluşturulduğunda, artık varsayılan olarak eklenirInMemoryHistoryProvider("memory"). Bağlam sağlayıcıları açıkça sağlanıyorsa, bu liste değiştirilmeden korunur.

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

🟡 OpenTelemetry izleme bağlamı MCP isteklerine iletildi

Pr:#3780

OpenTelemetry yüklendiğinde, izleme bağlamı (örn. W3C traceparent) params._meta aracılığıyla MCP isteklerine otomatik olarak enjekte edilir. Bu, aracı → MCP sunucu çağrıları arasında uçtan uca dağıtılmış izlemeyi etkinleştirir. Kod değişikliği gerekmez; bu, geçerli bir yayılma bağlamı mevcut olduğunda etkinleştiren ek bir davranıştır.


🟡 Azure İşlevleri için dayanıklı iş akışı desteği

Pr:#3630

Paket agent-framework-azurefunctions artık Workflow grafikleri Azure Dayanıklı İşlevler'de çalıştırmayı destekliyor. workflow parametresini AgentFunctionApp'e ileterek aracı varlıkları, etkinlik işlevlerini ve HTTP uç noktalarını otomatik olarak kaydedin.

from agent_framework.azurefunctions import AgentFunctionApp

app = AgentFunctionApp(workflow=my_workflow)
# Automatically registers:
#   POST /api/workflow/run          — start a workflow
#   GET  /api/workflow/status/{id}  — check status
#   POST /api/workflow/respond/{id}/{requestId} — HITL response

Yapılandırılabilir zaman aşımı ve süre sonunda otomatik reddetme ile fan-out/fan-in, paylaşılan durum ve human-in-the-loop desenlerini destekler.


python-1.0.0b260212 (12 Şubat 2026)

Sürüm Notları:python-1.0.0b260212

🔴 Hosted*Tool sınıflar istemci get_*_tool() yöntemleriyle değiştirildi

Pr:#3634

Barındırılan araç sınıfları, istemci kapsamlı fabrika yöntemleri lehine kaldırıldı. Bu, araç kullanılabilirliğini sağlayıcıya göre açık hale getirir.

Sınıf kaldırıldı Replacement
HostedCodeInterpreterTool client.get_code_interpreter_tool()
HostedWebSearchTool client.get_web_search_tool()
HostedFileSearchTool client.get_file_search_tool(...)
HostedMCPTool client.get_mcp_tool(...)
HostedImageGenerationTool client.get_image_generation_tool(...)

Before:

from agent_framework import HostedCodeInterpreterTool, HostedWebSearchTool

tools = [HostedCodeInterpreterTool(), HostedWebSearchTool()]

After:

from agent_framework.openai import OpenAIResponsesClient

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

🔴 Oturum/bağlam sağlayıcısı işlem hattı sonlandırıldı (AgentSession, context_providers)

Pr:#3850

Python oturumu ve bağlam sağlayıcısı geçişi tamamlandı. AgentThread ve eski bağlam sağlayıcısı türleri kaldırıldı.

  • AgentThreadAgentSession
  • agent.get_new_thread()agent.create_session()
  • agent.get_new_thread(service_thread_id=...)agent.get_session(service_session_id=...)
  • context_provider= / chat_message_store_factory= desenleri context_providers=[...] ile değiştirilir

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)

🔴 Denetim noktası modeli ve depolama davranışı yeniden düzenlenmiş

Pr:#3744

Denetim noktası iç işlevleri yeniden tasarlandı ve bu da kalıcı denetim noktası uyumluluğunu ve özel depolama uygulamalarını etkiler:

  • WorkflowCheckpoint şimdi canlı nesneleri depolar (serileştirme denetim noktası depolamasında gerçekleşir)
  • FileCheckpointStorage şimdi turşu serileştirmesi kullanıyor
  • workflow_id kaldırıldı ve previous_checkpoint_id eklendi
  • Kullanım dışı denetim noktası kancaları kaldırıldı

Eğer sürümler arasında denetim noktalarını kalıcı hale getirirseniz, iş akışlarına devam etmeden önce mevcut denetim noktası yapıtlarını yeniden oluşturun veya geçirin.


🟡 Dökümhane proje uç noktaları ilk olarak AzureOpenAIResponsesClient

Pr:#3814

Başlangıçta bu önizleme özelliği, AzureOpenAIResponsesClient'in Foundry proje uç noktalarına bağlanmasına izin veriyordu. Geçerli Python kılavuzu, kaldırılan AzureOpenAIResponsesClient yerine Foundry proje çıkarımı için FoundryChatClient veya hizmet tarafından yönetilen Foundry ajanları için FoundryAgent kullanır.

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

🔴 Ara yazılım call_next artık kabul etmemektedir context

Pr:#3829

Orta katman devam fonksiyonu artık hiçbir argüman almaz. Ara yazılımınız hala call_next(context) öğesini çağırıyorsa, call_next() olarak güncelleştirin.

Before:

async def telemetry_middleware(context, call_next):
    # ...
    return await call_next(context)

After:

async def telemetry_middleware(context, call_next):
    # ...
    return await call_next()

python-1.0.0b260210 (10 Şubat 2026)

Sürüm Notları:python-1.0.0b260210

🔴 İş akışı fabrika metotları kaldırıldı WorkflowBuilder

Pr:#3781

register_executor() ve register_agent(), WorkflowBuilder'den kaldırıldı. Tüm oluşturucu yöntemleri (, , , , , add_edge, add_fan_out_edges) ve add_fan_in_edges artık dize adlarını kabul etmemektedir; bunlar doğrudan yürütücü veya aracı örnekleri gerektirir. add_chainadd_switch_case_edge_groupadd_multi_selection_edge_groupstart_executor

Yazılım yalıtımı için, her çağrının yeni örnekler üretmesi amacıyla yürütücü/aracı örneği oluşturmaları ve iş akışı oluşturmalarını saran bir yardımcı yöntemin içinde sarmalayın.

WorkflowBuilder yürütücülerle

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 aracılarla

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

Yardımcı metodlarla durum yalıtımı

Çağrı başına yalıtılmış duruma ihtiyaç duyan iş akışları için, yapıyı bir yardımcı yöntemle sarmalayın:

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 olarak yeniden adlandırıldı Agent, ChatMessage olarak yeniden adlandırıldı Message

Pr:#3747

Çekirdek Python türleri, yedekli Chat ön ek kaldırılarak basitleştirildi. Geriye dönük uyumluluk takma adları sağlanmadı.

Önce Sonra
ChatAgent Agent
RawChatAgent RawAgent
ChatMessage Message
ChatClientProtocol SupportsChatGetResponse

İçeri aktarmaları güncelleştirme

Before:

from agent_framework import ChatAgent, ChatMessage

After:

from agent_framework import Agent, Message

Tür başvurularını güncelleştir

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

Uyarı

ChatClient, ChatResponse, ChatOptionsve ChatMessageStore bu değişiklik tarafından yeniden adlandırılmaz .


🔴 Yanıt/ileti modellerinde tür API'sini gözden geçirme güncelleştirmeleri

Pr:#3647

Bu sürüm, ileti/yanıt yazma ve yardımcı API'ler için kapsamlı ve mevcut sistemleri etkileyebilecek değişiklikler içeren bir temizleme sağlar.

  • Role ve FinishReason artık NewTypestr ile RoleLiteral/FinishReasonLiteral bilinen değerler için sarmalayıcılardır. Bunları dize olarak değerlendirin ( .value kullanılmadan).
  • Message yapısı üzerinde Message(role, contents=[...])standartlaştırılmıştır; içindeki contents dizeler otomatik olarak metin içeriğine dönüştürülür.
  • ChatResponse ve AgentResponse oluşturucular artık messages= üzerine odaklanır (tek Message veya dizi); eski text= oluşturucu kullanımı yanıtlardan çıkartıldı.
  • ChatResponseUpdate ve AgentResponseUpdate artık text= kabul etmez; contents=[Content.from_text(...)] kullanın.
  • Güncelleme birleştirme yardımcısı adları basitleştirildi.
  • try_parse_valueve ChatResponseöğesinden AgentResponse kaldırıldı.

Yardımcı yöntemi yeniden adlandırır

Önce Sonra
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(...)

Güncelleştirme yanıtı-güncelleştirme yapısı

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 öğesini try/except ile .value üzerinde değiştir

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

🔴 Birleşik run/get_response model ve ResponseStream kullanım

Pr:#3379

Python API'leri agent.run(...) ve client.get_response(...) etrafında birleştirilmiş ve akış ResponseStream ile temsil edilmiştir.

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)

🔴 Çekirdek bağlam/protokol türü yeniden adlandırmaları

PR'ler:#3714, #3717

Önce Sonra
AgentRunContext AgentContext
AgentProtocol SupportsAgentRun

İçeri aktarmaları ve tür açıklamalarını uygun şekilde güncelleyin.


🔴 Ara yazılım devamlılık parametresi olarak yeniden adlandırıldı call_next

Pr:#3735

Ara yazılım imzaları artık call_nextyerine next kullanmalıdır.

Before:

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

After:

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

🔴 TypeVar adları standartlaştırılmış (TNameNameT)

Pr:#3770

Kod tabanı artık son ekin T kullanıldığı tutarlı bir TypeVar adlandırma stilini izler.

Before:

TMessage = TypeVar("TMessage")

After:

MessageT = TypeVar("MessageT")

Framework generic'leri çevresinde özel sarmalayıcılar tutarsanız, ek açıklama değişim frekansını azaltmak için yerel TypeVar adlarınızı yeni kuralla hizalayın.


🔴 Aracı olarak iş akışı çıkışı ve akış değişiklikleri

Pr:#3649

workflow.as_agent() davranışı, çıktıyı ve akışı standart aracı yanıt desenleriyle uyumlu hale getirmek için güncelleştirildi. Eski çıkış/güncelleştirme işlemeye bağımlı olan aracı olarak iş akışı tüketicilerini gözden geçirin ve bunları geçerli AgentResponse/AgentResponseUpdate akışa güncelleştirin.


🔴 Akıcı oluşturucu yöntemler, oluşturucu parametrelerine taşındı

Pr:#3693

6 oluşturucu (WorkflowBuilder, , SequentialBuilder, ConcurrentBuilder, GroupChatBuilder, MagenticBuilder, HandoffBuilder) arasında tek yapılandırmalı akıcı yöntemler oluşturucu parametrelerine geçirilmiştir. Fluent yöntemlerinin tek yapılandırma yolu olduğu durumlarda, bu yöntemler kaldırılarak yerlerine oluşturucu bağımsız değişkenleri tercih edilmektedir.

WorkflowBuilder

set_start_executor(), with_checkpointing()ve with_output_from() kaldırılır. Bunun yerine oluşturucu parametrelerini kullanın.

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()ve with_intermediate_outputs() kaldırılır. Bunun yerine oluşturucu parametrelerini kullanın.

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()ve with_intermediate_outputs() kaldırılır. Bunun yerine oluşturucu parametrelerini kullanın.

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()ve with_intermediate_outputs() kaldırılır. Bunun yerine oluşturucu parametrelerini kullanın.

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() ve with_termination_condition() kaldırılır. Bunun yerine oluşturucu parametrelerini kullanın.

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

Doğrulama değişiklikleri

  • WorkflowBuilder şimdi start_executor'i oluşturucu bağımsız değişkeni olarak gerektiriyor (daha önce fluent yöntemi kullanılarak ayarlanıyordu)
  • SequentialBuilder, ConcurrentBuilder, GroupChatBuilder ve MagenticBuilder şimdi yapım zamanında ya participants ya da participant_factories gerektiriyor — ikisi de sağlanmazsa ValueError yükseltilir.

Uyarı

HandoffBuilder zaten oluşturucu parametreleri olarak kabul edildi participants/participant_factories ve bu konuda değiştirilmedi.


🔴 Ayrıştırıcı ile tek bir WorkflowEvent içine iş akışı olayları birleştirildi

Pr:#3690

Tek tek tüm iş akışı olayı alt sınıfları tek bir genel WorkflowEvent[DataT] sınıfla değiştirilmiştir. Olay türlerini tanımlamak için isinstance() denetimleri kullanmak yerine artık event.type dize değişmezini (örneğin, "output", "request_info", "status") denetlersiniz. Bu, Content öğesinden gelen python-1.0.0b260123 sınıf birleştirmesiyle aynı deseni takip eder.

Olay sınıfları kaldırıldı

Dışarı aktarılan aşağıdaki olay alt sınıfları artık yok:

Eski Sınıf Yeni event.type Değer
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"

İçeri aktarmaları güncelleştirme

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

Olay türü denetimlerini güncelleştirme

Before:

async for event in workflow.run_stream(input_message):
    if isinstance(event, WorkflowOutputEvent):
        print(f"Output from {event.executor_id}: {event.data}")
    elif isinstance(event, RequestInfoEvent):
        requests[event.request_id] = event.data
    elif isinstance(event, WorkflowStatusEvent):
        print(f"Status: {event.state}")

After:

async for event in workflow.run_stream(input_message):
    if event.type == "output":
        print(f"Output from {event.executor_id}: {event.data}")
    elif event.type == "request_info":
        requests[event.request_id] = event.data
    elif event.type == "status":
        print(f"Status: {event.state}")

AgentResponseUpdate ile akış yapmak

Before:

from agent_framework import AgentResponseUpdate, WorkflowOutputEvent

async for event in workflow.run_stream("Write a blog post about AI agents."):
    if isinstance(event, WorkflowOutputEvent) and isinstance(event.data, AgentResponseUpdate):
        print(event.data, end="", flush=True)
    elif isinstance(event, WorkflowOutputEvent):
        print(f"Final output: {event.data}")

After:

from agent_framework import AgentResponseUpdate

async for event in workflow.run_stream("Write a blog post about AI agents."):
    if event.type == "output" and isinstance(event.data, AgentResponseUpdate):
        print(event.data, end="", flush=True)
    elif event.type == "output":
        print(f"Final output: {event.data}")

Tür anotasyonları

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

Uyarı

WorkflowEvent geneldir (WorkflowEvent[DataT] ), ancak karma olay koleksiyonları için kullanın WorkflowEvent[Any] veya parametresiz kullanın WorkflowEvent.


🔴 workflow.send_responses* Kaldırıldı; Kullanın workflow.run(responses=...)

Pr:#3720

send_responses() ve send_responses_streaming(), Workflow'den kaldırıldı. Yanıtları doğrudan run() öğesine geçirerek duraklatılmış iş akışlarına devam edin.

Before:

async for event in workflow.send_responses_streaming(
    checkpoint_id=checkpoint_id,
    responses=[approved_response],
):
    ...

After:

async for event in workflow.run(
    checkpoint_id=checkpoint_id,
    responses=[approved_response],
):
    ...

🔴 SharedState, State olarak yeniden adlandırıldı; iş akışı durumu API'leri zaman uyumlu

Pr:#3667

Durum API'leri artık await gerektirmiyor ve adlandırma standartlaştırıldı.

Önce Sonra
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

🔴 Orchestration oluşturucuları taşındı agent_framework.orchestrations

Pr:#3685

Orchestration oluşturucuları artık ayrılmış bir paket ad alanındadır.

Before:

from agent_framework import SequentialBuilder, GroupChatBuilder

After:

from agent_framework.orchestrations import SequentialBuilder, GroupChatBuilder

🟡 Uzun süre çalışan arka plan yanıtları ve devamlılık belirteçleri

Pr:#3808

Arka plan yanıtları artık options={"background": True} ve continuation_token üzerinden Python ajan çalıştırmaları için desteklenmektedir.

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

🟡 Oturum/bağlam sağlayıcısı önizleme türleri yan yana eklendi

Pr:#3763

Yeni oturum/bağlam işlem hattı türleri, artımlı geçiş için eski API'ler ile birlikte SessionContext ve BaseContextProvider dahil olmak üzere tanıtılmıştır.


🟡 Kod yorumlayıcı akışı artık artımlı kod değişimleri içeriyor

Pr:#3775

Akış kod yorumlayıcı, artık akış içeriğinde kod değişikliği güncelleştirmelerini göstererek kullanıcı arayüzlerinin oluşturulan kodu aşamalı olarak gösterebilmesini sağlar.


🟡 @tool açık şema işlemeyi destekler

Pr:#3734

Araç tanımları artık çıkarım yapılan şema çıktısı özelleştirmeye ihtiyaç duyduğunda açık şema işlemeyi kullanabilir.


python-1.0.0b260130 (30 Ocak 2026)

Sürüm Notları:python-1.0.0b260130

🟡 ChatOptions ve ChatResponse/AgentResponse artık yanıt formatı üzerinde genel

Pr:#3305

ChatOptions, ChatResponseve AgentResponse artık yanıt biçimi türüne göre parametrelendirilen genel türlerdir. Bu, response_format yapılandırılmış çıkışlar kullanılırken daha iyi tür çıkarımı sağlar.

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

İpucu

Bu, kesintiye neden olmayan bir geliştirmedir. Tür parametresi olmayan mevcut kod çalışmaya devam eder. Seçenekler ve yanıt için yukarıdaki kod parçacığında türleri belirtmeniz gerekmez; bunlar netlik için burada gösterilir.


🟡 BaseAgent Claude Aracısı SDK'sı için destek eklendi

Pr:#3509

Python SDK'sı artık Claude Aracısı SDK'sı için bir BaseAgent uygulama içerir ve Agent Framework'te birinci sınıf bağdaştırıcı tabanlı kullanımı etkinleştirir.


python-1.0.0b260128 (28 Ocak 2026)

Sürüm Notları:python-1.0.0b260128

🔴 AIFunction olarak yeniden adlandırıldı FunctionTool ve @ai_function olarak yeniden adlandırıldı @tool

Pr:#3413

Sınıf ve dekoratör, endüstri terminolojisiyle netlik ve tutarlılık için yeniden adlandırıldı.

Before:

from agent_framework.core import ai_function, AIFunction

@ai_function
def get_weather(city: str) -> str:
    """Get the weather for a city."""
    return f"Weather in {city}: Sunny"

# Or using the class directly
func = AIFunction(get_weather)

After:

from agent_framework.core import tool, FunctionTool

@tool
def get_weather(city: str) -> str:
    """Get the weather for a city."""
    return f"Weather in {city}: Sunny"

# Or using the class directly
func = FunctionTool(get_weather)

🔴 GroupChat ve Magentic'e fabrika düzeni eklendi; API yeniden adlandırır

Pr:#3224

Grup sohbetine katılımcı fabrikası ve orkestratör fabrikası eklendi. Ayrıca yeniden adlandırmaları da içerir:

  • with_standard_managerwith_manager
  • participant_factoriesregister_participant

Before:

from agent_framework.workflows import MagenticBuilder

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

After:

from agent_framework.workflows import MagenticBuilder

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

🔴 Github olarak yeniden adlandırıldı GitHub

Pr:#3486

Sınıf ve paket adları doğru büyük/küçük harf kullanacak şekilde güncelleştirildi.

Before:

from agent_framework_github_copilot import GithubCopilotAgent

agent = GithubCopilotAgent(...)

After:

from agent_framework_github_copilot import GitHubCopilotAgent

agent = GitHubCopilotAgent(...)

python-1.0.0b260127 (27 Ocak 2026)

Sürüm Notları:python-1.0.0b260127

🟡 BaseAgent GitHub Copilot SDK desteği eklendi

Pr:#3404

Python SDK artık GitHub Copilot SDK tümleştirmeleri için bir BaseAgent uygulama içeriyor.


python-1.0.0b260123 (23 Ocak 2026)

Sürüm Notları:python-1.0.0b260123

🔴 Classmethod oluşturucuları ile tek bir sınıfa basitleştirilmiş içerik türleri

Pr:#3252

Belirli türleri oluşturmak için, BaseContent öğesinden türetilmiş tüm eski İçerik türleri, classmethods içeren tek bir Content sınıfıyla değiştirildi.

Tam Geçiş Rehberi

Eski Tür Yeni Yöntem
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(...)

Ek yeni yöntemler (doğrudan öncül olmadan):

  • Content.from_text_reasoning(...) — Akıl yürütme/düşünme içeriği için
  • Content.from_hosted_vector_store(...) — Vektör deposu referansları için
  • Content.from_usage(...) — Kullanım/belirteç bilgileri için
  • Content.from_mcp_server_tool_call(...) / Content.from_mcp_server_tool_result(...) — MCP sunucu araçları için
  • Content.from_code_interpreter_tool_call(...) / Content.from_code_interpreter_tool_result(...) — Kod yorumlayıcı için
  • Content.from_image_generation_tool_call(...) / Content.from_image_generation_tool_result(...) — Görüntü oluşturma için

Tür Denetimi

isinstance() kontrolleri yerine type özelliğini kullanın.

Before:

from agent_framework.core import TextContent, FunctionCallContent

if isinstance(content, TextContent):
    print(content.text)
elif isinstance(content, FunctionCallContent):
    print(content.name)

After:

from agent_framework.core import Content

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

Temel Örnek

Before:

from agent_framework.core import TextContent, DataContent, UriContent

text = TextContent(text="Hello world")
data = DataContent(data=b"binary", media_type="application/octet-stream")
uri = UriContent(uri="https://example.com/image.png", media_type="image/png")

After:

from agent_framework.core import Content

text = Content.from_text("Hello world")
data = Content.from_data(data=b"binary", media_type="application/octet-stream")
uri = Content.from_uri(uri="https://example.com/image.png", media_type="image/png")

🔴 Anotasyon türleri Annotation ve TextSpanRegion TypedDict'ler olarak sadeleştirildi.

Pr:#3252

Sınıf tabanlı ek açıklama türleri daha TypedDict basit tanımlarla değiştirildi.

Eski Tür Yeni Tür
CitationAnnotation (sınıf) Annotation (TypedDict ile type="citation")
BaseAnnotation (sınıf) Annotation (TypedDict)
TextSpanRegion (SerializationMixin ile sınıf) TextSpanRegion (TypedDict)
Annotations (diğer ad yazın) Annotation
AnnotatedRegions (diğer ad yazın) 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"
}

Uyarı

ve AnnotationTextSpanRegion artık TypedDictolduğundan, bunları sınıf örnekleri yerine sözlükler olarak oluşturursunuz.


🔴 response_format doğrulama hataları artık kullanıcılar tarafından görülebilir

Pr:#3274

ChatResponse.value ve AgentResponse.value, şimdi şema doğrulaması başarısız olduğunda ValidationError yükseltir ve sessizce None döndürmez.

Before:

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

After:

from pydantic import ValidationError

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

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

🔴 AG-UI mantık yürütme basitleştirildi; MCP ve Anthropic istemci hataları düzeltildi

Pr:#3322

runAG-UI yöntem imzası ve davranışı basitleştirildi.

Before:

from agent_framework.ag_ui import AGUIEndpoint

endpoint = AGUIEndpoint(agent=agent)
result = await endpoint.run(
    request=request,
    run_config={"streaming": True, "timeout": 30}
)

After:

from agent_framework.ag_ui import AGUIEndpoint

endpoint = AGUIEndpoint(agent=agent)
result = await endpoint.run(
    request=request,
    streaming=True,
    timeout=30
)

🟡Antropik istemci artık yapılandırılmış çıkışları destekliyor response_format

Pr:#3301

Artık, OpenAI ve Azure istemcilerine benzer şekilde, Anthropic istemcileri aracılığıyla response_format ile yapılandırılmış çıktı ayrıştırma kullanabilirsiniz.


🟡 Genişletilmiş Azure AI yapılandırması (reasoning, rai_config)

PR'ler:#3403, #3265

Azure yapay zeka desteği, mantıksal yapılandırma desteğiyle ve rai_config aracı oluşturma sırasında genişletilmiştir.


python-1.0.0b260116 (16 Ocak 2026)

Sürüm Notları:python-1.0.0b260116

🔴 create_agent olarak yeniden adlandırıldı as_agent

Pr:#3249

Amacına daha iyi açıklık getirmek için yöntem yeniden adlandırıldı.

Before:

from agent_framework.core import ChatClient

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

After:

from agent_framework.core import ChatClient

client = ChatClient(...)
agent = client.as_agent()

🔴 WorkflowOutputEvent.source_executor_id olarak yeniden adlandırıldı executor_id

Pr:#3166

Api tutarlılığı için özellik yeniden adlandırıldı.

Before:

async for event in workflow.run_stream(...):
    if isinstance(event, WorkflowOutputEvent):
        executor = event.source_executor_id

After:

async for event in workflow.run_stream(...):
    if isinstance(event, WorkflowOutputEvent):
        executor = event.executor_id

🟡 AG-UI hizmet tarafından yönetilen oturum sürekliliğini destekler

Pr:#3136

AG-UI artık çok aşamalı sürekliliği korumak için hizmet tarafından yönetilen konuşma kimliğini (örneğin, Foundry tarafından yönetilen oturumlar/iş parçacıkları) korur.


python-1.0.0b260114 (14 Ocak 2026)

Sürüm Notları:python-1.0.0b260114

🔴 Yeniden düzenlenmiş orkestrasyonlar

Pr:#3023

Agent Framework İş Akışlarındaki orkestrasyonların kapsamlı yeniden yapılandırılması ve basitleştirilmesi:

  • Grup Sohbeti: Düzenleyici yürütücüsünü, aracı tabanlı ve işlev tabanlı olarak ayrılmış bir şekilde bölün (BaseGroupChatOrchestrator, GroupChatOrchestrator, AgentBasedGroupChatOrchestrator). Yayın modeli ile yıldız topolojisi basitleştirilmiştir.
  • Aktarım: Tek katmanlı yapı, koordinatör ve özel yürütücü desteği kaldırıldı. ile HandoffAgentExecutoryayın modeline taşındı.
  • Sıralı & Eşzamanlı: AgentApprovalExecutor ve AgentRequestInfoExecutor aracılığıyla alt iş akışlarına güvenmek için basitleştirilmiş istek bilgisi mekanizması.

Before:

from agent_framework.workflows import GroupChat, HandoffOrchestrator

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

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

After:

from agent_framework.workflows import (
    GroupChatOrchestrator,
    HandoffAgentExecutor,
    AgentApprovalExecutor
)

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

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

🔴 TypedDict ve Generic olarak sunulan seçenekler

Pr:#3140

Seçenekler artık daha iyi tür güvenliği ve IDE otomatik tamamlama sağlamak amacıyla TypedDict kullanılarak yazılmaktadır.

📖 Tam geçiş yönergeleri için , Bkz. Yazılan Seçenekler Kılavuzu.

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 Kaldırıldı; context_provider tekil olarak; middleware liste olmalıdır

Pr:#3139

  • display_name parametre aracılardan kaldırıldı
  • context_providers (çoğul, kabul eden liste) olarak değiştirildi context_provider (tekil, yalnızca 1 izin verilir)
  • middleware şimdi bir liste gerektiriyor (artık tek örneği kabul etmemektedir)
  • AggregateContextProvider koddan kaldırıldı (gerekirse örnek uygulamayı kullanın)

Before:

from agent_framework.core import Agent, AggregateContextProvider

agent = Agent(
    name="my-agent",
    display_name="My Agent",
    context_providers=[provider1, provider2],
    middleware=my_middleware,  # single instance was allowed
)

aggregate = AggregateContextProvider([provider1, provider2])

After:

from agent_framework.core import Agent

# Only one context provider allowed; combine manually if needed
agent = Agent(
    name="my-agent",  # display_name removed
    context_provider=provider1,  # singular, only 1
    middleware=[my_middleware],  # must be a list now
)

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

🔴 AgentRunResponse* olarak yeniden adlandırıldı AgentResponse*

Pr:#3207

AgentRunResponse ve AgentRunResponseUpdate olarak yeniden adlandırıldı AgentResponseAgentResponseUpdate.

Before:

from agent_framework import AgentRunResponse, AgentRunResponseUpdate

After:

from agent_framework import AgentResponse, AgentResponseUpdate

🟡 YAML tanımlı iş akışları için bildirim temelli iş akışı çalışma zamanı eklendi

Pr:#2815

Bildirim temelli YAML iş akışlarını yürütmek için graf tabanlı bir çalışma zamanı eklenerek özel çalışma zamanı kodu olmadan çok aracılı düzenleme etkinleştirildi.


🟡 MCP yükleme/güvenilirlik geliştirmeleri

Pr:#3154

MCP tümleştirmeleri geliştirilmiş bağlantı kaybı davranışı, yükleme sırasında sayfalandırma desteği ve gösterim denetimi seçenekleri kazandı.


🟡 Foundry A2ATool artık hedef URL'si olmayan bağlantıları destekliyor

Pr:#3127

A2ATool artık doğrudan hedef URL yapılandırılmamış olsa bile proje bağlantısı meta verileri aracılığıyla Foundry destekli A2A bağlantılarını çözümleyebilir.


python-1.0.0b260107 (7 Ocak 2026)

Sürüm Notları:python-1.0.0b260107

Bu sürümde önemli bir değişiklik yok.


python-1.0.0b260106 (6 Ocak 2026)

Sürüm Notları:python-1.0.0b260106

Bu sürümde önemli bir değişiklik yok.


Özet Tablosu

Salıverme Sürüm Notları Türü Değişiklik PR
1.0.0 Yalnızca PR 🔴 Çığır Açan Message(..., text=...) yapısı tamamen kaldırılır; bunun yerine contents=[...] ile kısa mesajlar oluştur #5062
1.0.0 Yalnızca PR 🟡 Geliştirme Yayımlanan Python paketleri (agent-framework, agent-framework-core, agent-framework-openai, agent-framework-foundry) artık --pre gerektirmiyor; ama beta bağlayıcıları hala --pre kullanır. #5062
1.0.0 Yalnızca PR 🔴 Çığır Açan Taşınan Python eklemeleri agent_framework.foundry; kaldırılan agent-framework-azure-ai paketi yerine agent-framework-foundry, FoundryEmbeddingClient ve FOUNDRY_MODELS_* ayarlarını kullanın. #5056
1.0.0 Yalnızca PR 🔴 Çığır Açan workflow.run() şimdi, yürütücü kimlikleri tarafından belirlenen genel ve yürütücü başına hedefleme ile, açık bir şekilde function_invocation_kwargs / client_kwargs kullanır. #5010
1.0.0 Yalnızca PR 🟡 Geliştirme GitHubCopilotAgent şimdi bağlam sağlayıcı before_run / after_run kancalarını çağırır ve sağlayıcı tarafından eklenen istem bağlamı içerir #5013
1.0.0 Yalnızca PR 🟡 Geliştirme Python yapılandırılmış çıktısı artık JSON şema eşlemelerini response_format olarak kabul ediyor ve ayrıştırılmış JSON response.value üzerinde görüntüleniyor. #5022
1.0.0rc6 Yalnızca PR 🔴 Çığır Açan Kullanım dışı bırakılan Azure/OpenAI uyumluluk yüzeyleri kaldırıldı; bunun yerine sağlayıcı lideri OpenAI istemcilerini veya Foundry Python istemcilerini kullanma #4990
1.0.0rc6 Yalnızca PR 🔴 Çığır Açan Sağlayıcı liderliğindeki yeniden düzenleme: agent-framework-openai, agent-framework-foundry ve agent-framework-foundry-local ayırma; OpenAI istemcilerini yeniden adlandırma; Foundry'yi agent_framework.foundry bölümüne taşıma; Azure AI ve Asistanlar için uyumluluk yollarını kullanımdan kaldırma #4818
1.0.0rc6 Yalnızca PR 🔴 Çığır Açan agent-framework-core artık kasıtlı olarak hafif; agent-framework-openai veya agent-framework-foundry gibi sağlayıcı paketlerini yükleyin ve minimal yüklemelerde MCP araçları için mcp'yı elle yükleyin veya daha geniş bir varsayılan deneyim için agent-framework meta paketini kullanın. #4904
1.0.0rc6 Yalnızca PR 🔴 Çığır Açan Genel agent_framework.openai istemciler artık açık yönlendirme sinyallerini tercih ediyor; OPENAI_API_KEY ayarlandığında OpenAI, OpenAI'de kalır ve Azure senaryoları, credential veya azure_endpoint gibi açık Azure yönlendirme girişlerini geçirmeli ve sonra api_version yapılandırılmalıdır. #4925
1.0.0rc5 / 1.0.0b260318 Yok (zamanlanmış) 🔴 Çığır Açan Genel çalışma zamanı parametreleri function_invocation_kwargs ve client_kwargs olarak bölünmüş. Araçlar artık FunctionInvocationContext / ctx.session kullanıyor. #4581
1.0.0rc4 / 1.0.0b260311 Notlar 🔴 Çığır Açan Azure AI tümleştirmeleri artık 2.0 GA'yi hedeflemektedir azure-ai-projects ; foundry_features kaldırılmıştır ve allow_preview önizlemeyi kabul etme özelliğidir #4536
1.0.0rc4 / 1.0.0b260311 Notlar 🔴 Çığır Açan GitHub Copilot tümleştirmesi artık ToolInvocation / ToolResult kullanıyor ve agent-framework-github-copilot Python 3.11+ gerektirir. #4551
1.0.0rc3 / 1.0.0b260304 Notlar 🔴 Çığır Açan Beceri sağlayıcısı, kod tanımlı Skill / SkillResource ekler; eski FileAgentSkillsProvider içe aktarmalar ve `backtick` kaynak başvuruları güncelleştirilmelidir. #4387
1.0.0rc2 / 1.0.0b260226 Notlar 🔴 Çığır Açan Bildirim temelli iş akışları, InvokeTool ile InvokeFunctionTool ve WorkflowFactory.register_tool() ile değiştirilir #3716
1.0.0rc1 / 1.0.0b260219 Notlar 🔴 Çığır Açan Azure paketleri arasında birleşik Azure kimlik bilgileri işleme #4088
1.0.0rc1 / 1.0.0b260219 Notlar 🔴 Çığır Açan Python özel durum hiyerarşisi AgentFrameworkException altında yeniden tasarlandı. #4082
1.0.0rc1 / 1.0.0b260219 Notlar 🔴 Çığır Açan Sağlayıcı durumunun kapsamı artık source_id ile belirlenmiştir. #3995
1.0.0rc1 / 1.0.0b260219 Notlar 🔴 Çığır Açan Özel get_response() implementasyonlar kabul etmelidir Sequence[Message] #3920
1.0.0rc1 / 1.0.0b260219 Notlar 🔴 Çığır Açan FunctionTool[Any] şema geçiş dolgusu kaldırıldı #3907
1.0.0rc1 / 1.0.0b260219 Notlar 🔴 Çığır Açan ayarları, /pydantic-settings'den taşındı #3843, #4032
1.0.0rc1 / 1.0.0b260219 Notlar 🟡 Geliştirme Mantık modeli iş akışı teslimi ve geçmiş serileştirme düzeltildi #4083
1.0.0rc1 / 1.0.0b260219 Notlar 🟡 Geliştirme ana kaya core[all]'ya eklendi; araç seçimi varsayılanları düzeltildi #3953
1.0.0rc1 / 1.0.0b260219 Notlar 🟡 Geliştirme AzureAIClient desteklenmeyen çalışma zamanı geçişlerini uyarır #3919
1.0.0rc1 / 1.0.0b260219 Notlar 🟡 Geliştirme workflow.as_agent() sağlayıcılar ayarlanmamışken yerel geçmişi içe aktarıyor #3918
1.0.0rc1 / 1.0.0b260219 Notlar 🟡 Geliştirme OpenTelemetry izleme bağlamı MCP isteklerine yayılır #3780
1.0.0rc1 / 1.0.0b260219 Notlar 🟡 Geliştirme Azure İşlevleri için dayanıklı iş akışı desteği eklendi #3630
1.0.0b260212 Notlar 🔴 Çığır Açan Hosted*Tool sınıfları kaldırın; istemci get_*_tool() yöntemleriyle barındırılan araçlar oluşturun #3634
1.0.0b260212 Notlar 🔴 Çığır Açan Oturum/bağlam sağlayıcısı işlem hattı sonlandırıldı: AgentThread kaldırıldı, kullanın AgentSession + context_providers #3850
1.0.0b260212 Notlar 🔴 Çığır Açan Denetim noktası modeli/depolama yeniden düzenlemesi (workflow_id kaldırıldı, previous_checkpoint_id eklendi, depolama davranışı değiştirildi) #3744
1.0.0b260212 Notlar 🟡 Geliştirme AzureOpenAIResponsesClient Foundry proje uç noktasından oluşturulabilir veya AIProjectClient #3814
1.0.0b260212 Notlar 🔴 Çığır Açan Ara yazılım devamı artık context kabul etmemektedir; call_next(context), call_next() olarak güncellenmelidir. #3829
1.0.0b260210 Notlar 🔴 Çığır Açan send_responses() / send_responses_streaming() Kaldırıldı; Kullanın workflow.run(responses=...) #3720
1.0.0b260210 Notlar 🔴 Çığır Açan SharedStateState; iş akışı durumu API’leri eşzamanlı ve kontrol noktası durum alanı yeniden adlandırıldı #3667
1.0.0b260210 Notlar 🔴 Çığır Açan Orkestrasyon oluşturucuları agent_framework.orchestrations paketine taşındı #3685
1.0.0b260210 Notlar 🟡 Geliştirme Python aracı yanıtlarına arka plan yanıtları ve continuation_token desteği eklendi #3808
1.0.0b260210 Notlar 🟡 Geliştirme Yan yana eklenen oturum/bağlam önizleme türleri (SessionContext, BaseContextProvider) #3763
1.0.0b260210 Notlar 🟡 Geliştirme Akış kod yorumlayıcısı güncelleştirmeleri artık artımlı kod değişimleri içeriyor #3775
1.0.0b260210 Notlar 🟡 Geliştirme @tool dekoratör açık şema işleme desteği ekler #3734
1.0.0b260210 Notlar 🔴 Çığır Açan register_executor() / register_agent() öğesi WorkflowBuilder'ten kaldırıldı; durumu yalıtmak için örnekleri doğrudan kullanın ve yardımcı metotlar kullanın. #3781
1.0.0b260210 Notlar 🔴 Çığır Açan , , , #3747
1.0.0b260210 Notlar 🔴 Çığır Açan Tür API'si incelemesi: Role/FinishReason tür değişiklikleri, yanıt/güncelleştirme oluşturucu sıkılaştırma, yardımcıların from_updates olarak yeniden adlandırılması ve kaldırma try_parse_value #3647
1.0.0b260210 Notlar 🔴 Çığır Açan run / get_response ve ResponseStream etrafında birleştirilmiş API'ler #3379
1.0.0b260210 Notlar 🔴 Çığır Açan AgentRunContext olarak yeniden adlandırıldı AgentContext #3714
1.0.0b260210 Notlar 🔴 Çığır Açan AgentProtocol olarak yeniden adlandırıldı SupportsAgentRun #3717
1.0.0b260210 Notlar 🔴 Çığır Açan Ara yazılım next parametresi call_next olarak yeniden adlandırıldı. #3735
1.0.0b260210 Notlar 🔴 Çığır Açan TypeVar adlandırma standartlaştırılmış (TNameNameT) #3770
1.0.0b260210 Notlar 🔴 Çığır Açan Geçerli aracı yanıt akışıyla uyumlu ajans olarak iş akışı çıktısı/akış davranışı #3649
1.0.0b260210 Notlar 🔴 Çığır Açan Fluent builder yöntemleri 6 oluşturucu arasında oluşturucu parametrelerine taşındı #3693
1.0.0b260210 Notlar 🔴 Çığır Açan Ayrıştırıcı ile WorkflowEvent tek type bir iş akışı olayları birleştirilir; isinstance()event.type == "..." #3690
1.0.0b260130 Notlar 🟡 Geliştirme ChatOptions / ChatResponse / AgentResponse yanıt biçimi üzerinde genel #3305
1.0.0b260130 Notlar 🟡 Geliştirme BaseAgent Claude Aracısı SDK tümleştirmeleri için destek eklendi #3509
1.0.0b260128 Notlar 🔴 Çığır Açan AIFunctionFunctionTool, @ai_function@tool #3413
1.0.0b260128 Notlar 🔴 Çığır Açan GroupChat/Magentic için fabrika düzeni; with_standard_managerwith_manager→, participant_factoriesregister_participant #3224
1.0.0b260128 Notlar 🔴 Çığır Açan GithubGitHub #3486
1.0.0b260127 Notlar 🟡 Geliştirme BaseAgent GitHub Copilot SDK tümleştirmeleri için destek eklendi #3404
1.0.0b260123 Notlar 🔴 Çığır Açan Classmethods kullanılarak tek bir Content sınıfta birleştirilen içerik türleri #3252
1.0.0b260123 Notlar 🔴 Çığır Açan response_format doğrulama hataları şimdi ortaya çıkar ValidationError #3274
1.0.0b260123 Notlar 🔴 Çığır Açan AG-UI çalıştırma mantığı basitleştirildi #3322
1.0.0b260123 Notlar 🟡 Geliştirme Antropik istemci yapılandırılmış çıkışlar için destek ekler response_format #3301
1.0.0b260123 Notlar 🟡 Geliştirme Azure AI yapılandırması, reasoning ve rai_config desteğiyle genişletildi. #3403, #3265
1.0.0b260116 Notlar 🔴 Çığır Açan create_agentas_agent #3249
1.0.0b260116 Notlar 🔴 Çığır Açan source_executor_idexecutor_id #3166
1.0.0b260116 Notlar 🟡 Geliştirme AG-UI hizmet tarafından yönetilen oturum/iş parçacığı sürekliliğini destekler #3136
1.0.0b260114 Notlar 🔴 Çığır Açan Yeniden yapılandırılmış orkestrasyonlar (GroupChat, Handoff, Sıralı, Eşzamanlı) #3023
1.0.0b260114 Notlar 🔴 Çığır Açan TypedDict ve Genel Olarak Seçenekler #3140
1.0.0b260114 Notlar 🔴 Çığır Açan display_name Kaldırıldı; context_providerscontext_provider → (tekil); middleware liste olmalıdır #3139
1.0.0b260114 Notlar 🔴 Çığır Açan AgentRunResponse / AgentRunResponseUpdate olarak yeniden adlandırıldı AgentResponse/AgentResponseUpdate #3207
1.0.0b260114 Notlar 🟡 Geliştirme YAML tanımlı iş akışları için bildirim temelli iş akışı çalışma zamanı eklendi #2815
1.0.0b260114 Notlar 🟡 Geliştirme MCP yükleme/güvenilirlik geliştirmeleri (bağlantı kaybı işleme, sayfalandırma, gösterim denetimleri) #3154
1.0.0b260114 Notlar 🟡 Geliştirme Foundry A2ATool , açık hedef URL'si olmayan bağlantıları destekler #3127
1.0.0b260107 Notlar Önemli bir değişiklik yok
1.0.0b260106 Notlar Önemli bir değişiklik yok

Sonraki Adımlar