字
字节笔记本
2026年2月22日
EdgeOne Pages AI:免费在边缘部署 DeepSeek R1 大模型
本文介绍 EdgeOne Pages AI 项目,一个基于腾讯 EdgeOne 边缘计算平台的开源模板,让你能够免费在边缘节点部署 DeepSeek R1 大语言模型,并集成网络搜索能力。该项目采用 Next.js + TypeScript 构建,提供与 OpenAI 兼容的 API 接口,可无缝集成到各类第三方工具中。
项目简介
EdgeOne Pages AI 是腾讯云 EdgeOne 团队开源的示例项目,旨在展示如何在边缘函数中部署和运行 DeepSeek R1 模型。该项目的核心优势在于:
- 完全免费:利用 EdgeOne Pages 的免费额度部署和运行
- 边缘部署:模型推理在边缘节点执行,延迟更低
- 网络搜索:集成 SearXNG 搜索引擎,支持联网查询
- OpenAI 兼容:API 接口与 OpenAI 格式一致,易于集成
- 多模型支持:支持 DeepSeek R1 多个版本模型切换
在线体验地址:https://deepseek-r1-edge.edgeone.site
核心特性
1. 边缘函数架构
项目采用 EdgeOne Pages Functions 作为后端运行环境,将 AI 推理逻辑部署在全球边缘节点:
- 低延迟响应,就近处理用户请求
- 自动扩缩容,无需管理服务器
- 免费额度充足,适合个人开发者和小型项目
2. 网络搜索集成
通过 SearXNG 搜索引擎实现联网能力:
- 支持 Bing 等多个搜索引擎
- 搜索结果自动格式化为上下文
- 大模型基于搜索结果生成回答
3. 多模型支持
支持多种 DeepSeek 模型:
| 模型 | 说明 |
|---|---|
@tx/deepseek-ai/deepseek-r1-distill-qwen-32b | 默认模型,轻量高效 |
@tx/deepseek-ai/deepseek-r1-0528 | DeepSeek R1 正式版 |
@tx/deepseek-ai/deepseek-v3-0324 | DeepSeek V3 版本 |
4. 现代化前端
基于 Next.js 14 构建的 Chat UI:
- React 18 + TypeScript
- Tailwind CSS + Radix UI 组件
- 支持 Markdown 渲染和代码高亮
- Mermaid 图表渲染支持
技术栈
前端
- 框架:Next.js 14.2.5 (App Router)
- 语言:TypeScript 5
- 样式:Tailwind CSS 3.4
- 组件:Radix UI + Lucide Icons
- 字体:Inter (Google Fonts)
后端
- 运行环境:EdgeOne Pages Functions
- AI 推理:腾讯云 AI 接口
- 搜索服务:SearXNG
- 数据验证:Zod
开发工具
- ESLint + Prettier 代码规范
- PostCSS 样式处理
- 支持 npm/yarn/pnpm/bun
安装指南
前置要求
- Node.js >= 18
- npm >= 8 或 pnpm >= 8(推荐)
快速部署
方式一:一键部署(推荐)
点击以下按钮直接部署到 EdgeOne Pages:
方式二:本地开发
- 克隆项目
bash
git clone https://github.com/TencentEdgeOne/pages-templates.git
cd pages-templates/examples/deepseek-r1-edge- 安装依赖
bash
npm install
# 或
pnpm install- 启动开发服务器
bash
npm run dev- 访问应用
打开浏览器访问 http://localhost:3000
项目结构
text
deepseek-r1-edge/
├── app/ # Next.js App Router
│ ├── layout.tsx # 根布局
│ └── page.tsx # 主页面
├── components/ # React 组件
│ ├── ui/ # UI 基础组件
│ └── chat/ # 聊天相关组件
├── functions/ # 边缘函数
│ └── v1/chat/completions/
│ └── index.ts # AI 接口处理
├── lib/ # 工具函数
├── public/ # 静态资源
├── package.json
├── tailwind.config.ts
└── next.config.mjs核心代码解析
边缘函数实现
functions/v1/chat/completions/index.ts 是项目的核心,处理 AI 聊天请求:
typescript
export async function onRequest({ request, env }: any) {
// 处理 CORS 预检请求
if (request.method === 'OPTIONS') {
return handleOptionsRequest();
}
// 解析请求体
const json = await request.clone().json();
const parseResult = messageSchema.safeParse(json);
// 获取用户输入
const { messages, network, model } = parseResult.data;
const currentInput = messages[messages.length - 1]?.content;
// 如启用网络搜索,获取搜索结果
const { content, searchResults } = await getContent(
currentInput,
!!network
);
// 调用 AI 模型
const aiStream = await AI.chatCompletions({
model: selectedModel,
messages: processedMessages,
stream: true,
});
return new Response(aiStream, {
headers: {
'Content-Type': 'text/event-stream',
// ... 其他 headers
},
});
}网络搜索功能
typescript
async function searxngSearch(
query: string,
SEARXNG_URL = 'https://proxy.edgeone.app/search'
): Promise<SearchResult[]> {
const params = new URLSearchParams({
q: query,
format: 'json',
engines: 'bing',
});
const response = await fetch(`${SEARXNG_URL}?${params}`);
const data = await response.json();
return data?.results || [];
}搜索结果格式化
typescript
function formatSearchResults(results: SearchResult[]): string {
return results
.map((result, i) => {
const index = i + 1;
return `
[webpage ${index} begin]
Title: ${result.title}
Url: ${result.url}
Snippet: ${result.content}
[webpage ${index} end]
`;
})
.join('\n\n');
}API 使用示例
基础对话
bash
curl -X POST https://your-domain.edgeone.app/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "你好,请介绍一下自己"}
]
}'启用网络搜索
bash
curl -X POST https://your-domain.edgeone.app/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "今天的天气怎么样"}
],
"network": true
}'指定模型
bash
curl -X POST https://your-domain.edgeone.app/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "写一首关于春天的诗"}
],
"model": "@tx/deepseek-ai/deepseek-r1-0528"
}'配置说明
环境变量
项目支持以下环境变量配置:
| 变量名 | 说明 | 默认值 |
|---|---|---|
SEARXNG_URL | SearXNG 搜索服务地址 | https://proxy.edgeone.app/search |
模型选择
在请求中通过 model 参数指定模型:
json
{
"model": "@tx/deepseek-ai/deepseek-r1-distill-qwen-32b"
}可用模型列表:
@tx/deepseek-ai/deepseek-r1-distill-qwen-32b(默认)@tx/deepseek-ai/deepseek-r1-0528@tx/deepseek-ai/deepseek-v3-0324
注意事项
- 免费额度:EdgeOne Pages 提供免费额度,超出后需要升级套餐
- 网络搜索:搜索功能依赖 SearXNG 服务,可能受网络环境影响
- 模型限制:不同模型的能力和响应速度有所差异
- 流式响应:API 默认使用 SSE 流式返回,前端需正确处理
- CORS 配置:边缘函数已配置跨域支持,可直接从前端调用
相关资源
- GitHub 仓库:https://github.com/TencentEdgeOne/pages-templates/tree/main/examples/deepseek-r1-edge
- 在线演示:https://deepseek-r1-edge.edgeone.site
- EdgeOne Pages 文档:https://edgeone.ai/document/162227908259442688
- DeepSeek 官网:https://deepseek.com
- SearXNG 项目:https://github.com/searxng/searxng
总结
EdgeOne Pages AI 是一个优秀的开源项目,展示了如何在边缘计算环境中部署大语言模型。通过结合 DeepSeek R1 的强大能力和 EdgeOne 的边缘网络,开发者可以快速构建低延迟、高可用的 AI 应用。项目代码结构清晰,文档完善,适合作为学习边缘函数和 AI 集成的参考案例。
分享: