网站首页 > 精选文章 正文
在线演示
AI智能体搭建演示:
http://yes-ai-agent-demo.yesapi.cn/
YesAI智能体 - 在线文档:
http://ai-agent.yesdev.cn/docs
文档
这是一个完整的AI智能体聊天应用,包含前端和后端服务。后端基于 Node.js、Express、TypeScript 和 Prisma ORM 构建,前端使用 Next.js 和 Ant Design。它提供用户认证、会话管理和与多个 AI 提供商(DeepSeek、通义千问)的集成。
目录
- 功能特性
- 技术栈
- 开发环境设置
- 生产环境部署使用 Docker 部署Nginx 配置服务器管理命令
- 环境变量
- API文档
功能特性
- 用户认证(注册、登录)
- 会话管理(创建、重命名、删除)
- 消息管理
- 与多个 AI 提供商集成(DeepSeek、通义千问)
- 支持流式响应
- (持续迭代升级中)
技术栈
后端
- 框架: Express.js
- 语言: TypeScript
- 数据库: MySQL
- ORM: Prisma
- 认证: JWT
- AI 集成: DeepSeek API, 通义千问 API
前端
- 框架: Next.js
- UI 库: Ant Design
- 语言: TypeScript
- 状态管理: React Context API
开发环境设置
温馨提示:请先联系我们获取源代码。
- 克隆仓库
git clone <repository-url>
cd <repository-name>/server
- 安装依赖
# node 版本 18
node -v
v18.20.4
npm install -g pnpm
- 配置环境变量
复制 .env.example 文件为 .env 并填写必要的配置:
cp .env.example .env
- 数据库迁移
npx prisma migrate dev
- 启动开发服务器
pnpm dev
服务器将在 http://localhost:8003 上运行。
生产环境部署
1. 使用部署脚本(推荐)
我们提供了一个简单的部署脚本,可以自动完成所有部署步骤:
# 给脚本执行权限
chmod +x deploy.sh
# 运行部署脚本
./deploy.sh
这个脚本会:
- 检查Node.js和pnpm是否安装
- 安装项目依赖
- 配置环境变量
- 构建应用
- 使用PM2(如果已安装)或nohup启动应用
2. 常规部署方式
手动部署步骤
服务器使用docker,
# 服务器,提前准备好放置的目录
# 进入你的 服务器
# pwd
/yesapi/www/wwwroot/yes-ai-agent/yes-ai-agent-demo-server.yesapi.cn
# 本地,电脑,先打包发布推送到服务器
./deploy.sh
# 拉取镜像(首次安装)
docker pull node:18-alpine3.21
# 查看
docker image ls | grep node
# 启动别名
cd /yesapi/www/wwwroot/yes-ai-agent/yes-ai-agent-demo-server.yesapi.cn
docker run -it -d --name yes-ai-agent-demo-server -p 8003:8003 \
-v $(pwd):/app \
-w /app \
--network docker_app_network \
node:18-alpine sh
# 进入容器
docker exec -it yes-ai-agent-demo-server /bin/sh
# 容器内的操作
/app # node -v
v18.20.8
# 进行项目初始化(首次安装)
/app # sh ./deploy-server.sh
# 宿主测试接口
curl http://localhost:8003/api/chat/models
# 外部接口测试
curl http://yes-ai-agent-demo-server.yesapi.cn/api/chat/models
使用 Docker 部署
这种部署方式使用 Node.js 官方 Docker 镜像,适合小型到中型项目,部署过程简单直观。
特别注意:以下方式,卡在了本地构建失败,暂时未采用。
- 准备部署文件
参考项目根目录创建 Dockerfile。
- 构建和运行
# 构建 Docker 镜像
docker build -t yes-ai-chat-server .
# 运行容器
docker run -d \
--name yes-ai-chat-server \
-p 8003:8003 \
-v $(pwd)/.env:/app/.env \
yes-ai-chat-server
项目已经配置好了 Docker 和 Docker Compose 文件,可以直接使用。
- 准备环境变量文件
为后端创建环境变量文件:
cp .env.production.example .env.production
# 编辑 .env.production 文件,填写实际配置
为前端创建环境变量文件:
cp apps/web/.env.production.example apps/web/.env.production
# 编辑 apps/web/.env.production 文件,填写实际配置
- 构建和启动 Docker 容器
# 构建和启动所有服务
docker-compose up -d --build
# 只构建和启动后端服务
docker-compose up -d --build mysql server
# 只构建和启动前端服务
docker-compose up -d --build web
- 执行数据库迁移
docker-compose exec server npx prisma migrate deploy
Nginx 配置
为了在生产环境中使用 Nginx 作为反向代理,需要配置前端和后端服务。创建以下配置文件:
后端配置 (api.yourdomain.com)
server {
listen 80;
server_name yes-ai-agent-demo-server.yesapi.cn;
# API 代理
location / {
# 处理 OPTIONS 预检请求
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' 'http://yes-ai-agent-demo.yesapi.cn';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, Accept';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Max-Age' 86400;
add_header Content-Length 0;
add_header Content-Type text/plain;
return 204;
}
# CORS 响应头(简化重复头)
# 改为.env里面配置
# add_header 'Access-Control-Allow-Origin' 'http://yes-ai-agent-demo.yesapi.cn' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, Accept' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
# 安全头(合并到 location 块)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Content-Type-Options nosniff always;
add_header X-Frame-Options DENY always;
add_header X-XSS-Protection "1; mode=block" always;
# 代理配置(关键修复点)
proxy_pass http://localhost:8003/api/; # 末尾添加斜杠 /,确保路径正确传递
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# 日志配置
access_log /var/log/nginx/yes-ai-agent-demo-server.yesapi.cn.access.log;
error_log /var/log/nginx/yes-ai-agent-demo-server.yesapi.cn.error.log;
}
环境变量
后端环境变量
以下是后端服务使用的环境变量列表:
变量名 | 描述 | 默认值 |
DATABASE_URL | 数据库连接字符串 | - |
PORT | 服务器端口 | 8003 |
JWT_SECRET | JWT 签名密钥 | - |
DASHSCOPE_API_KEY | DeepSeek API 密钥 | - |
BAILIAN_API_KEY | 通义千问 API 密钥 | - |
CORS_ORIGIN | 允许的 CORS 来源 | http://localhost:8000 |
前端环境变量
以下是前端应用使用的环境变量列表:
变量名 | 描述 | 默认值 |
NEXT_PUBLIC_API_URL | 后端 API 的基础 URL | http://localhost:8003 |
Docker Compose 环境变量
以下是 Docker Compose 使用的额外环境变量:
变量名 | 描述 | 默认值 |
MYSQL_ROOT_PASSWORD | MySQL root 用户密码 | - |
MYSQL_DATABASE | MySQL 数据库名称 | ai_chat_db |
MYSQL_USER | MySQL 应用用户名 | ai_chat_user |
MYSQL_PASSWORD | MySQL 应用用户密码 | - |
API 文档
认证
注册用户
POST /api/users/register
请求体:
{
"username": "user123",
"password": "password123"
}
用户登录
POST /api/users/login
请求体:
{
"username": "user123",
"password": "password123"
}
会话管理
获取会话列表
GET /api/sessions?userId=123
创建会话
POST /api/sessions
请求体:
{
"userId": 123,
"name": "新会话"
}
重命名会话
PATCH /api/sessions/:id
请求体:
{
"name": "新名称"
}
删除会话
DELETE /api/sessions/:id
消息管理
获取消息列表
GET /api/messages?sessionId=123
发送消息
POST /api/messages
请求体:
{
"sessionId": 123,
"role": "user",
"content": "你好,AI助手"
}
AI 聊天
发送聊天请求
POST /api/chat
请求体:
{
"messages": [
{
"role": "user",
"content": "你好,AI助手"
}
],
"model": "deepseek-chat",
"stream": true
}
获取可用模型
GET /api/chat/models
- 上一篇: 自动消防水炮的快速部署能力
- 下一篇: Gonets与Geoscan携手测试无人机“穹顶通信”技术
猜你喜欢
- 2025-05-25 降本增效与生态共建:iVX 统一研发基座的高校信息化综合收益
- 2025-05-25 零代码,物联网场景,拖拉拽方式进行业务逻辑开发
- 2025-05-25 电商OMS系统的核心价值与三大电商OMS系统推荐
- 2025-05-25 PLC 替代方案:工控一体机厂家聚徽解码软逻辑控制技术实践
- 2025-05-25 Docker与Redis:轻松部署和管理你的Redis实例
- 2025-05-25 Joker 智能开发平台如何重新定义全栈开发
- 2025-05-25 Gonets与Geoscan携手测试无人机“穹顶通信”技术
- 2025-05-25 自动消防水炮的快速部署能力
- 2025-05-25 水陆空全面发力,河南内外贸通路建设再上台阶
- 2025-05-25 嘉银科技推出“伏羲”模型管理平台,模型部署效率大幅提升
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)