GitHub Copilot SDK 测试项目
本项目演示了 GitHub Copilot SDK 的各种功能和使用场景,涵盖基础调用、自定义 Agent、自定义工具、MCP Server 集成以及 Microsoft Fabric Data Agent 集成等多种能力。
功能概览
| 功能模块 | 说明 |
|---|---|
| 基础调用 | 同步/流式响应、多模型支持 |
| 自定义 Agent | 创建具有特定职责的 AI 助手 |
| 自定义 Tool | 扩展 Copilot 的能力边界 |
| MCP Server | 集成外部服务和数据源 |
| Fabric Data Agent | 企业数据智能查询 |
🚀 基础调用
简单问答 (main.py)
最基础的 Copilot SDK 调用方式:
session = await client.create_session({"model": "gpt-4.1"})
response = await session.send_and_wait({"prompt": "What is 2 + 2?"})流式输出 (main_stream.py)
实时逐字输出响应,提升用户体验:
session = await client.create_session({"model": "gpt-5", "streaming": True})
session.on(handle_event) # 监听 ASSISTANT_MESSAGE_DELTA 事件多模型支持 (main_skills.py)
支持切换不同的 LLM 模型:
gpt-4.1gpt-5gpt-5.1-miniclaude-opus-4.5
🎯 自定义 Agent (main_custom_agent.py)
创建具有特定角色和专业能力的 AI 助手:
| Agent 名称 | 功能描述 |
|---|---|
@pr-reviewer | 代码审查专家,关注安全性、性能和可维护性 |
@python-expert | Python 编程专家,专注 PEP 8、类型提示和现代特性 |
@debugger | 调试助手,帮助定位和修复代码问题 |
session = await client.create_session({
"model": "gpt-4.1",
"customAgents": [
{
"name": "pr-reviewer",
"displayName": "PR Reviewer",
"description": "Reviews pull requests for best practices",
"prompt": "You are an expert code reviewer..."
}
]
})🔧 自定义 Tool
工具定义 (main_custom_tool.py)
使用 @define_tool 装饰器扩展 Copilot 能力:
@define_tool(description="Get the current weather for a city")
async def get_weather(params: GetWeatherParams) -> dict:
return {"city": params.city, "temperature": "72°F", "condition": "sunny"}交互式助手 (main_interactive_assistant.py)
结合自定义工具构建交互式对话应用,支持多轮对话和工具调用。
🔌 MCP Server 集成
GitHub MCP Server (main_mcp_servers.py)
通过 MCP 协议集成 GitHub 服务:
session = await client.create_session({
"streaming": True,
"mcp_servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
})支持查询:
- GitHub 用户信息
- MCP Server 提供的工具列表
其他 MCP Server 示例
main_mcp_studio_servers.py- MCP Studio Server 集成main_foudary_IQ_mcp_servers_X.py- Foundry IQ MCP Server 集成
📊 Microsoft Fabric Data Agent 集成
Fabric Data Agent 客户端 (fabric_data_agent_client.py)
独立的 Python 客户端,用于从外部环境调用 Microsoft Fabric Data Agent:
- 交互式浏览器认证 - 自动打开浏览器完成 Azure AD 登录
- 自动 Token 刷新 - 无需手动管理令牌生命周期
- Bearer Token 管理 - 透明处理 API 认证
Fabric IQ Agent (main_fabric_IQ_agent.py)
将 Fabric Data Agent 作为 Copilot 工具集成:
@define_tool(description="query data about product")
def get_data_insight(question: DataQueryParams) -> dict:
client = FabricDataAgentClient(tenant_id="...", data_agent_url="...")
return client.ask(question.content)示例查询:
"What is the top product by revenue across all stores?"Foundry IQ 系列
main_foudary_IQ_agent_dedicated.py- 专用 Agent 模式main_foudary_IQ_agent_without_dedicated.py- 非专用 Agent 模式main_foudary_IQ_custom_tool.py- 自定义工具模式
📁 文件结构
├── main.py # 基础示例
├── main_stream.py # 流式输出
├── main_skills.py # 多模型支持
├── main_custom_agent.py # 自定义 Agent
├── main_custom_tool.py # 自定义 Tool
├── main_interactive_assistant.py # 交互式助手
├── main_mcp_servers.py # GitHub MCP Server
├── main_mcp_studio_servers.py # MCP Studio Server
├── fabric_data_agent_client.py # Fabric Data Agent 客户端
├── main_fabric_IQ_agent.py # Fabric IQ 集成
├── main_foudary_IQ_agent_dedicated.py # Foundry IQ 专用模式
├── main_foudary_IQ_agent_without_dedicated.py
├── main_foudary_IQ_custom_tool.py
├── main_foudary_IQ_mcp_servers_X.py
└── requirements.txt