Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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, 1.0.0 kararlı sürümüne ulaştığımızda kaldırılacaktır, bu nedenle önemli değişiklikleri kaçırmadığınızdan emin olmak için lütfen 2026'daki sürümler arasında yükseltme yaparken bu belgeye başvurun. 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.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. -
FunctionInvocationContextvectx.kwargsaracılığıylactx.sessionile 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_featuresPassthrough, Azure AI aracısı oluşturma işleminden kaldırıldı. - Önizleme davranışı artık desteklenen istemcilerde/sağlayıcılarda
allow_preview=Truekullanı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 birdictveri sınıfı alır. -
ToolResult'ıresult_typevetext_result_for_llmgibi snake_case alanları kullanarak geri dönün. - Paket
agent-framework-github-copilotartı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ü
FileAgentSkillsProviderhala içeri aktarıyorsanız,SkillsProviderögesine geçin. - Dosya tabanlı kaynak arama artık
SKILL.mdiç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()
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_id = settings["model_id"]
Ö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()paketindenpython-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 desteklenmeyen çalışma zamanı ayarları geçersiz kılmaları konusunda uyarı verir
Pr:#3919
AzureAIClient artık çalışma zamanı tools veya structured_output aracının oluşturulma zamanı yapılandırmasından farklı olduğunda bir uyarı günlüğe kaydeder. Azure AI Aracısı Hizmeti çalışma zamanı aracını veya yanıt biçimi değişikliklerini desteklemez; bunun yerine dinamik geçersiz kılmalara ihtiyacınız varsa kullanın AzureOpenAIResponsesClient .
🟡
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ı.
-
AgentThread→AgentSession -
agent.get_new_thread()→agent.create_session() -
agent.get_new_thread(service_thread_id=...)→agent.get_session(service_session_id=...) -
context_provider=/chat_message_store_factory=desenlericontext_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_idkaldırıldı veprevious_checkpoint_ideklendi - 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.
🟡
AzureOpenAIResponsesClient Microsoft Foundry proje uç noktalarını destekler
Pr:#3814
Foundry proje uç noktası veya AzureOpenAIResponsesClient ile AIProjectClient oluşturabilir, yalnızca doğrudan Azure OpenAI uç noktaları ile sınırlı kalmayabilirsiniz.
from azure.identity import DefaultAzureCredential
from agent_framework.azure import AzureOpenAIResponsesClient
client = AzureOpenAIResponsesClient(
project_endpoint="https://<your-project>.services.ai.azure.com",
deployment_name="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.
-
RoleveFinishReasonartıkNewTypestrileRoleLiteral/FinishReasonLiteralbilinen değerler için sarmalayıcılardır. Bunları dize olarak değerlendirin (.valuekullanılmadan). -
Messageyapısı üzerindeMessage(role, contents=[...])standartlaştırılmıştır; içindekicontentsdizeler otomatik olarak metin içeriğine dönüştürülür. -
ChatResponseveAgentResponseoluşturucular artıkmessages=üzerine odaklanır (tekMessageveya dizi); eskitext=oluşturucu kullanımı yanıtlardan çıkartıldı. -
ChatResponseUpdateveAgentResponseUpdateartıktext=kabul etmez;contents=[Content.from_text(...)]kullanın. - Güncelleme birleştirme yardımcısı adları basitleştirildi.
-
try_parse_valueveChatResponseöğesindenAgentResponsekaldı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ı
| Ö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ış (TName → NameT)
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şimdistart_executor'i oluşturucu bağımsız değişkeni olarak gerektiriyor (daha önce fluent yöntemi kullanılarak ayarlanıyordu) -
SequentialBuilder,ConcurrentBuilder,GroupChatBuilderveMagenticBuilderşimdi yapım zamanında yaparticipantsya daparticipant_factoriesgerektiriyor — ikisi de sağlanmazsaValueErroryü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_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.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)
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ı:
AgentApprovalExecutorveAgentRequestInfoExecutoraracı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_id": "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_nameparametre aracılardan kaldırıldı -
context_providers(çoğul, kabul eden liste) olarak değiştirildicontext_provider(tekil, yalnızca 1 izin verilir) -
middlewareşimdi bir liste gerektiriyor (artık tek örneği kabul etmemektedir) -
AggregateContextProviderkoddan 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.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 | #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 |
SharedState → State; 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ış (TName → NameT) |
#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 |
AIFunction → FunctionTool, @ai_function → @tool |
#3413 |
| 1.0.0b260128 | Notlar | 🔴 Çığır Açan | GroupChat/Magentic için fabrika düzeni; with_standard_managerwith_manager→, participant_factories → register_participant |
#3224 |
| 1.0.0b260128 | Notlar | 🔴 Çığır Açan |
Github → GitHub |
#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_agent → as_agent |
#3249 |
| 1.0.0b260116 | Notlar | 🔴 Çığır Açan |
source_executor_id → executor_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 | — |