智能体构建器(Agent Builder)现已正式发布(GA)。您可以从 Elastic Cloud 试用版开始体验,并在此处查看智能体构建器的文档:Elastic Agent Builder。
只需大约五行 C# 代码,即可将 Elasticsearch 连接到 GitHub Copilot SDK,让您的智能体从实际数据中检索信息,而不是进行猜测。Copilot 负责规划和编排,而 Elasticsearch 则负责对您的日志、文档和专有记录进行检索。结果是:智能体不会因为过时的训练数据而产生幻觉,而是基于您系统中的实际内容提供答案。本文将通过 Elastic.Extensions.AI 桥接库,详细介绍完整的设置过程。
如果没有检索层,AI 智能体仅凭训练数据生成响应,这意味着当被问及您的日志、文档或专有系统时,它们会产生幻觉。GitHub Copilot SDK 为您提供了一个经过生产环境验证的编排引擎。Elasticsearch 则为您的日志、文档和操作数据提供快速、准确的检索。当您将它们连接起来时,您的智能体将停止猜测。
在本文中,我们将探讨如何使用 Elastic.Extensions.AI 桥接库建立这种连接,并提供一个完整的 .NET 代码示例,以便您能够创建一个可工作的检索增强生成(RAG)智能体,该智能体使用 Copilot 的引擎进行规划,并从 Elasticsearch 中检索信息。
GitHub Copilot SDK 负责编排和规划;Elasticsearch 负责检索和提供上下文。以下是每个组件的贡献方式。
GitHub Copilot SDK 是一个多平台工具集,目前处于技术预览阶段。它支持 Python、TypeScript、Go、.NET 和 Java。从架构上看,该 SDK 通过 JSON 远程过程调用(JSON-RPC)与 Copilot 命令行界面(CLI)服务器通信,并自动管理进程生命周期。它承担了智能体行为的繁重工作:规划复杂任务、调用工具以及管理模型交互。
在技术栈的另一端,Elastic 提供了两个主要的 AI 组件:
功能划分:在此集成中,GitHub Copilot 是编排器(负责规划和决策的“大脑”),而 Elasticsearch 是上下文提供者(包含您的日志、文档和专有数据的“记忆”和“图书馆”)。

图 1:GitHub Copilot SDK 和 Elastic 组件如何交互。
有三种主要方式可以将 Elasticsearch 与 GitHub Copilot SDK 进行桥接。
用例 | 关键协议/库 | 开发者益处 |
|---|---|---|
RAG / 混合搜索 | Microsoft.Extensions.AI / Elastic.Extensions.AI | 以“五行代码”的简洁性,将智能体基于私有文档、日志和工单。 |
集群管理操作 | Elasticsearch 管理 API / SDK 工具 | 通过自然语言控制集群健康状况和重新索引。(注意:索引生命周期管理 [ILM] 复杂度较高。) |
智能体互操作性 | Model Context Protocol (MCP) / Agent2Agent (A2A) Protocol | 无需编写新的工具函数,即可原生调用预构建的 Elastic 智能体。 |
尽管将 Elasticsearch 管理 API 作为 Copilot 工具暴露可以减少站点可靠性工程师(SRE)的上下文切换,但开发者应区分简单和复杂的操作。基本任务,例如检查集群健康状况或触发重新索引,都是直接明了的。然而,通过自然语言管理 ILM 策略则要困难得多,因为策略逻辑本身固有的复杂性。高级架构师应优先考虑健康和发现工具,然后再尝试完全的策略自动化。
该 SDK 支持 Python、TypeScript、Go、.NET 和 Java(开发中)。本文中的示例使用 .NET,其中 Elastic.Extensions.AI 桥接库提供了最紧密的集成。要安装 .NET 包:
1
2
3
dotnet add package GitHub.Copilot.SDK
dotnet add package Elastic.Clients.Elasticsearch
dotnet add package Elastic.Extensions.AI
该集成通过 Elastic.Extensions.AI 桥接库运行,该库由 Martijn Laarman(Elastic 前 .NET 客户端维护者)编写,用于连接 Elastic Agent Builder 到 GitHub Copilot SDK。其核心模式包含四个步骤,大约 20 行 C# 代码,可归结为五个逻辑操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 1. 初始化 Elasticsearch 客户端
var client = new ElasticsearchClient(
new Uri(Environment.GetEnvironmentVariable("ES_URL")!),
new ApiKey(Environment.GetEnvironmentVariable("ES_API_KEY")!));
// 2. 将搜索方法装饰为 Copilot 工具
[Description("Search Elasticsearch for documents relevant to the query")]
async Task<string> SearchAsync(
[Description("Natural-language search query")] string query)
{
// 3. 定义 schema:让 LLM 通过 SearchAsync 驱动查询 DSL
var response = await client.SearchAsync<JsonElement>(s => s
.Index("your-index")
.Query(q => q.Match(m => m.Field("content").Query(query))));
return JsonSerializer.Serialize(response.Documents.Take(5));
}
// 4. 通过 Elastic.Extensions.AI 桥接库注册工具并运行
var agent = CopilotAgent.Create(new CopilotAgentOptions());
agent.AddTool(AIFunctionFactory.Create(SearchAsync));
await agent.StartAsync();
Copilot SDK 包含一个内置的安全模型,用户必须确认工具的使用(除非使用 --allow-all-tools 标志)。
关于数据隐私:Elastic 不会将客户数据(提示、查询或事件数据)用于模型训练。对于需要零配置 AI 的团队,可通过 Elastic Inference Service (EIS) 使用 Elastic 管理的大语言模型(LLM),这提供了对生成式功能的即时访问,尽管这些服务会根据 Elastic Cloud 定价产生额外费用。如果您使用 EIS,数据将由您选择的第三方 LLM 提供商处理。
利用您自己的数据进行“接地”(grounding)可以解决幻觉问题。通过 Elastic.Extensions.AI 桥接库将 Elasticsearch 连接到 GitHub Copilot SDK,您可以让您的智能体以最少的样板代码访问您的数据。Copilot 负责规划和编排;Elasticsearch 负责快速、准确的检索。结果是一个智能体,它基于您系统中的实际内容进行推理,而不是基于几个月前训练的模型。
elastic-ingest-dotnet 仓库 以获取 Elastic.Extensions.AI 桥接库。技术说明:GitHub Copilot SDK 目前处于技术预览阶段。在正式发布之前,可能会出现潜在的重大变更。
附加资源:您可以在这篇博客中阅读更多关于如何将 Elasticsearch 和 Microsoft Agent Framework 结合使用的内容。
“接地”(Grounding)意味着智能体在生成响应之前,会从像 Elasticsearch 这样的来源检索真实数据,而不是仅仅依赖 LLM 的训练数据。这可以防止幻觉,并确保答案反映您的实际环境,基于您的日志、文档和专有记录。
不。Elastic 不会使用客户数据,包括提示、查询或事件数据,来训练模型。通过 BYOK(自带密钥),您的数据将保留在您自己的环境中。如果您使用第三方 LLM 提供商,其数据政策将单独适用。
Elastic Agent Builder 智能体会暴露一个 MCP 服务器端点,GitHub Copilot SDK 直接连接到该端点。现有的 Elastic 智能体可以从 Copilot 原生调用,无需重写工具函数。
基本操作,例如检查集群健康状况或触发重新索引,作为 Copilot 工具运行良好。复杂操作,例如 ILM 策略管理,通过自然语言自动化更难以安全实现,在智能体工作流中应谨慎处理。
截至撰写本文时,该 SDK 支持 Python、TypeScript、Go 和 .NET,Java 正在开发中。对于 Elasticsearch 集成,Python 和 .NET 提供了最直接的路径。由于这两种语言都与 Microsoft Agent Framework 深度集成,开发者可以使用现有的桥接库(如 Elastic.Extensions.AI)无缝连接 Copilot 和 Elasticsearch。