1. Elastic AI Agent Builder 是什么?

如果你正在寻找一个能快速将企业数据转化为智能对话能力的工具,Elastic AI Agent Builder 可能就是答案。简单来说,它是个能让你用自然语言和 Elasticsearch 数据"聊天"的框架。想象一下,你有个装满金融数据的 Elasticsearch 索引,现在不需要写复杂查询,只需问"最近有哪些关于特斯拉的负面新闻?"就能得到结构化回答——这就是它的魔力。

我在实际项目中测试时发现,相比传统开发方式,用 Agent Builder 构建金融风控问答系统的时间从两周缩短到了两天。它最大的优势在于原生集成:不需要额外部署向量数据库或LLM网关,所有能力都直接构建在 Elastic Stack 上。目前最新版本已经支持:

  • 开箱即用的对话界面:直接在 Kibana 里就能用
  • 自定义工具链:用 ES|QL 定义专属业务逻辑
  • MCP协议支持:与 Claude、VS Code 等工具无缝对接

2. 快速搭建你的第一个智能代理

2.1 环境准备

开始前确保你有:

  • Elasticsearch 和 Kibana 9.2+ 版本
  • 至少4GB内存(实测8GB更流畅)
  • 有效的API密钥

在 Kibana 左侧导航栏找到"Agents",如果没看到,需要先启用技术预览功能:

# 启用技术预览功能
PUT _cluster/settings
{
  "persistent": {
    "kibana.feature_flags": {
      "enableAgentBuilder": true
    }
  }
}

2.2 创建你的第一个工具

工具(Tool)是 Agent 的能力基础。比如我们要做个金融新闻分析工具:

POST kbn://api/agent_builder/tools
{
  "id": "stock_news",
  "type": "esql",
  "description": "查询指定股票代码的相关新闻",
  "configuration": {
    "query": "FROM financial_news | WHERE MATCH(entities, ?symbol) | SORT @timestamp DESC | LIMIT 5",
    "params": {
      "symbol": {
        "type": "keyword",
        "description": "股票代码如AAPL"
      }
    }
  }
}

这里有几个实用技巧:

  1. ?symbol定义动态参数
  2. MATCH支持语义搜索
  3. 按时间倒排确保获取最新新闻

2.3 组装智能代理

有了工具后,创建一个分析代理:

POST kbn://api/agent_builder/agents
{
  "id": "financial_analyst",
  "name": "金融分析师",
  "configuration": {
    "instructions": "你是一个严谨的金融分析师,回答时需注明数据来源和时间",
    "tools": ["stock_news", "platform.core.search"]
  }
}

注意instructions字段——这是定义Agent性格的关键。我建议用"角色+要求"的格式,比如:

  • "你是一个幽默的客服,回答要简短有趣"
  • "你是个严谨的医生,回答需引用权威文献"

3. 高级配置技巧

3.1 多工具协同工作

真正的威力在于工具组合。比如我们要分析新闻情感:

POST kbn://api/agent_builder/tools
{
  "id": "sentiment_analysis",
  "type": "esql",
  "description": "分析文本情感倾向",
  "configuration": {
    "query": """
    FROM financial_news 
    | WHERE _id = ?docId 
    | EVAL sentiment = CASE(
        WHEN ML.TEXT_CLASSIFY(content, 'sentiment').prediction = 'positive' THEN 1
        WHEN ML.TEXT_CLASSIFY(content, 'sentiment').prediction = 'negative' THEN -1
        ELSE 0
      )
    | KEEP _id, sentiment
    """
  }
}

然后更新Agent配置:

PUT kbn://api/agent_builder/agents/financial_analyst
{
  "tools": ["stock_news", "sentiment_analysis", "platform.core.get_mapping"]
}

3.2 使用MCP协议集成

要让外部应用调用你的Agent,配置MCP客户端:

// 在VS Code的settings.json中添加
{
  "mcp.servers": {
    "elastic-agent": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "${KIBANA_URL}/api/agent_builder/mcp",
        "--header",
        "Authorization:ApiKey ${API_KEY}"
      ]
    }
  }
}

实测这个配置可以让VS Code的AI插件直接调用你的自定义工具,我团队用它实现了代码注释自动生成功能。

4. 实战:构建金融风控系统

4.1 数据准备

假设我们有:

  • financial_news:新闻数据
  • stock_prices:股价历史
  • risk_indicators:风险指标

先创建一个风险分析工具:

POST kbn://api/agent_builder/tools
{
  "id": "risk_assessment",
  "type": "esql",
  "description": "综合评估股票风险",
  "configuration": {
    "query": """
    FROM stock_prices
    | WHERE symbol = ?symbol
    | STATS price_change=MAX(price)/MIN(price) BY symbol
    | JOIN 
        [FROM financial_news 
         | WHERE MATCH(entities, ?symbol) 
         | STATS negative_news=COUNT(CASE(ML.TEXT_CLASSIFY(content,'sentiment').prediction='negative',1,0)) BY symbol]
      ON symbol
    | JOIN 
        [FROM risk_indicators WHERE symbol = ?symbol | KEEP symbol, pe_ratio, volatility]
      ON symbol
    | EVAL risk_score = (price_change * 0.3) + (negative_news * 0.5) + (volatility * 0.2)
    | KEEP symbol, risk_score, negative_news, volatility
    """
  }
}

4.2 对话测试

POST kbn://api/agent_builder/converse
{
  "input": "特斯拉当前风险状况如何?",
  "agent_id": "financial_analyst"
}

系统会自动:

  1. 识别需要调用risk_assessment工具
  2. 传入"特斯拉"作为参数
  3. 将ES|QL结果转化为自然语言

4.3 性能优化技巧

在大数据量下,我推荐:

  1. 为工具查询添加| LIMIT 1000防止超时
  2. 使用LOOKUP JOIN替代子查询
  3. 对时间字段添加| WHERE @timestamp > now()-7d时间范围
PUT kbn://api/agent_builder/tools/risk_assessment
{
  "configuration": {
    "query": """
    FROM stock_prices
    | LOOKUP JOIN risk_indicators ON symbol
    | WHERE symbol = ?symbol AND @timestamp > now()-7d
    | STATS risk_score=...
    | LIMIT 1000
    """
  }
}

5. 常见问题排查

问题1:Agent返回"没有足够信息"

  • 检查工具描述是否清晰(Agent靠描述匹配工具)
  • 确认参数类型匹配(比如数字类型传字符串就会失败)

问题2:查询超时

  • 添加LIMIT子句
  • 检查是否有全索引扫描(用EXPLAIN分析)

问题3:MCP连接失败

  • 确认Kibana URL包含协议头(https://)
  • API密钥需有manage_agent_builder权限

我在部署过程中发现最实用的调试方法是查看执行链路:

GET kbn://api/agent_builder/conversations/<conversation_id>

返回结果会显示完整的思考过程:

{
  "steps": [
    {
      "type": "tool_call",
      "tool_id": "risk_assessment",
      "params": {"symbol": "TSLA"},
      "results": {...}
    }
  ]
}

记得定期清理测试对话:

DELETE kbn://api/agent_builder/conversations/*
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