讲师中心 微信公众号
AI工具推荐 视频效率加速

豆包AI的API怎么接入到Vue3和Vite5前端项目中

云浩吖_7732

云浩吖_7732

发布时间:2026-08-09 19:37:02

|

1092人浏览过

|

来源于php中文网

原创

必须通过反向代理绕过CORS、用临时Token替代前端硬编码API Key、封装非流式/流式请求逻辑,并在组件中调用实现智能问答。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

豆包ai的api怎么接入到vue3和vite5前端项目中

要在 Vue3 + Vite5 项目中调用豆包 AI 的 API 实现智能问答、内容生成等能力,必须绕过浏览器 CORS 限制、安全传递凭证、正确构造请求体并解析流式或非流式响应。直接在前端硬编码 API Key 或直连火山方舟接口会导致密钥泄露和请求被拒。

第一步:配置反向代理规避 CORS

Vue3 + Vite5 默认使用 vite.config.ts 启动开发服务器,【不能在前端直接请求火山方舟域名 https://ark.cn-beijing.volces.com】,否则浏览器会拦截跨域请求。必须通过本地代理转发。

打开项目根目录下的 vite.config.ts,在 export default defineConfig({}) 内添加 server.proxy 配置:

```ts
server: {
  proxy: {
    '/api/ark': {
      target: 'https://ark.cn-beijing.volces.com',
      changeOrigin: true,
      rewrite: (path) => path.replace(/^\/api\/ark/, ''),
    },
  },
},

立即进入“豆包AI人工智官网入口”;

立即学习“豆包AI人工智能在线问答入口”;

这一步让所有以 /api/ark 开头的请求,自动转给火山方舟真实地址。开发时用 /api/ark,上线后需改用 Nginx 或云函数代理。

第二步:创建安全的 API 调用服务

不要把 API Key 写在前端代码里。Vite 支持环境变量前缀 VITE_,但仅限客户端可见变量——【API Key 绝对不可通过 VITE_API_KEY 暴露】。你必须依赖后端代理或临时 Token 方案。

方法一:使用火山引擎 OAuth 临时 Token(推荐)
① 在服务端(如 Express 或云函数)提供一个 /api/token 接口,用你的 App ID 和 App Secret 向 https://api.doubao.com/oauth/token 申请 access_token;
② 前端调用该接口获取短期 token(有效期 1 小时),再用它请求豆包模型;
③ 前端请求时 header 加上 Authorization: Bearer ${token}。

方法二:Vite 环境变量仅用于开发调试(严禁上线)
在 .env.development 中写:VITE_DEV_API_KEY=ek-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
在服务文件中判断:if (import.meta.env.DEV) useKey = import.meta.env.VITE_DEV_API_KEY;;
⚠️ 注意:构建后 VITE_DEV_API_KEY 不会被打包进 dist,仅开发时生效,避免误提交。

PigX UI 前端开发
PigX UI 前端开发

PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。

下载

第三步:封装豆包 AI 请求逻辑

在 src/services/doubaoApi.ts 中创建统一调用层:

```ts
import { ref } from 'vue'
import type { ChatMessage } from '@/types/chat'

export interface DoubaoResponse {
  choices: Array;
}

export async function callDoubao(messages: ChatMessage[], model = 'Doubao-lite-128k') {
  const response = await fetch('/api/ark/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${useTempToken()}`, // 替换为实际 token 获取函数
    },
    body: JSON.stringify({
      model,
      messages,
      stream: false,
    }),
  });
  if (!response.ok) throw new Error(`HTTP ${response.status}`);
  return (await response.json()) as DoubaoResponse;
}

这个函数返回的是完整响应体,适用于非流式场景(如摘要、单次问答)。若需流式输出,下一步要改用 ReadableStream + TextDecoder 处理 chunk。

第四步:实现流式响应渲染(可选)

豆包 AI 支持 stream: true,返回 SSE 格式数据流。浏览器无法直接用 fetch().json() 解析,必须手动读取流:

```ts
export async function streamDoubao(messages: ChatMessage[]) {
  const resp = await fetch('/api/ark/v1/chat/completions', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` },
    body: JSON.stringify({ model: 'Doubao-pro-256k', messages, stream: true }),
  });
  const reader = resp.body?.getReader();
  if (!reader) return;
  const decoder = new TextDecoder();
  let accumulated = '';
  while (true) {
    const { done, value } = await reader.read();
    if (done) break;
    const chunk = decoder.decode(value);
    const lines = chunk.split('\n').filter(l => l.startsWith('data: '));
    for (const line of lines) {
      const jsonStr = line.slice(6).trim();
      if (jsonStr === '[DONE]') continue;
      try {
        const parsed = JSON.parse(jsonStr);
        const delta = parsed.choices[0]?.delta?.content || '';
        accumulated += delta;
        updateDisplay(accumulated); // 触发 UI 更新
      } catch (e) { /* 忽略解析失败的脏数据 */ }
    }
  }
}

这段代码逐块接收、解码、提取 content 字段,拼接成完整回复。注意:SSE 数据可能含空行、注释行或 [DONE] 标记,必须过滤。

第五步:在组件中调用并绑定状态

在 AiChat.vue 的 <script setup> 中导入并使用:

```ts
import { ref, onMounted } from 'vue'
import { callDoubao } from '@/services/doubaoApi'

const input = ref('')
const messages = ref>([])
const isStreaming = ref(false)

async function handleSubmit() {
  if (!input.value.trim()) return;
  messages.value.push({ role: 'user', content: input.value });
  isStreaming.value = true;
  try {
    const res = await callDoubao([{ role: 'user', content: input.value }]);
    messages.value.push({
      role: 'assistant',
      content: res.choices[0].message.content,
    });
  } finally {
    isStreaming.value = false;
    input.value = '';
  }
}

模板中用 v-for 渲染 messages,用 v-if="isStreaming" 显示加载态。无需额外库,纯 Composition API 即可驱动整个流程。

热门AI工具

更多
UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2183

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

4663

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

5810

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

5258

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

743

2024.05.22

vue2.0和3.0区别
vue2.0和3.0区别

vue2.0和3.0区别:vue2的响应式原理是利⽤“Object.defineProperty()”对数据进⾏劫持结合发布订阅模式的⽅式来实现,vue3中使⽤了es6的proxy API对数据代理,实现对数据的监控。本专题为大家提供vue2.0和3.0区别的相关的文章、下载、课程内容,供大家免费下载体验。

1614

2023.07.17

vue3的生命周期有哪些
vue3的生命周期有哪些

vue3的生命周期:1、beforecreate;2、created;3、beforemount;4、mounted;5、beforeupdate;6、updated;7、beforedestroy;8、destroyed;9、activated;10、deactivated等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

11762

2024.02.23

Vue3组合式API与组件开发实战
Vue3组合式API与组件开发实战

本专题讲解 Vue 3 组合式 API 的核心概念与应用技巧,深入分析响应式系统、生命周期管理、组件设计与复用策略。通过完整项目案例,指导前端开发者实现高性能、结构清晰的 Vue 应用,提升开发效率与代码可维护性。

276

2026.02.10

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 16.8万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn