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版本,升级只要改一下包版本号。

相关推荐
久违 °几秒前
【AI-Agent】TagMatrix 数据标注工具开发
人工智能·数据分析·go·agent·数据隐私
NiceCloud喜云3 分钟前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
AI360labs_atyun26 分钟前
腾讯推出电子牛马Marvis,好用吗?
人工智能·科技·ai
AI玫瑰助手36 分钟前
Python函数:默认参数的定义与注意事项
开发语言·python·信息可视化
weixin_4684668540 分钟前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
小糖学代码1 小时前
LLM系列:环境搭建:5.Python-dotenv 环境变量管理
人工智能·python·深度学习·神经网络
智慧物业老杨2 小时前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案
java·人工智能·python
Front思2 小时前
AI前端工程师需要具备能力+
前端·人工智能·ai
橙橙笔记2 小时前
Python的学习第一部分
python·学习
voidmort2 小时前
3. 微调(Fine-tuning)与强化学习(RL)的核心思想
python·深度学习·算法