microsoft/agent-framework-go
GitHub: microsoft/agent-framework-go
微软推出的面向 Go 语言的生产级 AI Agent 框架,用于构建、编排和部署多智能体工作流系统。
Stars: 119 | Forks: 9

# 欢迎使用面向 Go 的 Microsoft Agent Framework!
[](https://discord.gg/b5zjErwbQM)
[](https://learn.microsoft.com/en-us/agent-framework/)
[](https://pkg.go.dev/github.com/microsoft/agent-framework-go)
[](https://github.com/microsoft/agent-framework-go/stargazers)
Microsoft Agent Framework (MAF) 是一个开放的、多语言的框架,用于构建**生产级 AI agent 和多 agent 工作流**。本仓库包含 Microsoft Agent Framework 的 Go 实现,以及帮助您入门的 Go 示例和文档。
Microsoft Agent Framework 专为希望将 agent 从原型推向生产的团队而构建。它为构建、编排和操作 agent 系统提供了一致的基础,同时随着需求的发展保持架构选择的开放性,并支持广泛的生态系统,包括 Microsoft Foundry、Azure OpenAI、OpenAI、Model Context Protocol (MCP)、Agent2Agent (A2A)、AG-UI 和 GitHub Copilot SDK。
.NET 和 Python 的实现可在[上游 Microsoft Agent Framework 仓库](https://github.com/microsoft/agent-framework)中找到。
## 这个框架适合您吗?
如果您符合以下情况,MAF 是一个很好的选择:
- 正在构建期望在生产环境中运行的 agent 和工作流,
- 需要超越单一 prompt 或无状态聊天循环的编排,
- 想要基于图的模式,例如顺序、并发、群组协作和自定义工作流路由,
- 关心 checkpointing、可重启性、可观测性、治理或 human-in-the-loop 控制,
- 需要 provider 的灵活性,以便您的架构无需重大重写即可演进。
## 核心功能
在[官方博客](https://devblogs.microsoft.com/agent-framework/)上探索 MAF 的新功能和实际实现模式。
有关 .NET 到 Go 功能的详细比较,请参阅 [.NET 和 Go SDK 功能比较](./docs/dotnet-go-sdk-feature-comparison.md)。简而言之,Go SDK 涵盖了核心 agent、工具、middleware、工作流、可观测性和互操作性集成,而 .NET 目前拥有更广泛的产品集成以及一些尚未在 Go 中实现的功能。
- **Go 支持**:用于在 Go 中构建 agent 和工作流的 Go 包、示例与 API。
- [Go 参考](https://pkg.go.dev/github.com/microsoft/agent-framework-go) | [Go 示例](./examples/)
- **多 Agent Provider 支持**:支持各种 LLM 和 agent provider,并持续增加更多支持。
- [Provider 示例](./examples/02-agents/providers/) | [Provider 包](./provider/)
- **Middleware**:用于请求/响应处理、日志记录、OpenTelemetry、context provider、工具审批和自动工具调用的灵活 middleware。
- [Agent middleware](./agent/middleware.go) | [Agent harness](./agent/harness/)
- **编排模式与工作流**:使用基于图的工作流构建多 agent 系统,支持顺序、并发、群组协作、条件路由、subworkflow、checkpointing、流式传输、human-in-the-loop 和 time-travel 等模式。Handoff 编排尚未在 Go SDK 中实现。
- [工作流示例](./examples/03-workflows/) | [工作流包](./workflow/)
- **Microsoft Foundry Agent**:构建由项目支持的 Foundry agent,调用现有的服务端 Foundry agent,传递 Foundry client 标头,捕获 served-model 元数据,并使用 Foundry memory。Foundry 托管部署尚未在 Go SDK 中实现。
- [Foundry 示例](./examples/02-agents/providers/foundry/) | [Foundry provider](./provider/foundryprovider/)
- **可观测性**:集成 OpenTelemetry 以进行分布式追踪、监控和调试。
- [Agent OpenTelemetry](./provider/otelprovider/) | [工作流 OpenTelemetry](./workflow/observability/opentelemetry/)
- **声明式 Agent**:尚未在 Go SDK 中实现。
- **Agent 技能**:从文件、内联定义和脚本构建特定领域的知识库,供 agent 发现和使用。
- [技能示例](./examples/02-agents/skills/) | [技能包](./agent/skills/)
- **AF Labs**:尚未在 Go SDK 中实现。
- **DevUI**:尚未在 Go SDK 中实现。
## 目录
- [欢迎使用面向 Go 的 Microsoft Agent Framework!](#welcome-to-microsoft-agent-framework-for-go)
- [这个框架适合您吗?](#is-this-the-right-framework-for-you)
- [核心功能](#key-features)
- [目录](#table-of-contents)
- [入门指南](#getting-started)
- [安装说明](#installation)
- [学习资源](#learning-resources)
- [快速入门](#quickstart)
- [基础 Agent - Go](#basic-agent---go)
- [更多示例与范例](#more-examples--samples)
- [Go](#go)
- [社区与反馈](#community--feedback)
- [故障排除](#troubleshooting)
- [身份验证](#authentication)
- [环境变量](#environment-variables)
- [贡献者资源](#contributor-resources)
- [重要说明](#important-notes)
- [遥测和数据收集](#telemetry-and-data-collection)
- [预览版状态](#preview-status)
- [商标](#trademarks)
## 入门指南
### 安装说明
Go
```
go get github.com/microsoft/agent-framework-go
```
### 学习资源
- **[概述](https://learn.microsoft.com/agent-framework/overview/agent-framework-overview)** - 框架的高层级概述
- **[快速开始](https://learn.microsoft.com/agent-framework/tutorials/quick-start)** - 从一个简单的 agent 开始
- **[教程](https://learn.microsoft.com/agent-framework/tutorials/overview)** - 逐步教程
- **[用户指南](https://learn.microsoft.com/en-us/agent-framework/user-guide/overview)** - 用于构建 agent 和工作流的深度用户指南
### 快速入门
#### 基础 Agent - Go
创建一个简单的 Microsoft Foundry agent,让它写一首关于 Microsoft Agent Framework 的俳句。
```
package main
import (
"cmp"
"context"
"fmt"
"os"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
)
func main() {
endpoint := os.Getenv("FOUNDRY_PROJECT_ENDPOINT")
model := cmp.Or(os.Getenv("FOUNDRY_MODEL"), "gpt-4o-mini")
// Authenticate to Microsoft Foundry.
token, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
panic(err)
}
// Create a Microsoft Foundry agent.
a := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You are a helpful assistant.",
},
)
// Run the agent.
ctx := context.Background()
fmt.Println(a.RunText(ctx, "Write a haiku about the Microsoft Agent Framework").Collect())
}
```
## 更多示例与范例
### 开始
- [入门指南](./examples/01-get-started):从 hello world 到工作流的渐进式教程
- [Agent 概念](./examples/02-agents):按主题划分的深度示例,包括工具、middleware、provider、可观测性、A2A、AG-UI、MCP 和技能
- [工作流](./examples/03-workflows):多 agent 模式、路由、checkpointing、可观测性和工作流编排
- [端到端](./examples/05-end-to-end):完整的应用程序和演示
- [功能比较](./docs/dotnet-go-sdk-feature-comparison.md):.NET 和 Go SDK 的功能对等性说明
## 故障排除
### 身份验证
| 问题 | 原因 | 解决方案 |
| --- | --- | --- |
| 使用 Azure 凭据时出现身份验证错误 | 未登录 Azure CLI 或其他已配置的凭据源 | 在启动应用之前运行 `az login`,或配置您的应用使用的特定凭据 |
| API 密钥错误 | API 密钥错误或缺失 | 验证密钥并确保其属于正确的资源或 provider |
| Provider endpoint 错误 | endpoint、deployment、model 或 API 版本缺失或不正确 | 检查示例或 provider 使用的环境变量和构造函数选项 |
### 环境变量
有关每个示例特定的环境变量配置,请参阅 [examples](./examples/) 下示例目录中的 README 或源码。
## 重要说明
### 遥测和数据收集
本仓库默认不配置 Microsoft 遥测收集。一些包和示例包含可选的 OpenTelemetry 插桩或连接到 Microsoft 托管的服务。要关闭框架插桩,请不要在您的应用程序中配置 OpenTelemetry exporter 或遥测 middleware。服务遥测(如果有)受您选择调用的服务所管辖。
### 预览版状态
面向 Go 的 Agent Framework 处于公开预览阶段。声明式 Agent、RAG、CodeAct 和功能性工作流尚不可用。请在 GitHub 上通过 https://github.com/microsoft/agent-framework-go/issues 提交 issue。
### 商标
本项目可能包含项目、产品或服务的商标或徽标。授权使用 Microsoft 商标或徽标受 [Microsoft 商标与品牌指南](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general) 约束并必须遵循该指南。在修改版本的本项目中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 的赞助。任何第三方商标或徽标的使用均受这些第三方政策的约束。
标签:AI代理, EVTX分析, Go语言, 人工智能, 多智能体, 工作流编排, 开发框架, 日志审计, 用户代理, 用户模式Hook绕过, 程序破解