We recommend two common installation paths depending on your use case.
If you are exploring or developing locally, install the entire framework with all sub-packages:
pip install agent-framework --preThis installs the core and every integration package, making sure that all features are available without additional steps. The --pre flag is required while Agent Framework is in preview. This is the simplest way to get started.
If you only need specific integrations, you can install at a more granular level. This keeps dependencies lighter and focuses on what you actually plan to use. Some examples:
# Core only# includes Azure OpenAI and OpenAI support by default# also includes workflows and orchestrations
pip install agent-framework-core --pre
# Core + Azure AI integration
pip install agent-framework-azure-ai --pre
# Core + Microsoft Copilot Studio integration
pip install agent-framework-copilotstudio --pre
# Core + both Microsoft Copilot Studio and Azure AI integration
pip install agent-framework-microsoft agent-framework-azure-ai --preThis selective approach is useful when you know which integrations you need, and it is the recommended way to set up lightweight environments.
Supported Platforms:
- Python: 3.10+
- OS: Windows, macOS, Linux
Set as environment variables, or create a .env file at your project root:
OPENAI_API_KEY=sk-...
OPENAI_CHAT_MODEL_ID=...
...
AZURE_OPENAI_API_KEY=...
AZURE_OPENAI_ENDPOINT=...
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME=...
...
AZURE_AI_PROJECT_ENDPOINT=...
AZURE_AI_MODEL_DEPLOYMENT_NAME=...You can also override environment variables by explicitly passing configuration parameters to the chat client constructor:
fromagent_framework.azureimportAzureOpenAIChatClientchat_client=AzureOpenAIChatClient(
api_key='',
endpoint='',
deployment_name='',
api_version='',
)See the following setup guide for more information.
Create agents and invoke them directly:
importasynciofromagent_frameworkimportChatAgentfromagent_framework.openaiimportOpenAIChatClientasyncdefmain():
agent=ChatAgent(
chat_client=OpenAIChatClient(),
instructions=""" 1) A robot may not injure a human being... 2) A robot must obey orders given it by human beings... 3) A robot must protect its own existence... Give me the TLDR in exactly 5 words. """
)
result=awaitagent.run("Summarize the Three Laws of Robotics")
print(result)
asyncio.run(main())
# Output: Protect humans, obey, self-preserve, prioritized.You can use the chat client classes directly for advanced workflows:
importasynciofromagent_frameworkimportChatMessagefromagent_framework.openaiimportOpenAIChatClientasyncdefmain():
client=OpenAIChatClient()
messages= [
ChatMessage(role="system", text="You are a helpful assistant."),
ChatMessage(role="user", text="Write a haiku about Agent Framework.")
]
response=awaitclient.get_response(messages)
print(response.messages[0].text)
""" Output: Agents work in sync, Framework threads through each task— Code sparks collaboration. """asyncio.run(main())Enhance your agent with custom tools and function calling:
importasynciofromtypingimportAnnotatedfromrandomimportrandintfrompydanticimportFieldfromagent_frameworkimportChatAgentfromagent_framework.openaiimportOpenAIChatClientdefget_weather(
location: Annotated[str, Field(description="The location to get the weather for.")],
) ->str:
"""Get the weather for a given location."""conditions= ["sunny", "cloudy", "rainy", "stormy"]
returnf"The weather in {location} is {conditions[randint(0, 3)]} with a high of {randint(10, 30)}°C."defget_menu_specials() ->str:
"""Get today's menu specials."""return""" Special Soup: Clam Chowder Special Salad: Cobb Salad Special Drink: Chai Tea """asyncdefmain():
agent=ChatAgent(
chat_client=OpenAIChatClient(),
instructions="You are a helpful assistant that can provide weather and restaurant information.",
tools=[get_weather, get_menu_specials]
)
response=awaitagent.run("What's the weather in Amsterdam and what are today's specials?")
print(response)
""" Output: The weather in Amsterdam is sunny with a high of 22°C. Today's specials include Clam Chowder soup, Cobb Salad, and Chai Tea as the special drink. """if__name__=="__main__":
asyncio.run(main())You can explore additional agent samples here.
Coordinate multiple agents to collaborate on complex tasks using orchestration patterns:
importasynciofromagent_frameworkimportChatAgentfromagent_framework.openaiimportOpenAIChatClientasyncdefmain():
# Create specialized agentswriter=ChatAgent(
chat_client=OpenAIChatClient(),
name="Writer",
instructions="You are a creative content writer. Generate and refine slogans based on feedback."
)
reviewer=ChatAgent(
chat_client=OpenAIChatClient(),
name="Reviewer",
instructions="You are a critical reviewer. Provide detailed feedback on proposed slogans."
)
# Sequential workflow: Writer creates, Reviewer provides feedbacktask="Create a slogan for a new electric SUV that is affordable and fun to drive."# Step 1: Writer creates initial sloganinitial_result=awaitwriter.run(task)
print(f"Writer: {initial_result}")
# Step 2: Reviewer provides feedbackfeedback_request=f"Please review this slogan: {initial_result}"feedback=awaitreviewer.run(feedback_request)
print(f"Reviewer: {feedback}")
# Step 3: Writer refines based on feedbackrefinement_request=f"Please refine this slogan based on the feedback: {initial_result}\nFeedback: {feedback}"final_result=awaitwriter.run(refinement_request)
print(f"Final Slogan: {final_result}")
# Example Output:# Writer: "Charge Forward: Affordable Adventure Awaits!"# Reviewer: "Good energy, but 'Charge Forward' is overused in EV marketing..."# Final Slogan: "Power Up Your Adventure: Premium Feel, Smart Price!"if__name__=="__main__":
asyncio.run(main())Note: Advanced orchestration patterns like GroupChat, Sequential, and Concurrent orchestrations are coming soon.
- Getting Started with Agents: Basic agent creation and tool usage
- Chat Client Examples: Direct chat client usage patterns
- Azure AI Integration: Azure AI integration
- Workflow Samples: Advanced multi-agent patterns
- Agent Framework Repository
- Python Package Documentation
- .NET Package Documentation
- Design Documents
- Learn docs are coming soon.