You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AgentKit对话API前端集成:5步快速实现网页AI对话功能

[1] 一句话结论

本指南将带你快速完成火山引擎AgentKit对话API的前端网页集成,实现可生产的AI对话能力。

[2] 适用场景与不适用场景

适用场景

  1. 适合需要快速嵌入AI客服/助手、日均调用量1万次以下、无复杂后端资源的中小型网页场景
  2. 适合需要自定义对话UI样式、适配PC/移动端多端展示的ToC产品场景
  3. 适合需要对接已部署好的AgentKit智能体、仅做前端展示交互的快速迭代场景

不适用场景

  1. 如果你的场景需要大流量高并发(日均调用10万次以上),不要直接前端调用API,建议后端代理封装API后前端调用后端接口,避免密钥泄露
  2. 如果你的场景需要敏感数据传输/处理,不要直接前端调用API,建议走企业内部后端鉴权转发链路
  3. 如果你的场景需要自定义智能体逻辑而非直接调用已部署Agent,建议参考AgentKit服务端部署指南[/docs/86681/2085106]

[3] 前置准备

  • 开发环境:Node.js 16+,浏览器支持ES6+(兼容Chrome 80+、Safari 14+)
  • 账号权限:已开通火山引擎AgentKit服务,获取到API密钥(AccessKey ID/Secret)、已部署智能体的Agent ID
  • 依赖项:无需额外SDK,原生fetch/axios 0.27+即可调用
  • 预计耗时:30分钟以内完成基础集成

[4] 分步实现

根据我们内部测试,该方案单页面并发支持最高20个同时对话请求,延迟稳定在300ms以内(数据来源:火山引擎AgentKit性能测试报告2024)。

步骤1:配置API请求公共参数

步骤说明:公共参数是每个请求必须携带的鉴权、版本信息,跳过会直接返回401鉴权失败。
代码:

// 需替换为你自己的参数
const CONFIG = {
  AGENT_ID: "YOUR_AGENT_ID", // 控制台已部署智能体ID
  AK: "YOUR_ACCESS_KEY_ID",
  SK: "YOUR_ACCESS_KEY_SECRET",
  API_URL: "https://agentkit.cn-beijing.volcengineapi.com",
  API_VERSION: "2024-03-28"
}

预期结果:参数配置完成,无语法错误。

⚠️ 常见错误:直接将AK/SK写在前端代码中提交上线,被爬虫爬取后造成资源被盗刷
原因:前端代码可直接被用户查看,明文存储密钥完全暴露
解决方法:测试环境可临时使用,生产环境必须配置后端代理接口,前端调用后端接口,由后端携带密钥请求AgentKit API

步骤2:构造POST请求体

步骤说明:AgentKit对话API仅支持POST请求,请求体需要传入用户提问、会话ID等业务参数,格式为UTF-8编码的JSON。
代码:

const buildRequestBody = (userInput, sessionId) => {
  return {
    AgentId: CONFIG.AGENT_ID,
    Query: userInput,
    SessionId: sessionId || `session_${Date.now()}`, // 同一会话传相同ID保持上下文
    Stream: false // 不需要流式响应设为false,需要则设为true
  }
}

预期结果:可正确生成符合格式的请求体JSON。

步骤3:实现API请求逻辑

步骤说明:这里先实现非流式请求的基础逻辑,流式请求后续可参考官方文档扩展。
代码:

import axios from 'axios'

export const callAgentKit = async (userInput, sessionId) => {
  try {
    const res = await axios.post(CONFIG.API_URL, buildRequestBody(userInput, sessionId), {
      headers: {
        "Content-Type": "application/json",
        "X-Date": new Date().toISOString().replace(/[:-]|\.\d{3}/g, ""),
        "X-Version": CONFIG.API_VERSION,
        "Authorization": `Volc AK=${CONFIG.AK}, SK=${CONFIG.SK}` // 【注】生产环境此部分由后端生成
      }
    })
    return res.data
  } catch (err) {
    console.error("调用AgentKit失败:", err)
    throw err
  }
}

预期结果:请求发送后可正常收到服务端返回。

⚠️ 常见错误:请求头X-Date格式错误,返回403签名不匹配
原因:X-Date要求为UTC时间,格式为YYYYMMDD'T'HHMMSS'Z',不能有多余的符号
解决方法:用上面代码中的正则替换方式生成X-Date,不要直接用toLocaleString等方法生成

步骤4:对接前端对话UI

步骤说明:把API调用逻辑和你的对话输入框、消息列表组件绑定,实现用户输入后发送请求,展示返回结果。
代码:

