ResponseStreamEventType is not part of azure.ai.projects.models, which is why the import fails. The Python SDK surface for multi-agent and workflow scenarios in the provided context uses:
-
AIProjectClient from azure.ai.projects for multi-agent setups.
- Streaming patterns that do not rely on
ResponseStreamEventType from azure.ai.projects.models.
To build a multi-agent setup with the current SDK surface, use the Connected Agents pattern instead of trying to import ResponseStreamEventType:
- Initialize the project client:
import os
from azure.ai.projects import AIProjectClient
from azure.ai.agents.models import ConnectedAgentTool, MessageRole
from azure.identity import DefaultAzureCredential
project_client = AIProjectClient(
endpoint=os.environ["PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
)
- Create specialized agents and connect them via
ConnectedAgentTool:
stock_price_agent = project_client.agents.create_agent(
model=os.environ["MODEL_DEPLOYMENT_NAME"],
name="stock_price_bot",
instructions=(
"Your job is to get the stock price of a company. "
"If you don't know the realtime stock price, return the last known stock price."
),
)
connected_agent = ConnectedAgentTool(
id=stock_price_agent.id,
name=stock_price_agent.name,
description="Gets the stock price of a company",
)
main_agent = project_client.agents.create_agent(
model=os.environ["MODEL_DEPLOYMENT_NAME"],
name="my-agent",
instructions="You are a helpful agent, and use the available tools to get stock prices.",
tools=connected_agent.definitions,
)
- Create a thread, add a message, and run the main agent. The main agent orchestrates the connected agents and aggregates their responses.
For workflow-style multi-agent orchestration with streaming, use the Microsoft Agent Framework with FoundryChatClient, FoundryAgent, and workflow builders. Streaming is handled via AgentResponseUpdate events rather than ResponseStreamEventType:
- Create a shared
FoundryChatClient.
- Create specialized agents.
- Connect them in a
WorkflowBuilder.
- Run the workflow with
stream=True and handle AgentResponseUpdate chunks (for example, reading update.text).
This approach avoids importing ResponseStreamEventType entirely and uses the supported streaming and multi-agent patterns in the current SDK and Agent Framework.
References: