进口 异步
进口 系统
从 副驾驶 进口 副驾驶客户端
从 副驾驶。工具 进口 定义工具
从 副驾驶。生成的。会话事件 进口 会话事件类型
从 迂腐的 进口 他们是模特, 场地
# 第 1 步:使用 @define_tool 装饰器定义自定义工具。
班级 获取数据可视化参数(他们是模特):
库名: 斯特 = 场地(描述=“要获取相关信息的 Python 库的名称”)
@定义工具(描述=“获取有关 Python 数据可视化库的信息”)
异步 定义 获取库信息(参数: 获取数据可视化参数) -> 字典:
””“提供有关数据可视化库信息的自定义工具。”””
图书馆 = {
“matplotlib”: {
“姓名”: “Matplotlib”,
“用例”: “用于静态、动画和交互式可视化的基础绘图库”,
“安装”: “pip 安装 matplotlib”,
“人气”: “使用最广泛,是许多其他库的基础”,
},
“海生”: {
“姓名”: 《海生》,
“用例”: “具有有吸引力的默认样式的统计数据可视化”,
“安装”: “pip 安装seaborn”,
“人气”: “非常适合探索性数据分析”,
},
“阴谋地”: {
“姓名”: “阴谋”,
“用例”: “用于仪表板的交互式、出版质量的图表”,
“安装”: “pip 安装情节”,
“人气”: “最适合基于网络的交互式可视化”,
},
}
图书馆 = 参数。库名。降低()
如果 图书馆 在 图书馆:
返回 图书馆[library]
返回 {“错误”: f“未找到库 ‘{library}’。尝试:matplotlib、seaborn 或plotly”}
异步 定义 主要的():
# 步骤 2:使用显式 CLI 路径创建并启动 Copilot 客户端。
# SDK 需要找到 Copilot CLI,因此请明确指定路径。
客户 = 副驾驶客户端({
“cli_path”: “C:\\nvm4w\\nodejs\\copilot.cmd”, # Copilot CLI 的路径
“日志级别”: “调试”, # 启用调试日志以进行故障排除
})
打印(“🚀 GitHub Copilot SDK 演示 – 代理编码实践”)
打印(“⏳ 正在启动 Copilot 客户端(这可能需要一些时间)…\n”)
等待 客户。开始()
打印(”= * 60)
# 步骤 3:使用自定义配置创建会话。
会议 = 等待 客户。创建会话({
“模型”: “gpt-4.1”, # 选择型号
“流媒体”: 真的, # 启用流式响应
“工具”: [get_library_info], # 注册自定义工具
“系统消息”: (
“你是数据科学家的得力技术助手。”
“当询问可视化库时,请使用 get_library_info 工具”
“提供准确的信息。”
),
})
打印(f“会话已创建:{session.session_id}\n”)
# 步骤 4:设置流式处理事件处理程序。
定义 处理事件(事件):
如果 事件。类型 == 会话事件类型。ASSISTANT_MESSAGE_DELTA:
# 在响应到达时对其进行流式传输。
系统。标准输出。写(事件。数据。增量内容)
系统。标准输出。冲水()
埃利夫 事件。类型 == 会话事件类型。TOOL_EXECUTION_START:
打印(f“\n🔧 工具名为:{event.data.tool_name}”)
会议。在(处理事件)
# 步骤5:发送提示并让代理工作。
打印(“📝 用户:列出用于数据可视化的三个常见 Python 库及其主要用例。\n”)
打印(”🤖 助理:“, 结尾=””)
等待 会议。发送并等待({
“迅速的”: (
“列出用于数据可视化的三个常见 Python 库及其主要用例。”
“使用 get_library_info 工具获取有关每个库的准确信息。”
)
})
打印(“\n\n” + ”= * 60)
#第六步:清理。
等待 会议。破坏()
等待 客户。停止()
打印(“✅ 会议圆满结束!”)
如果 __姓名__ == “__主要的__”:
异步。跑步(主要的())

