pip install agent-framework:微软多Agent框架1.0实测

pip install agent-framework:微软多Agent框架1.0实测

微软4月3号发了Agent Framework 1.0正式版。这个框架把之前的Semantic Kernel和AutoGen合并成了一个SDK,Python和.NET都支持。

说直白点:以前想用微软的Agent能力,得在Semantic Kernel和AutoGen之间选。两套API不兼容,社区也分裂。现在合成一个了,装一个包就行。

我花了半天时间把它跑通了,从单Agent到多Agent编排、接MCP工具、用DevUI调试。下面把过程记下来。

安装

Python一行命令:

bash 复制代码
pip install agent-framework

.NET也一行:

bash 复制代码
dotnet add package Microsoft.Agents.AI

装完大概200MB左右。依赖项不少,建议用虚拟环境。

认证方式

Agent Framework用Azure认证。最简单的方式是Azure CLI:

bash 复制代码
az login

登录完,代码里用AzureCliCredential就行,不用手动管token。

如果你没有Azure账号,也能用OpenAI的API key直接调。后面会说怎么配。

第一个Agent:5行代码

python 复制代码
import asyncio
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential

agent = Agent(
    client=FoundryChatClient(
        project_endpoint="https://your-project.services.ai.azure.com",
        model="gpt-5.3",
        credential=AzureCliCredential(),
    ),
    name="CodeHelper",
    instructions="你是一个Python助手,回答简洁。"
)

result = asyncio.run(agent.run("怎么用Python读取CSV文件?"))
print(result)

跑起来大概2秒返回结果。注意project_endpoint要换成你自己的Azure AI Foundry项目地址。

如果用OpenAI的API:

python 复制代码
from agent_framework.openai import OpenAIChatClient

agent = Agent(
    client=OpenAIChatClient(
        api_key="sk-你的key",
        model="gpt-4o"
    ),
    name="CodeHelper",
    instructions="你是一个Python助手,回答简洁。"
)

换个Client就行,Agent的代码不用改。这是它设计上比较舒服的地方------Provider和Agent逻辑是分开的。

多Agent编排:让两个Agent协作

单Agent好办,多Agent编排才是这个框架的重点。

假设你要做一个代码review流程:一个Agent写代码,另一个Agent做review。用SequentialBuilder把它们串起来:

python 复制代码
import asyncio
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from agent_framework.orchestrations import SequentialBuilder
from azure.identity import AzureCliCredential

async def main():
    client = FoundryChatClient(credential=AzureCliCredential())

    coder = Agent(
        client=client,
        instructions="你是一个Python开发者。写简洁的代码,加注释。",
        name="coder",
    )

    reviewer = Agent(
        client=client,
        instructions="你是一个代码审查员。指出代码中的问题,给出改进建议。",
        name="reviewer",
    )

    workflow = SequentialBuilder(participants=[coder, reviewer]).build()

    async for event in workflow.run("写一个Python函数,实现LRU缓存", stream=True):
        if event.type == "output":
            for msg in event.data:
                print(f"[{msg.author_name}]: {msg.text[:200]}")

asyncio.run(main())

跑起来的效果:coder先输出一段LRU缓存实现,reviewer接着指出"缺少线程安全处理""没有处理maxsize为0的边界情况"。两步串行执行,reviewer能看到coder的完整输出。

除了Sequential,框架还支持这些编排模式:

  • Concurrent:多个Agent并行跑,各自独立
  • Handoff:一个Agent干到一半,把任务交给另一个
  • GroupChat:多个Agent轮流发言讨论
  • Magentic-One:微软研究院出的模式,一个协调者Agent指挥其他Agent

给Agent装工具:接MCP

Agent Framework原生支持MCP(Model Context Protocol)。如果你已经有MCP Server在跑,直接接:

python 复制代码
from agent_framework.mcp import MCPToolProvider

# 连接一个本地MCP Server
tools = MCPToolProvider(url="http://localhost:3000/mcp")

agent = Agent(
    client=client,
    name="FileAgent",
    instructions="你可以读写文件。",
    tool_providers=[tools]
)

Agent会自动发现MCP Server上暴露的工具,调用时传参也是自动的。

我测试了接一个文件系统MCP Server,Agent能正确调用read_file和write_file。但有个坑:如果MCP Server响应超过30秒,默认会超时。改超时的方法:

python 复制代码
tools = MCPToolProvider(
    url="http://localhost:3000/mcp",
    timeout=60  # 秒
)

中间件:拦截和改写Agent行为

这个功能我觉得挺实用。你可以在Agent执行的各个阶段插入自定义逻辑,不用改Agent的prompt。

比如加一个内容安全过滤器:

python 复制代码
from agent_framework.middleware import MiddlewareBase

class SafetyFilter(MiddlewareBase):
    async def on_response(self, context, response, next_handler):
        # 检查输出是否包含敏感内容
        if "机密" in response.text:
            response.text = "[内容已过滤]"
        return await next_handler(context, response)