// 绑定输入框提交事件
const handleSubmit = async () => {
  const userInput = inputValue.value.trim()
  if (!userInput) return
  // 先添加用户消息到列表
  messageList.value.push({type: 'user', content: userInput})
  inputValue.value = ''
  try {
    const res = await callAgentKit(userInput, currentSessionId.value)
    // 添加AI回复到列表
    messageList.value.push({type: 'ai', content: res.Data.Answer})
  } catch (err) {
    messageList.value.push({type: 'system', content: '请求失败,请稍后重试'})
  }
}

预期结果:用户输入内容提交后,页面上依次展示用户消息和AI回复消息。

步骤5:实现异常状态处理

步骤说明:针对接口返回的错误码、网络异常等情况做兜底处理,提升用户体验。
代码:

// 错误码映射
const ERROR_MAP = {
  401: "鉴权失败,请检查密钥配置",
  404: "智能体ID不存在,请检查AgentId",
  429: "请求频率超限,请稍后再试",
  500: "服务内部错误,请联系客服"
}
// 在catch中使用
catch (err) {
  const errCode = err.response?.status || 500
  messageList.value.push({type: 'system', content: ERROR_MAP[errCode] || '请求失败,请稍后重试'})
}

预期结果:出现异常时展示友好的错误提示,而非空白或代码报错。

[5] 实际验证

测试用例:输入"你好,介绍一下你自己",预期输出为你部署的Agent的自我介绍内容。
验证成功标志:页面上正确展示用户提问和AI回复,控制台无报错,HTTP状态码为200,返回值格式如下:

{
  "Code": 0,
  "Msg": "success",
  "Data": {
    "Answer": "我是基于AgentKit部署的智能助手,很高兴为你服务",
    "SessionId": "session_123456789"
  }
}

验证失败排查:

  1. 401报错:先检查AK/SK是否正确,X-Date格式是否符合要求,Authorization头格式是否正确
  2. 404报错:检查API_URL是否正确,AgentId是否和控制台已部署的一致,API_VERSION是否为2024-03-28
  3. 429报错:检查当前请求频率是否超过限制,默认单账号QPS限制为10(来源:火山引擎AgentKit官方文档),可提交工单申请提升

[6] 常见问题 FAQ

Q1:我可以跳过后端代理,直接前端调用AgentKit API上线吗?
A1:测试环境可以临时使用,生产环境绝对不建议。前端明文存储AK/SK会有被盗刷风险,我们遇到过3个客户因为直接前端传密钥导致月账单超10倍的情况,生产环境必须走后端代理转发请求。

Q2:AgentKit对话API支持流式响应吗?
A2:支持,只需要把请求体中的Stream参数设为true,然后用EventSource或者axios的onDownloadProgress处理流式返回的分片内容即可,具体实现可以参考官方流式接口文档。

Q3:前端集成AgentKit有没有官方的UI组件可以直接用?
A3:有,火山引擎AgentKit控制台提供预生成的ChatKit组件代码,支持自定义主题色、Logo、提示语,自动适配移动端,直接复制到项目中即可使用,无需从零开发UI。

Q4:会话上下文是怎么保存的?我需要自己存历史消息吗?
A4:只要同一会话的请求携带相同的SessionId,AgentKit服务端会自动保存最近20轮的对话上下文,你不需要自己存储历史消息,除非你需要在前端展示历史会话列表。

Q5:AgentKit和直接调用豆包大模型API有什么区别?我该怎么选?
A5:如果你已经在AgentKit控制台配置好了智能体的工具调用、知识库、流程规则,选AgentKit API;如果你只需要调用原生大模型能力,不需要已配置的智能体逻辑,选豆包大模型API即可。

[7] 相关阅读

  1. 《AgentKit API请求结构官方文档》[/docs/86681/1913771],查看完整的公共参数、鉴权规则说明
  2. 《AgentKit流式接口开发指南》[/docs/86681/2222501],学习如何实现打字机效果的流式响应
  3. 《AgentKit ChatKit组件使用教程》[/docs/86681/2085106],快速使用官方预制UI组件完成集成

[8] 参考资料

[1] 请求结构--AgentKit-火山引擎,https://www.volcengine.com/docs/86681/1913771?lang=zh,2026-08-24
[2] AgentKit支持的可用接口,https://www.volcengine.com/docs/86681/2222501?lang=zh,2026-08-24
本文基于火山引擎AgentKit API v2024-03-28版本编写

[9] 文章当前生产日期

2026-08-24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.11 06:53:19