Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este documento lista todas as alterações significativas nas versões do Python desde o início de 2026, incluindo alterações significativas e aprimoramentos importantes que podem afetar seu código. Cada alteração é marcada como:
- 🔴 Interrupção – requer alterações de código para atualizar
- 🟡 Aprimoramento – nova funcionalidade ou melhoria; o código existente continua a funcionar
Este documento será removido quando chegarmos à versão estável 1.0.0, portanto, consulte-o ao atualizar entre as versões em 2026 para garantir que você não perca nenhuma alteração importante. Para obter instruções de atualização detalhadas sobre tópicos específicos (por exemplo, migração de opções), consulte os guias de atualização vinculados ou as PR vinculadas.
python-1.0.0rc1 / python-1.0.0b260219 (19 de fevereiro de 2026)
Lançamento:agent-framework-core e agent-framework-azure-ai promovido a 1.0.0rc1. Todos os outros pacotes atualizados para 1.0.0b260219.
🔴 Manipulação unificada de credenciais do Azure em todos os pacotes
PR:#4088
Os parâmetros/auxiliares ad_token, ad_token_provider e get_entra_auth_token foram substituídos por um único parâmetro credential em todos os pacotes relacionados ao Python no Azure. A nova abordagem usa azure.identity.get_bearer_token_provider para cache e atualização de token automático.
Classes afetadas:AzureOpenAIChatClient, AzureOpenAIResponsesClient, , AzureOpenAIAssistantsClient, AzureAIClient, AzureAIAgentClient, AzureAIProjectAgentProvider, AzureAIAgentsProvider, AzureAISearchContextProvider, , PurviewClient, , PurviewPolicyMiddleware. PurviewChatPolicyMiddleware
Before:
from azure.identity import AzureCliCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
AzureCliCredential(), "https://cognitiveservices.azure.com/.default"
)
client = AzureOpenAIResponsesClient(
azure_ad_token_provider=token_provider,
...
)
After:
from azure.identity import AzureCliCredential
client = AzureOpenAIResponsesClient(
credential=AzureCliCredential(),
...
)
O credential parâmetro aceita TokenCredential, AsyncTokenCredentialou um provedor de token que pode ser chamado. O cache de token e a atualização são tratados automaticamente.
🔴 Hierarquia de exceções reprojetada do Python
PR:#4082
A família plana ServiceException foi substituída por ramificações de exceção com escopo de domínio sob uma única raiz AgentFrameworkException. Isso fornece aos chamadores destinos precisos except e semântica de erro clara.
Nova hierarquia:
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
Exceções removidas:ServiceException, ServiceInitializationError, , ServiceResponseException, ServiceContentFilterException, ServiceInvalidAuthError, ServiceInvalidExecutionSettingsError, ServiceInvalidRequestError, , ServiceInvalidResponseError, AgentExecutionException, AgentInvocationError, , AgentInitializationError, , AgentSessionException, , ChatClientInitializationError. CheckpointDecodingError
Before:
from agent_framework.exceptions import ServiceException, ServiceResponseException
try:
result = await agent.run("Hello")
except ServiceResponseException:
...
except ServiceException:
...
After:
from agent_framework.exceptions import AgentException, AgentInvalidResponseException, AgentFrameworkException
try:
result = await agent.run("Hello")
except AgentInvalidResponseException:
...
except AgentException:
...
except AgentFrameworkException:
# catch-all for any Agent Framework error
...
Observação
Os erros de validação de inicialização agora usam exceções embutidas ValueError/TypeError em vez de exceções personalizadas. As exceções do Agent Framework são reservadas para falhas no nível do domínio.
🔴 Estado do provedor definido por source_id
PR:#3995
Os hooks do provedor agora recebem um dicionário de estado com escopo específico de provedor (state.setdefault(provider.source_id, {})) em vez do estado completo da sessão. Isso significa que as implementações do provedor que acessaram anteriormente o estado aninhado por meio de state[self.source_id]["key"] agora devem acessar state["key"] diretamente.
Além disso, InMemoryHistoryProvider o padrão source_id foi alterado de "memory" para "in_memory".
Before:
# In a custom provider hook:
async def on_before_agent(self, state: dict, **kwargs):
my_data = state[self.source_id]["my_key"]
# InMemoryHistoryProvider default source_id
provider = InMemoryHistoryProvider("memory")
After:
# Provider hooks receive scoped state — no nested access needed:
async def on_before_agent(self, state: dict, **kwargs):
my_data = state["my_key"]
# InMemoryHistoryProvider default source_id changed
provider = InMemoryHistoryProvider("in_memory")
🔴 Alinhamento de digitação de mensagem de chat/agente (run vs get_response)
PR:#3920
As implementações do cliente get_response de chat agora recebem Sequence[Message]consistentemente.
agent.run(...) permanece flexível (str, Content, Messageou sequências deles) e normaliza as entradas antes de chamar clientes de chat.
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] configuração genérica removida para passagem de esquema
PR:#3907
Os caminhos de ferramenta baseados em esquema não dependem mais do comportamento genérico anterior FunctionTool[Any] .
Use FunctionTool diretamente e forneça um pydantic BaseModel ou esquemas explícitos quando necessário (por exemplo, com @tool(schema=...)).
Before:
placeholder: FunctionTool[Any] = FunctionTool(...)
After:
placeholder: FunctionTool = FunctionTool(...)
🔴 Configurações pedantes substituídas por TypedDict + load_settings()
A classe baseada em pydantic-settingsAFBaseSettings foi substituída por um sistema leve de configurações baseado em funções usando TypedDict e load_settings(). A pydantic-settings dependência foi totalmente removida.
Todas as classes de configurações (por exemplo, OpenAISettings, , AzureOpenAISettings, AnthropicSettings) agora TypedDict são definições e os valores de configurações são acessados por meio da sintaxe do dicionário em vez de acesso ao atributo.
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"]
Importante
O Agent Framework não carrega valores automaticamente de .env arquivos. Você deve optar explicitamente pelo carregamento de .env, escolhendo uma das opções:
- Chamando
load_dotenv()do pacotepython-dotenvno início do seu aplicativo - Passando
env_file_path=".env"paraload_settings() - Definindo variáveis de ambiente diretamente em seu shell ou IDE
A load_settings ordem de resolução é: substituições explícitas → .env valores de arquivo (quando env_file_path for fornecido) → variáveis de ambiente → padrões. Se você especificar env_file_path, o arquivo deverá existir ou um FileNotFoundError será gerado.
🟡 Corrigir a entrega do fluxo de trabalho do modelo de raciocínio e a serialização do histórico
PR:#4083
Corrige várias falhas ao usar modelos de raciocínio (por exemplo, gpt-5-mini, gpt-5.2) em fluxos de trabalho de vários agentes. Os itens de raciocínio da API de Respostas agora são serializados corretamente e incluídos apenas no histórico quando um function_call também está presente, evitando erros de API. O conteúdo de raciocínio criptografado/oculto agora é emitido corretamente e o formato de summary campo é corrigido. O service_session_id também é liberado na entrega para evitar vazamento de estado entre agentes.
🟡 Bedrock adicionado a core[all] e padrões de escolha de ferramentas foram corrigidos
PR:#3953
A Amazon Bedrock agora está incluída nos agent-framework-core[all] extras e está disponível através da agent_framework.amazon superfície de importação lenta. O comportamento de escolha da ferramenta também foi corrigido: os valores de escolha de ferramenta não definidos agora permanecem não definidos para que os provedores usem seus padrões de serviço, enquanto os valores definidos explicitamente são preservados.
from agent_framework.amazon import BedrockClient
🟡 AzureAIClient alerta sobre substituições de tempo de execução sem suporte
PR:#3919
AzureAIClient agora registra um aviso quando o runtime tools ou structured_output difere da configuração de tempo de criação do agente. O Serviço do Agente de IA do Azure não dá suporte a alterações de formato de resposta ou ferramenta de runtime. Em vez disso, use AzureOpenAIResponsesClient se você precisar de substituições dinâmicas.
🟡
workflow.as_agent() agora, o histórico local é padrão quando os provedores não são definidos
PR:#3918
Quando workflow.as_agent() é criado sem context_providers, ele agora adiciona InMemoryHistoryProvider("memory") por padrão.
Se os provedores de contexto forem fornecidos explicitamente, essa lista será preservada inalterada.
workflow_agent = workflow.as_agent(name="MyWorkflowAgent")
# Default local history provider is injected when none are provided.
🟡 Contexto de rastreamento OpenTelemetry propagado para solicitações MCP
PR:#3780
Quando OpenTelemetry é instalado, o contexto de rastreamento (por exemplo, W3C traceparent) é injetado automaticamente em solicitações MCP por meio de params._meta. Isso permite o rastreamento distribuído de ponta a ponta entre chamadas de servidor MCP → agente. Nenhuma alteração de código é necessária: esse é um comportamento aditivo que é ativado quando há um contexto de intervalo válido.
🟡 Suporte de fluxo de trabalho durável para o Azure Functions
PR:#3630
O agent-framework-azurefunctions pacote agora dá suporte à execução Workflow de grafos no Azure Durable Functions. Passe um workflow parâmetro para AgentFunctionApp, a fim de registrar automaticamente entidades de agente, funções de atividade e pontos de extremidade HTTP.
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
Dá suporte a fan-out/fan-in, estado compartilhado e padrões humanos no loop com tempo limite configurável e rejeição automática na expiração.
python-1.0.0b260212 (12 de fevereiro de 2026)
Notas de versão:python-1.0.0b260212
🔴
Hosted*Toolclasses substituídas por métodos de cliente get_*_tool()
PR:#3634
As classes de ferramentas hospedadas foram removidas em favor de métodos de fábrica com escopo de cliente. Isso torna a disponibilidade da ferramenta explícita para cada provedor.
| Classe removida | 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()]
🔴 Pipeline do provedor de sessão e contexto finalizado (AgentSession, context_providers)
PR:#3850
A sessão do Python e a migração do provedor de contexto foram concluídas.
AgentThread e os tipos de provedor de contexto antigos foram removidos.
-
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=os padrões são substituídos porcontext_providers=[...]
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)
🔴 Modelo de ponto de verificação e comportamento de armazenamento refatorados
PR:#3744
A estrutura interna do ponto de verificação foi redesenhada, o que afeta a compatibilidade dos pontos de verificação persistentes e as implementações personalizadas de armazenamento.
-
WorkflowCheckpointagora armazena objetos dinâmicos (a serialização ocorre no armazenamento de ponto de verificação) -
FileCheckpointStorageagora usa serialização pickle -
workflow_idfoi removido eprevious_checkpoint_idfoi adicionado - Ganchos de ponto de verificação obsoletos foram removidos
Se você persistir pontos de verificação entre versões, regenere ou migre artefatos de ponto de verificação existentes antes de retomar os fluxos de trabalho.
🟡
AzureOpenAIResponsesClient suporta endpoints de projeto do Microsoft Foundry
PR:#3814
Agora você pode criar AzureOpenAIResponsesClient com um endpoint de projeto do Foundry ou AIProjectClient, e não apenas endpoints diretos do Azure OpenAI.
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(),
)
🔴 Middleware call_next não aceita mais context
PR:#3829
A continuação do middleware agora não usa argumentos. Se o middleware ainda chamar call_next(context), atualize-o para call_next().
Before:
async def telemetry_middleware(context, call_next):
# ...
return await call_next(context)
After:
async def telemetry_middleware(context, call_next):
# ...
return await call_next()
python-1.0.0b260210 (10 de fevereiro de 2026)
Notas de versão:python-1.0.0b260210
🔴 Métodos de fábrica de fluxo de trabalho removidos WorkflowBuilder
PR:#3781
register_executor() e register_agent() foram removidos de WorkflowBuilder. Todos os métodos do construtor (add_edge, add_fan_out_edges, add_fan_in_edges, , add_chain, add_switch_case_edge_group) add_multi_selection_edge_groupe start_executor não aceitam mais nomes de cadeia de caracteres – eles exigem instâncias de executor ou agente diretamente.
Para isolamento de estado, envolva a instanciação do executor/agente e a construção de fluxo de trabalho dentro de um método auxiliar para que cada chamada produza novas instâncias.
WorkflowBuilder com executores
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 com agentes
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()
Isolamento de estado com métodos auxiliares
Para fluxos de trabalho que precisam de estado isolado por invocação, encapsule a construção em um método auxiliar:
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 renomeado como Agent, ChatMessage renomeado para Message
PR:#3747
Os principais tipos de Python foram simplificados removendo o prefixo redundante Chat . Nenhum alias de compatibilidade com versões anteriores são fornecidos.
| Antes | Após |
|---|---|
ChatAgent |
Agent |
RawChatAgent |
RawAgent |
ChatMessage |
Message |
ChatClientProtocol |
SupportsChatGetResponse |
Atualizar importações
Before:
from agent_framework import ChatAgent, ChatMessage
After:
from agent_framework import Agent, Message
Atualizar referências de tipo
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")])
Observação
ChatClient, ChatResponsee ChatOptionsChatMessageStorenão são renomeados por essa alteração.
🔴 Tipos de atualizações de revisão de API em modelos de resposta/mensagem
PR:#3647
Esta versão inclui uma limpeza ampla e significativa das APIs auxiliares e de digitação de mensagem/resposta.
-
RoleeFinishReasonagora são wrappers sobreNewTypestrcomRoleLiteral/FinishReasonLiteralpara valores conhecidos. Trate-as como cadeias de caracteres (sem.valueuso). -
Messagea padronização da construção é feita emMessage(role, contents=[...]); strings emcontentssão convertidas automaticamente para conteúdo de texto. -
ChatResponseeAgentResponseconstrutores agora centralizados (messages=únicoMessageou sequência); o uso do construtor herdadotext=foi removido das respostas. -
ChatResponseUpdateeAgentResponseUpdatenão aceitam maistext=; usecontents=[Content.from_text(...)]. - Os nomes auxiliares de combinação de atualizações foram simplificados.
-
try_parse_valuefoi removido deChatResponseeAgentResponse.
Renomeações de método auxiliar
| Antes | Após |
|---|---|
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(...) |
Atualizar a construção da atualização de resposta
Before:
update = AgentResponseUpdate(text="Processing...", role="assistant")
After:
from agent_framework import AgentResponseUpdate, Content
update = AgentResponseUpdate(
contents=[Content.from_text("Processing...")],
role="assistant",
)
Substituir try_parse_value por try/except em .value
Before:
if parsed := response.try_parse_value(MySchema):
print(parsed.name)
After:
from pydantic import ValidationError
try:
parsed = response.value
if parsed:
print(parsed.name)
except ValidationError as err:
print(f"Validation failed: {err}")
🔴Modelo e uso unificados run/get_responseResponseStream
PR:#3379
As APIs do Python foram consolidadas em torno de agent.run(...) e client.get_response(...), com streaming representado por ResponseStream.
Before:
async for update in agent.run_stream("Hello"):
print(update)
After:
stream = agent.run("Hello", stream=True)
async for update in stream:
print(update)
🔴 Renomeações de tipo de protocolo/contexto principal
| Antes | Após |
|---|---|
AgentRunContext |
AgentContext |
AgentProtocol |
SupportsAgentRun |
Atualize as importações e digite anotações adequadamente.
🔴 Parâmetro de continuação do middleware renomeado para call_next
PR:#3735
As assinaturas de middleware agora devem ser usadas call_next em vez de next.
Before:
async def my_middleware(context, next):
return await next(context)
After:
async def my_middleware(context, call_next):
return await call_next(context)
🔴 Nomes typeVar padronizados (TName → NameT)
PR:#3770
A base de código agora segue um estilo de nomenclatura TypeVar consistente em que o sufixo T é usado.
Before:
TMessage = TypeVar("TMessage")
After:
MessageT = TypeVar("MessageT")
Se você mantiver wrappers personalizados em torno de genéricos de framework, alinhe os nomes TypeVar locais com a nova convenção para reduzir a mudança nas anotações.
🔴 Alterações de saída e streaming de fluxo de trabalho como agente
PR:#3649
workflow.as_agent() o comportamento foi atualizado para alinhar a saída e o streaming com padrões de resposta do agente padrão. Examine os consumidores de fluxo de trabalho como agente que dependem do tratamento herdado de saída/atualização e atualize-os para o fluxo atual AgentResponse/AgentResponseUpdate .
🔴 Métodos de construção fluente convertidos em parâmetros do construtor
PR:#3693
Métodos fluentes de configuração única em seis construtores (WorkflowBuilder, , SequentialBuilder, ConcurrentBuilder, GroupChatBuilder, MagenticBuilder, HandoffBuilder) foram migrados para parâmetros de construtor. Métodos fluentes que eram o único caminho para ajustar uma configuração são substituídos por argumentos de construtor.
WorkflowBuilder
set_start_executor(), with_checkpointing()e with_output_from() são removidos. Em vez disso, use parâmetros de construtor.
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()e with_checkpointing()with_intermediate_outputs() são removidos. Em vez disso, use parâmetros de construtor.
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()e with_checkpointing()with_intermediate_outputs() são removidos. Em vez disso, use parâmetros de construtor.
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()e with_checkpointing()with_intermediate_outputs() são removidos. Em vez disso, use parâmetros de construtor.
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() e with_termination_condition() são removidos. Em vez disso, use parâmetros de construtor.
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()
)
Alterações de validação
-
WorkflowBuilderagora requerstart_executorcomo um argumento construtor (definido anteriormente por meio do método fluente) -
SequentialBuilder,ConcurrentBuilder,GroupChatBuildereMagenticBuilderagora exigem ouparticipantsouparticipant_factoriesem tempo de construção — não passando nenhum deles geraValueError
Observação
🔴 Eventos de fluxo de trabalho unificados em um único WorkflowEvent com type discriminador.
PR:#3690
Todas as subclasses de evento de fluxo de trabalho individuais foram substituídas por uma única classe genérica WorkflowEvent[DataT] . Em vez de usar isinstance() verificações para identificar tipos de evento, agora você verifica o literal da cadeia de caracteres event.type (por exemplo, "output", "request_info", "status"). Isso segue o mesmo padrão da Content consolidação da classe a partir de python-1.0.0b260123.
Classes de evento removidas
As seguintes subclasses de evento exportadas não existem mais:
| Classe antiga | Novo event.type Valor |
|---|---|
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" |
Atualizar importações
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
Atualizar verificações de tipo de evento
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}")
Transmissão com AgentResponseUpdate
Before:
from agent_framework import AgentResponseUpdate, WorkflowOutputEvent
async for event in workflow.run_stream("Write a blog post about AI agents."):
if isinstance(event, WorkflowOutputEvent) and isinstance(event.data, AgentResponseUpdate):
print(event.data, end="", flush=True)
elif isinstance(event, WorkflowOutputEvent):
print(f"Final output: {event.data}")
After:
from agent_framework import AgentResponseUpdate
async for event in workflow.run_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}")
Digitar anotações
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
Observação
WorkflowEvent é genérico (WorkflowEvent[DataT]), mas para coleções de eventos mistos, use WorkflowEvent[Any] ou não parametrizado WorkflowEvent.
🔴
workflow.send_responses* Removido; Usar workflow.run(responses=...)
PR:#3720
send_responses() e send_responses_streaming() foram removidos de Workflow. Continue os fluxos de trabalho pausados passando respostas diretamente para run().
Before:
async for event in workflow.send_responses_streaming(
checkpoint_id=checkpoint_id,
responses=[approved_response],
):
...
After:
async for event in workflow.run(
checkpoint_id=checkpoint_id,
responses=[approved_response],
):
...
🔴
SharedState renomeado para State; as APIs de estado do fluxo de trabalho são síncronas
PR:#3667
As APIs de estado não são mais necessárias awaite a nomenclatura foi padronizada:
| Antes | Após |
|---|---|
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 |
🔴 Construtores de orquestração transferidos para agent_framework.orchestrations
PR:#3685
Os construtores de orquestração agora estão em um namespace de pacote dedicado.
Before:
from agent_framework import SequentialBuilder, GroupChatBuilder
After:
from agent_framework.orchestrations import SequentialBuilder, GroupChatBuilder
🟡 Respostas em segundo plano e tokens de continuação de execução prolongada
PR:#3808
Agora há suporte para respostas em segundo plano em execuções de agente do Python através de options={"background": True} e continuation_token.
response = await agent.run("Long task", options={"background": True})
while response.continuation_token is not None:
response = await agent.run(options={"continuation_token": response.continuation_token})
🟡 Pré-visualizações dos tipos de provedor de sessão/contexto adicionadas lado a lado
PR:#3763
Novos tipos de pipeline de sessão/contexto foram introduzidos juntamente com APIs herdadas para migração incremental, incluindo SessionContext e BaseContextProvider.
🟡 O streaming de interpretador de código agora inclui deltas de código incrementais
PR:#3775
O interpretador de código de streaming executa agora atualizações delta do surface code no conteúdo transmitido para que as interfaces do usuário possam renderizar o código gerado progressivamente.
🟡
@tool dá suporte ao tratamento de esquema explícito
PR:#3734
As definições de ferramenta agora podem usar o tratamento de esquema explícito quando a saída de esquema inferida precisa de personalização.
python-1.0.0b260130 (30 de janeiro de 2026)
Notas de versão:python-1.0.0b260130
🟡
ChatOptions e ChatResponse/AgentResponse agora está genérico para o formato de resposta
PR:#3305
ChatOptions, ChatResponsee AgentResponse agora são tipos genéricos parametrizados pelo tipo de formato de resposta. Isso permite uma inferência de tipo melhor ao usar saídas estruturadas com response_format.
Before:
from agent_framework import ChatOptions, ChatResponse
from pydantic import BaseModel
class MyOutput(BaseModel):
name: str
score: int
options: ChatOptions = {"response_format": MyOutput} # No type inference
response: ChatResponse = await client.get_response("Query", options=options)
result = response.value # Type: Any
After:
from agent_framework import ChatOptions, ChatResponse
from pydantic import BaseModel
class MyOutput(BaseModel):
name: str
score: int
options: ChatOptions[MyOutput] = {"response_format": MyOutput} # Generic parameter
response: ChatResponse[MyOutput] = await client.get_response("Query", options=options)
result = response.value # Type: MyOutput | None (inferred!)
Dica
Este é um aprimoramento que não causa interrupções. O código existente sem parâmetros de tipo continua funcionando. Você não precisa especificar os tipos no snippet de código acima para as opções e a resposta; eles são mostrados aqui para maior clareza.
🟡
BaseAgent suporte adicionado para o SDK do Claude Agent
PR:#3509
O SDK do Python agora inclui uma BaseAgent implementação para o SDK do Claude Agent, permitindo o uso baseado em adaptador de primeira classe no Agent Framework.
python-1.0.0b260128 (28 de janeiro de 2026)
Notas de versão:python-1.0.0b260128
🔴
AIFunction renomeado para FunctionTool e @ai_function renomeado para @tool
PR:#3413
A classe e o decorador foram renomeados para clareza e consistência com a terminologia da indústria.
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)
🔴 Padrão Factory adicionado ao GroupChat e Magentic; renomeações de API
PR:#3224
Adição da fábrica de participantes e da fábrica de orquestradores para o chat em grupo. Também inclui renomeações:
-
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 renomeado para GitHub
PR:#3486
Nomes de classe e pacotes atualizados para usar a capitalização correta.
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 de janeiro de 2026)
Notas de versão:python-1.0.0b260127
🟡
BaseAgent suporte adicionado para o SDK do GitHub Copilot
PR:#3404
O SDK do Python agora inclui uma BaseAgent implementação para integrações do SDK do GitHub Copilot.
python-1.0.0b260123 (23 de janeiro de 2026)
Notas de versão:python-1.0.0b260123
🔴 Tipos de conteúdo simplificados para uma única classe com construtores de método de classe
PR:#3252
Substituíram todos os tipos de conteúdo antigos (derivados de BaseContent) por uma única classe Content com métodos de classe para criar tipos específicos.
Referência de migração completa
| Tipo antigo | Novo método |
|---|---|
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(...) |
Novos métodos adicionais (sem predecessor direto):
-
Content.from_text_reasoning(...)— Para conteúdo de raciocínio/pensamento -
Content.from_hosted_vector_store(...)— Para referências do repositório de vetores -
Content.from_usage(...)— Para informações sobre uso/token -
Content.from_mcp_server_tool_call(...)/Content.from_mcp_server_tool_result(...)— Para ferramentas de servidor MCP -
Content.from_code_interpreter_tool_call(...)/Content.from_code_interpreter_tool_result(...)— Para interpretador de código -
Content.from_image_generation_tool_call(...)/Content.from_image_generation_tool_result(...)— Para geração de imagem
Verificação de tipo
Em vez de isinstance() verificar, use a type propriedade:
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)
Exemplo básico
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")
🔴 Tipos de anotação simplificados para Annotation e TextSpanRegion TypedDicts
PR:#3252
Tipos de anotação baseados em classe substituídos por definições mais TypedDict simples.
| Tipo antigo | Novo Tipo |
|---|---|
CitationAnnotation (classe) |
Annotation (TypedDict com type="citation") |
BaseAnnotation (classe) |
Annotation (TypedDict) |
TextSpanRegion (classe com SerializationMixin) |
TextSpanRegion (TypedDict) |
Annotations (alias de tipo) |
Annotation |
AnnotatedRegions (alias de tipo) |
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"
}
Observação
Desde que Annotation e TextSpanRegion são agora TypedDicts, você os cria como dicionários, em vez de instâncias de classe.
🔴
response_format Erros de validação agora visíveis para os usuários
PR:#3274
ChatResponse.value e AgentResponse.value agora levantam ValidationError quando a validação do esquema falha, em vez de apenas retornar None de forma silenciosa.
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 execução lógica simplificada; Correções para o cliente MCP e Anthropic
PR:#3322
A assinatura e o run comportamento do método em AG-UI foram simplificados.
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
)
🟡 O cliente antropático agora dá suporte a saídas response_format estruturadas
PR:#3301
Agora você pode usar a análise de saída estruturada com clientes da Anthropic por meio do response_format, assim como com clientes da OpenAI e da Azure.
🟡 Configuração de IA do Azure expandida (reasoning, rai_config)
O suporte à IA do Azure foi expandido com suporte à configuração de raciocínio e rai_config durante a criação do agente.
python-1.0.0b260116 (16 de janeiro de 2026)
Notas de versão:python-1.0.0b260116
🔴
create_agent renomeado para as_agent
PR:#3249
Método renomeado para maior clareza sobre sua finalidade.
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 renomeado para executor_id
PR:#3166
Propriedade renomeada para consistência de uma API.
Before:
async for event in workflow.run_stream(...):
if isinstance(event, WorkflowOutputEvent):
executor = event.source_executor_id
After:
async for event in workflow.run_stream(...):
if isinstance(event, WorkflowOutputEvent):
executor = event.executor_id
🟡 AG-UI oferece suporte à continuidade de sessão gerenciada por serviço
PR:#3136
AG-UI agora preserva a identidade da conversa gerenciada pelo serviço (por exemplo, sessões/encadeamentos gerenciados pelo Foundry) para manter a continuidade em múltiplos turnos.
python-1.0.0b260114 (14 de janeiro de 2026)
Notas de versão:python-1.0.0b260114
🔴 Orquestrações refatoradas
PR:#3023
Ampla refatoração e simplificação de orquestrações em fluxos de trabalho do Agent Framework:
-
Chat em Grupo: Dividir o executor do orquestrador em um agente dedicado e em um baseado em função (
BaseGroupChatOrchestrator,GroupChatOrchestrator,AgentBasedGroupChatOrchestrator). Simplificado para a topologia estrela com o modelo de transmissão. -
Transferência: suporte a camada única, coordenador e executor personalizado removido. Movido para o modelo de transmissão com
HandoffAgentExecutor. -
Sequencial & Concorrente: mecanismo simplificado de informações de solicitação que conta com sub-fluxos de trabalho por meio
AgentApprovalExecutoreAgentRequestInfoExecutor.
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]
)
🔴 Opções introduzidas como TypedDict e Generic
PR:#3140
As opções agora são digitadas usando TypedDict para melhor segurança de tipo e preenchimento automático do IDE.
📖 Para obter instruções completas de migração, consulte o Guia de Opções Tipadas.
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 Removido; context_provider para o singular; middleware deve ser uma lista
PR:#3139
-
display_nameparâmetro removido dos agentes -
context_providers(plural, lista de aceitação) alterada paracontext_provider(singular, apenas 1 permitido) -
middlewareagora requer uma lista (não aceita mais uma única instância) -
AggregateContextProviderremovido do código (use a implementação de exemplo, se necessário)
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* renomeado para AgentResponse*
PR:#3207
AgentRunResponse e AgentRunResponseUpdate foram renomeado para AgentResponse e AgentResponseUpdate.
Before:
from agent_framework import AgentRunResponse, AgentRunResponseUpdate
After:
from agent_framework import AgentResponse, AgentResponseUpdate
🟡 Adicionado suporte para tempo de execução de fluxo de trabalho declarativo em fluxos de trabalho definidos por YAML
PR:#2815
Um runtime baseado em grafo foi adicionado para executar fluxos de trabalho declarativos do YAML, habilitando a orquestração de vários agentes sem código de runtime personalizado.
🟡 Melhorias de carregamento/confiabilidade do MCP
PR:#3154
As integrações do MCP ganharam comportamento aperfeiçoado em caso de perda de conexão, suporte à paginação ao carregar e opções de controle de representação.
🟡 A Foundry A2ATool agora dá suporte a conexões sem uma URL de destino
PR:#3127
A2ATool agora pode resolver conexões A2A com suporte do Foundry por meio de metadados de conexão de projeto mesmo quando uma URL de destino direto não está configurada.
python-1.0.0b260107 (7 de janeiro de 2026)
Notas de versão:python-1.0.0b260107
Nenhuma alteração significativa nesta versão.
python-1.0.0b260106 (6 de janeiro de 2026)
Notas de versão:python-1.0.0b260106
Nenhuma alteração significativa nesta versão.
Tabela de resumo
| Liberação | Notas de Lançamento | Tipo | Change | PR |
|---|---|---|---|---|
| post-1.0.0b260212 (não lançado) | N/A | 🔴 Últimas | Digitação de mensagem de chat/agente alinhada: implementações personalizadas get_response() devem aceitar Sequence[Message] |
#3920 |
| post-1.0.0b260212 (não lançado) | N/A | 🔴 Últimas |
FunctionTool[Any] o shim de compatibilidade foi removido para a passagem de esquema, use FunctionTool com esquemas explícitos conforme necessário |
#3907 |
| post-1.0.0b260212 (não lançado) | N/A | 🟡 Aprimoramento |
workflow.as_agent() agora injeta InMemoryHistoryProvider("memory") por padrão quando os provedores de contexto não são definidos |
#3918 |
| 1.0.0b260212 | Notes | 🔴 Últimas |
Hosted*Toolclasses removidas; criar ferramentas hospedadas utilizando métodos do cliente get_*_tool() |
#3634 |
| 1.0.0b260212 | 🔴 Últimas | Pipeline do provedor de sessão/contexto finalizado: AgentThread removido, use AgentSession + context_providers |
#3850 | |
| 1.0.0b260212 | 🔴 Últimas | Refatoração de modelo/armazenamento de ponto de verificação (workflow_id removido, previous_checkpoint_id adicionado, comportamento de armazenamento alterado) |
#3744 | |
| 1.0.0b260212 | 🟡 Aprimoramento |
AzureOpenAIResponsesClient pode ser criado a partir do endpoint do projeto do Foundry ou AIProjectClient |
#3814 | |
| 1.0.0b260212 | 🔴 Últimas | A continuação do middleware não aceita mais context; atualize call_next(context) para call_next(). |
#3829 | |
| 1.0.0b260210 | Notes | 🔴 Últimas |
send_responses()
/
send_responses_streaming() Removido; Usar workflow.run(responses=...) |
#3720 |
| 1.0.0b260210 | 🔴 Últimas |
SharedState → State; Os APIs de estado do fluxo de trabalho são síncronas e o campo de estado de ponto de verificação foi renomeado. |
#3667 | |
| 1.0.0b260210 | 🔴 Últimas | Construtores de orquestração movidos para o pacote agent_framework.orchestrations |
#3685 | |
| 1.0.0b260210 | 🟡 Aprimoramento | Respostas em segundo plano e continuation_token suporte adicionados às respostas do agente Python |
#3808 | |
| 1.0.0b260210 | 🟡 Aprimoramento | Tipos de visualização de sessão/contexto adicionados lado a lado (SessionContext, BaseContextProvider) |
#3763 | |
| 1.0.0b260210 | 🟡 Aprimoramento | As atualizações do interpretador de código de streaming agora incluem deltas de código incrementais | #3775 | |
| 1.0.0b260210 | 🟡 Aprimoramento |
@tool decorador adiciona suporte explícito ao tratamento de esquema |
#3734 | |
| 1.0.0b260210 | Notes | 🔴 Últimas |
register_executor()
/
register_agent() removido de WorkflowBuilder; use instâncias diretamente, métodos auxiliares para isolamento de estado |
#3781 |
| 1.0.0b260210 | 🔴 Últimas |
ChatAgent → Agent, ChatMessage → Message, RawChatAgent → RawAgent, ChatClientProtocol → SupportsChatGetResponse |
#3747 | |
| 1.0.0b260210 | 🔴 Últimas | Revisão da API de tipos: Role/FinishReason alterações de tipo, aprimoramento do construtor de resposta/atualização, renomeação dos auxiliares para from_updates e remoção de try_parse_value |
#3647 | |
| 1.0.0b260210 | 🔴 Últimas | APIs unificadas ao redor run/get_response e ResponseStream |
#3379 | |
| 1.0.0b260210 | 🔴 Últimas |
AgentRunContext renomeado para AgentContext |
#3714 | |
| 1.0.0b260210 | 🔴 Últimas |
AgentProtocol renomeado para SupportsAgentRun |
#3717 | |
| 1.0.0b260210 | 🔴 Últimas | Parâmetro middleware next renomeado para call_next |
#3735 | |
| 1.0.0b260210 | 🔴 Últimas | Nomenclatura typeVar padronizada (TName → NameT) |
#3770 | |
| 1.0.0b260210 | 🔴 Últimas | Comportamento de fluxo de trabalho como agente de saída/fluxo alinhado com o fluxo de resposta do agente atual | #3649 | |
| 1.0.0b260210 | 🔴 Últimas | Métodos de construtor fluente movidos para parâmetros de construtor em 6 construtores | #3693 | |
| 1.0.0b260210 | 🔴 Últimas | Eventos de fluxo de trabalho unificados em um único WorkflowEvent com type discriminador; isinstance() → event.type == "..." |
#3690 | |
| 1.0.0b260130 | Notes | 🟡 Aprimoramento |
ChatOptions
/
ChatResponse
/
AgentResponse formato genérico de resposta |
#3305 |
| 1.0.0b260130 | 🟡 Aprimoramento |
BaseAgent suporte adicionado para integrações do SDK do Claude Agent |
#3509 | |
| 1.0.0b260128 | Notes | 🔴 Últimas |
AIFunction → FunctionTool, @ai_function → @tool |
#3413 |
| 1.0.0b260128 | 🔴 Últimas | Padrão de fábrica para GroupChat/Magentic; with_standard_manager → with_manager, participant_factories → register_participant |
#3224 | |
| 1.0.0b260128 | 🔴 Últimas |
Github → GitHub |
#3486 | |
| 1.0.0b260127 | Notes | 🟡 Aprimoramento |
BaseAgent suporte adicionado para integrações do SDK do GitHub Copilot |
#3404 |
| 1.0.0b260123 | Notes | 🔴 Últimas | Tipos de conteúdo consolidados em classe única Content com classmethods |
#3252 |
| 1.0.0b260123 | 🔴 Últimas |
response_format erros de validação agora são gerados ValidationError |
#3274 | |
| 1.0.0b260123 | 🔴 Últimas | A lógica de execução do AG-UI foi simplificada. | #3322 | |
| 1.0.0b260123 | 🟡 Aprimoramento | Cliente Anthropic adiciona suporte para response_format resultados estruturados |
#3301 | |
| 1.0.0b260123 | 🟡 Aprimoramento | Configuração de IA do Azure expandida com suporte para reasoning e rai_config |
Nº 3403, nº 3265 | |
| 1.0.0b260116 | Notes | 🔴 Últimas |
create_agent → as_agent |
#3249 |
| 1.0.0b260116 | 🔴 Últimas |
source_executor_id → executor_id |
#3166 | |
| 1.0.0b260116 | 🟡 Aprimoramento | AG-UI dá suporte à continuidade da sessão ou thread gerenciada pelo serviço | #3136 | |
| 1.0.0b260114 | Notes | 🔴 Últimas | Orquestrações refatoradas (GroupChat, Handoff, Sequencial, Simultânea) | #3023 |
| 1.0.0b260114 | 🔴 Últimas | Opções como TypedDict e Generic | #3140 | |
| 1.0.0b260114 | 🔴 Últimas |
display_name removido; context_providers → context_provider (singular); middleware deve ser uma lista |
#3139 | |
| 1.0.0b260114 | 🔴 Últimas |
AgentRunResponse
/
AgentRunResponseUpdate renomeado para AgentResponse/AgentResponseUpdate |
#3207 | |
| 1.0.0b260114 | 🟡 Aprimoramento | Runtime declarativo de fluxo de trabalho adicionado para workflows definidos em YAML | #2815 | |
| 1.0.0b260114 | 🟡 Aprimoramento | Melhorias de carregamento/confiabilidade do MCP (tratamento de perda de conexão, paginação, controles de representação) | #3154 | |
| 1.0.0b260114 | 🟡 Aprimoramento | O Foundry A2ATool dá suporte a conexões sem URL de destino explícita |
#3127 | |
| 1.0.0b260107 | Notes | — | Nenhuma alteração significativa | — |
| 1.0.0b260106 | Notes | — | Nenhuma alteração significativa | — |