agent = Agent(
    client=client,
    name="SafeAgent",
    instructions="你是一个助手。",
    middleware=[SafetyFilter()]
)

中间件是链式执行的,可以叠加多个。日志记录、合规检查、调用限流都能用这个方式做。

DevUI:浏览器里调试Agent

1.0版本带了一个DevUI工具,是个本地Web界面,能看到Agent执行的全过程------消息流向、工具调用、编排决策。

启动方式:

bash 复制代码
pip install agent-framework[devui]

然后在代码里加一行:

python 复制代码
from agent_framework.devui import DevUI

DevUI.start(port=8080)

打开浏览器访问localhost:8080,就能看到Agent的执行流程图。多Agent编排的时候特别有用,能看清楚哪个Agent在什么时候说了什么。

目前是preview状态,界面比较素,但功能够用了。

YAML声明式配置

如果不想写Python代码来定义Agent,可以用YAML:

yaml 复制代码
agents:
  - name: writer
    instructions: "你是文案写手,写简洁的营销文案。"
    model: gpt-5.3

  - name: reviewer
    instructions: "你是文案审核,检查语法和事实准确性。"
    model: gpt-5.3

workflow:
  type: sequential
  participants: [writer, reviewer]

然后一行代码加载:

python 复制代码
from agent_framework import Workflow

workflow = Workflow.from_yaml("workflow.yaml")
result = asyncio.run(workflow.run("写一条关于AI编程工具的推文"))

这对于非开发人员或者CI/CD流水线来说比较方便------配置和代码分离。

踩坑记录

跑通的过程中遇到几个问题,记一下:

1. Azure CLI认证过期不报明确错误

az login的token默认有效期是1小时。过期后Agent不会报"认证过期",而是抛一个模糊的HTTP 401。解决办法是跑之前先az account get-access-token确认token有效。

2. SequentialBuilder的participants顺序就是执行顺序

这个没在文档里特别说明。participants列表的第一个Agent先执行,第二个Agent拿到第一个的输出再执行。弄反了结果会很奇怪。

3. 从Semantic Kernel迁移要注意Plugin的写法变了

以前SK的KernelFunction装饰器在新框架里不能直接用。得改成agent_framework的tool装饰器:

python 复制代码
# 旧写法(Semantic Kernel)
@kernel_function
def search(query: str) -> str: ...

# 新写法(Agent Framework)
from agent_framework import tool

@tool
def search(query: str) -> str: ...

迁移工具能扫描代码给出改动建议,但不会自动改。手动改一遍不算太费时间。

4. 模型支持范围

官方说支持Azure OpenAI、OpenAI、Anthropic Claude、Amazon Bedrock、Google Gemini和Ollama。我测了Azure OpenAI和OpenAI两个,没问题。Claude的connector我没测,文档里标注是"first-party support",应该能用。

和LangChain、CrewAI比,差别在哪

LangChain偏通用,链式调用灵活但架子比较松散。CrewAI专注多Agent,上手快但可定制性一般。

Agent Framework的定位是企业级。它的优势在三个点:Azure深度集成、A2A和MCP双协议支持、中间件体系。如果你的项目跑在Azure上,或者需要和微软生态(Teams、Power Platform)对接,选它比较合理。

如果你只是跑个简单的Agent实验,LangChain或CrewAI上手更快。Agent Framework的配置项比较多,不适合快速原型。

代码仓库和文档

1.0是4月3号发的。现在装就是正式版,API不会再有breaking change。如果之前用RC版本,升级只要改一下包版本号。

相关推荐
倾颜1 天前
接入 MCP,不一定要先平台化:一次 AI Runtime 的实战取舍
前端·后端·mcp
卤炖阑尾炎1 天前
Python 网络编程实战:从 TCP/UDP 基础到高并发服务器开发
网络·python·tcp/ip
weixin_513449961 天前
walk_these_ways项目学习记录第八篇(通过行为多样性 (MoB) 实现地形泛化)--策略网络
开发语言·人工智能·python·学习
飞Link1 天前
逆向兼容的桥梁:3to2 自动化降级工具实现全解析
运维·开发语言·python·自动化
zhangshuang-peta1 天前
通过 MCP 控制平面引入技能
人工智能·机器学习·ai agent·mcp·peta
曾阿伦1 天前
Python3 文件 (夹) 操作备忘录
开发语言·python
数据知道1 天前
claw-code 源码分析:OmX `$team` / `$ralph`——把 AI 辅助开发从偶发灵感变成可重复流水线
数据库·人工智能·mysql·ai·claude code·claw code
陌殇殇1 天前
002 Spring AI Alibaba框架整合百炼大模型平台 — 聊天、文生图、语音、向量模型整合
人工智能·spring·ai
架构师老Y1 天前
006、异步编程与并发模型:asyncio与高性能后端
python
清水白石0081 天前
《解锁 Python 潜能:从核心语法到 AI 服务层架构的工业级进阶与实战》
人工智能·python·架构