首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >使用 Elastic Agent Builder 和 GPT-OSS 构建人力资源 AI 代理

使用 Elastic Agent Builder 和 GPT-OSS 构建人力资源 AI 代理

原创
作者头像
点火三周
发布2026-08-03 11:27:08
发布2026-08-03 11:27:08
1420
举报

介绍

本文将向您展示如何使用GPT-OSS和 Elastic Agent Builder 构建一个用于人力资源的 AI 代理。该代理无需将数据发送到 OpenAI、Anthropic 或任何外部服务即可回答您的问题。

我们将使用 LM Studio 在本地部署 GPT-OSS,并将其连接到 Elastic Agent Builder。

读完本文,您将拥有一个定制的 AI 代理,它可以回答有关员工数据的自然语言问题,同时保持对您的信息和模型的完全控制。

先决条件

撰写本文需要以下工具:

为什么要使用 GPT-OSS?

使用本地生命周期管理 (LLM) 模型,您可以将其部署在自己的基础设施中,并根据自身需求进行微调。同时,您还可以掌控与模型共享的数据,而且无需向外部供应商支付许可费。

OpenAI于 2025 年 8 月 5 日发布了 GPT-OSS,这是其对开放模型生态系统承诺的一部分。

20B 参数模型提供:

  • 工具使用能力
  • 高效推理
  • 兼容 OpenAI SDK
  • 与代理工作流程兼容

基准对比:

基准测试来源

解决方案架构

该架构完全运行在您的本地计算机上。Elastic(运行在 Docker 中)通过 LM Studio 直接与您的本地 LLM 系统通信,Elastic Agent Builder 利用此连接创建可查询员工数据的自定义 AI 代理。

更多详情请参阅此文档

构建人力资源人工智能代理:步骤

我们将实施过程分为 5 个步骤:

  1. 使用本地模型配置 LM Studio
  2. 使用 Docker 部署本地 Elastic
  3. 在 Elasticsearch 中创建 OpenAI 连接器
  4. 将员工数据上传到 Elasticsearch
  5. 构建并测试你的人工智能代理

步骤 1:配置 LM Studio 以使用 GPT-OSS 20B

LM Studio 是一款用户友好的应用程序,可让您在本地计算机上运行大型语言模型。它提供与 OpenAI 兼容的 API 服务器,无需复杂的设置过程即可轻松与 Elastic 等工具集成。更多详情,请参阅LM Studio 文档

首先,从官方网站下载并安装LM Studio 。安装完成后,打开该应用程序。

在 LM Studio 界面中:

  1. 转到搜索选项卡并搜索“GPT-OSS”
  2. openai/gpt-oss-20b从 OpenAI 中选择
  3. 点击下载

此模型的大小约为12.10GB。下载可能需要几分钟时间,具体取决于您的网络连接速度。

模型下载完成后:
  1. 转到本地服务器选项卡
  2. 选择 openai/gpt-oss-20b
  3. 使用默认端口 1234
  4. 在右侧面板中,转到“加载”,并将“上下文长度”设置为40K或更高。

5. 点击启动服务器

如果服务器正在运行,您应该会看到这个。

代码语言:javascript
复制
[LM STUDIO SERVER] Success! HTTP server listening on port 1234
[LM STUDIO SERVER] Supported endpoints:
[LM STUDIO SERVER] ->	GET  http://localhost:1234/v1/models
[LM STUDIO SERVER] ->	POST http://localhost:1234/v1/responses
[LM STUDIO SERVER] ->	POST http://localhost:1234/v1/chat/completions
[LM STUDIO SERVER] ->	POST http://localhost:1234/v1/completions
[LM STUDIO SERVER] ->	POST http://localhost:1234/v1/embeddings
Server started.

步骤 2:使用 Docker 部署本地 Elastic

现在我们将使用 Docker 在本地部署 Elasticsearch 和 Kibana。Elastic 提供了一个便捷的脚本来处理整个安装过程。更多详情请参阅官方文档

运行 start-local 脚本

在终端中执行以下命令:

代码语言:javascript
复制
curl -fsSL https://elastic.co/start-local | sh

此脚本将执行以下操作:

  • 下载并配置 Elasticsearch 和 Kibana
  • 使用 Docker Compose 启动这两个服务
  • 自动激活 30 天白金版试用许可证

预期输出

请等待以下消息并保存显示的密码和 API 密钥;您需要它们才能访问 Kibana:

代码语言:javascript
复制
🎉 Congrats, Elasticsearch and Kibana are installed and running in Docker!
🌐 Open your browser at http://localhost:5601
   Username: elastic
   Password: KSUlOMNr
🔌 Elasticsearch API endpoint: http://localhost:9200
🔑 API key: cnJGX0pwb0JhOG00cmNJVklUNXg6cnNJdXZWMnM4bncwMllpQlFlUTlWdw==
Learn more at https://github.com/elastic/start-local

访问 Kibana

打开浏览器并访问:

代码语言:javascript
复制
http://localhost:5601

使用终端输出中获取的凭据登录。

启用代理构建器

登录 Kibana 后,导航至“管理” > “AI” > “代理构建器”,然后激活代理构建器。

步骤 3:在 Elasticsearch 中创建 OpenAI 连接器

现在我们将配置 Elastic 以使用您的本地 LLM。

接入连接器

  1. 在基巴纳
  2. 转到“项目设置” > “管理”
  3. 在“警报和洞察”下,选择“连接器” 。
  4. 单击“创建连接器”

配置连接器

从连接器列表中选择OpenAI。LM Studio 使用 OpenAI SDK,因此与之兼容。

请在各字段中填写以下值:

  • 连接器名称: LM Studio - GPT-OSS 20B
  • 选择 OpenAI 提供商:其他(OpenAI 兼容服务)
  • 网址:http://host.docker.internal:1234/v1/chat/completions
  • 默认模型: openai/gpt-oss-20b
  • API密钥: testkey-123(任何文本均可,因为LM Studio服务器不需要身份验证。)

要完成配置,请单击“保存并测试”

重要提示:请启用“启用原生函数调用”;这是 Agent Builder 正常工作的必要条件。如果未启用,将会出错No tool calls found in the response

测试连接

Elastic 应该会自动测试连接。如果一切配置正确,您将看到类似这样的成功消息:

回复:

代码语言:javascript
复制
{
  "status": "ok",
  "data": {
    "id": "chatcmpl-flj9h0hy4wcx4bfson00an",
    "object": "chat.completion",
    "created": 1761189456,
    "model": "openai/gpt-oss-20b",
    "choices": [
      {
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "Hello! 👋 How can I assist you today?",
          "reasoning": "Just greet.",
          "tool_calls": []
        },
        "logprobs": null,
        "finish_reason": "stop"
      }
    ],
    "usage": {
      "prompt_tokens": 69,
      "completion_tokens": 23,
      "total_tokens": 92
    },
    "stats": {},
    "system_fingerprint": "openai/gpt-oss-20b"
  },
  "actionId": "ee1c3aaf-bad0-4ada-8149-118f52dad757"
}

步骤 4:将员工数据上传到 Elasticsearch

现在我们将上传人力资源员工数据集,以演示代理如何处理敏感数据。我生成了一个具有以下结构的虚拟数据集。

数据集结构

代码语言:javascript
复制
{
  "employee_id": "0f4dce68-2a09-4cb1-b2af-6bcb4821539b",
  "full_name": "Daffi Stiebler",
  "email": "lscutchings0@huffingtonpost.com",
  "date_of_birth": "1975-06-20T15:39:36Z",
  "hire_date": "2025-07-28T00:10:45Z",
  "job_title": "Physical Therapy Assistant",
  "department": "HR",
  "salary": "108455",
  "performance_rating": "Needs Improvement",
  "years_of_experience": 2,
  "skills": "Java",
  "education_level": "Master's Degree",
  "manager": "Carl MacGibbon",
  "emergency_contact": "Leigha Scutchings",
  "home_address": "5571 6th Park"
}

首先,创建具有正确映射关系的索引。请注意,我们对某些键字段使用了semantic_text字段;这为我们的索引启用了语义搜索功能。

代码语言:javascript
复制
​​​​PUT hr-employees
{
  "mappings": {
    "properties": {
      "@timestamp": {
        "type": "date"
      },
      "employee_id": {
        "type": "keyword"
      },
      "full_name": {
        "type": "text",
        "copy_to": "employee_semantic"
      },
      "email": {
        "type": "keyword"
      },
      "date_of_birth": {
        "type": "date",
        "format": "iso8601"
      },
      "hire_date": {
        "type": "date",
        "format": "iso8601"
      },
      "job_title": {
        "type": "text",
        "copy_to": "employee_semantic"
      },
      "department": {
        "type": "text",
        "copy_to": "employee_semantic"
      },
      "salary": {
        "type": "double"
      },
      "performance_rating": {
        "type": "text",
        "copy_to": "employee_semantic"
      },
      "years_of_experience": {
        "type": "long"
      },
      "skills": {
        "type": "text",
        "copy_to": "employee_semantic"
      },
      "education_level": {
        "type": "text",
        "copy_to": "employee_semantic"
      },
      "manager": {
        "type": "text",
        "copy_to": "employee_semantic"
      },
      "emergency_contact": {
        "type": "keyword"
      },
      "home_address": {
        "type": "keyword"
      },
      "employee_semantic": {
        "type": "semantic_text"
      }
    }
  }
}

使用批量 API 进行索引

将数据集复制粘贴到 Kibana 的开发者工具中并执行:

代码语言:javascript
复制
POST hr-employees/_bulk
{"index": {}}
{"employee_id": "57728b91-e5d7-4fa8-954a-2384040d3886", "full_name": "Filide Gane", "email": "vhallahan1@booking.com", "job_title": "Business Systems Development Analyst", "department": "Marketing", "salary": "$52330.27", "performance_rating": "Meets Expectations", "years_of_experience": 12, "skills": "Java", "education_level": "Bachelor's Degree", "date_of_birth": "2000-02-07T16:49:32Z", "hire_date": "2023-11-07T13:03:16Z", "manager": "Freedman Kings", "emergency_contact": "Vilhelmina Hallahan", "home_address": "75 Dennis Junction"}
{"index": {}}
{"employee_id": "...", ...}

核实数据

运行查询进行验证:

代码语言:javascript
复制
GET hr-employees/_search

步骤 5:构建并测试您的 AI 代理

一切配置完毕,现在可以使用 Elastic Agent Builder 构建自定义 AI 代理了。更多详情请参阅Elastic 文档

添加连接器

在创建新代理之前,我们需要将代理构建器设置为使用我们自定义的连接器,LM Studio - GPT-OSS 20B因为默认连接器是Elastic Managed LLM。为此,我们需要转到“项目设置” > “管理” > “GenAI 设置”;然后选择我们创建的连接器并单击“保存”

访问代理构建器

  1. 前往代理商处
  2. 点击“创建新代理”

配置代理

要创建新代理,必填字段为代理 ID显示名称显示说明

但还有更多自定义选项,例如自定义指令,它可以指导您的代理如何操作以及如何与您的工具交互,类似于系统提示,但适用于我们自定义的代理。标签、头像颜色和头像符号可以帮助您整理代理。

我根据数据集为我们的代理选择的参数是: 代理 ID: hr_assistant

自定义说明:

代码语言:javascript
复制
You are an HR Analytics Assistant that helps answer questions about employee data.
When responding to queries:
- Provide clear, concise answers
- Include relevant employee details (name, department, salary, skills)
- Format monetary values with currency symbols
- Be professional and maintain data confidentiality

标签:Human ResourcesGPT-OSS

显示名称:HR Analytics Assistant

显示描述:

代码语言:javascript
复制
A specialized AI assistant for Human Resources that helps analyze employee data, compensation, performance metrics, and talent management. Ask questions about employees, departments, salaries, or performance analytics.

所有数据都导入完毕后,我们可以点击“保存新代理”。

测试代理

现在你可以用自然语言询问有关员工数据的问题,GPT-OSS 20B 将理解你的意图并生成适当的回复。

Prompt:
代码语言:javascript
复制
Which employee is the one with the highest salary in the hr-employees index?
回答:

代理流程如下:

1. 使用 GPT-OSS 连接器理解您的问题

2. 生成合适的 Elasticsearch 查询(使用内置工具或自定义ES|QL

3.检索匹配的员工记录

4. 以自然语言和适当的格式呈现结果

与传统的词汇搜索不同,基于 GPT-OSS 的智能体能够理解意图和上下文,因此无需知道确切的字段名称或查询语法即可轻松找到信息。有关智能体思考过程的更多详细信息,请参阅这篇文章

结论

本文中,我们使用 Elastic 的 Agent Builder 构建了一个自定义 AI 代理,用于连接到本地运行的 OpenAI GPT-OSS 模型。通过在本地计算机上部署 Elastic 和 LLM,这种架构使您能够在充分利用生成式 AI 功能的同时,完全掌控自己的数据,而无需将信息发送到外部服务。

我们使用 GPT-OSS 20B 作为实验模型,但 Elastic Agent Builder 官方推荐的模型请参考此处。如果您需要更高级的推理能力,还可以使用参数量为 120B 的变体,它在复杂场景下表现更佳,但本地运行需要配置更高的机器。更多详情,请参阅OpenAI 官方文档

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 介绍
  • 先决条件
  • 为什么要使用 GPT-OSS?
  • 解决方案架构
  • 构建人力资源人工智能代理:步骤
  • 步骤 1:配置 LM Studio 以使用 GPT-OSS 20B
    • 在 LM Studio 界面中:
      • 模型下载完成后:
  • 步骤 2:使用 Docker 部署本地 Elastic
    • 运行 start-local 脚本
    • 预期输出
    • 访问 Kibana
    • 启用代理构建器
  • 步骤 3:在 Elasticsearch 中创建 OpenAI 连接器
    • 接入连接器
    • 配置连接器
    • 测试连接
  • 步骤 4:将员工数据上传到 Elasticsearch
    • 数据集结构
    • 使用批量 API 进行索引
    • 核实数据
  • 步骤 5:构建并测试您的 AI 代理
    • 添加连接器
    • 访问代理构建器
    • 配置代理
    • 测试代理
      • Prompt:
      • 回答:
  • 结论
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档