这是一个结合了AI聊天界面和GeoGebra几何画板的交互式数学学习平台。用户可以通过自然语言与AI交互,AI会智能解析用户需求并在GeoGebra画板上绘制相应的数学图形。(正在完善中···)
观看完整演示动图了解平台功能
- 🤖 智能AI对话: 支持自然语言描述几何图形和数学概念
- 📐 GeoGebra集成: 完整嵌入GeoGebra几何画板,支持所有绘图功能
- 🎯 双模式绘图:
- 简单模式: 快速绘制基础几何图形
- 智能规划模式: 复杂图形的分步骤智能规划与执行
- 🔄 实时交互: 流式响应,实时显示AI思考过程
- 🌐 容器化部署: 基于Docker的完整部署方案
- 📱 响应式设计: 支持桌面和移动设备
cartesian-ai/
├── frontend/ # Next.js 前端应用
│ ├── src/
│ │ ├── app/ # Next.js App Router
│ │ ├── components/ # React组件
│ │ │ ├── ChatPanel.tsx # 聊天面板
│ │ │ ├── GeoGebraPanel.tsx # GeoGebra画板
│ │ │ ├── MessageDisplay.tsx # 消息显示
│ │ │ └── PlanningStepsDisplay.tsx # 规划步骤显示
│ │ ├── services/ # API服务层
│ │ └── types/ # TypeScript类型定义
│ ├── public/
│ │ └── geogebra/ # GeoGebra静态资源
│ └── package.json
│
├── backend/ # Flask 后端服务
│ ├── app.py # Flask应用入口
│ ├── routes.py # API路由定义
│ ├── services.py # 核心业务逻辑
│ ├── models.py # 数据模型
│ ├── prompts.py # AI提示词模板
│ ├── config.py # 配置管理
│ └── requirements.txt # Python依赖
│
├── nginx/ # Nginx反向代理
│ ├── nginx.conf # Nginx配置
│ └── Dockerfile
│
├── docker-compose.yml # Docker编排配置
└── demo.mp4 # 演示视频
-
克隆项目
git clone <repository-url> cd cartesian-ai
-
配置环境变量
cp backend/.env.example .env # 编辑 .env 文件,配置 OpenAI API Key -
启动服务
docker-compose up -d
-
访问应用
-
进入后端目录
cd backend -
安装依赖
pip install -r requirements.txt
-
配置环境变量
cp .env.example .env # 编辑 .env 文件,配置必要的环境变量 -
启动后端服务
python app.py
-
进入前端目录
cd frontend -
安装依赖
npm install
-
启动开发服务器
npm run dev
-
访问应用
- 一次性处理用户输入,快速生成几何图形
- 支持基础几何图形:点、线、圆、多边形等
- 支持数学函数:显式函数、参数方程、隐函数等
- 复杂图形的分步骤智能规划
- 实时显示AI思考过程
- 流式执行,逐步构建复杂图形
- 支持画板状态管理和对象追踪
- 基础几何: 点、直线、线段、射线、圆、椭圆
- 多边形: 三角形、四边形、正多边形
- 函数图像: 一次函数、二次函数、三角函数、指数函数
- 参数方程: 圆的参数方程、椭圆参数方程等
- 隐函数: 圆锥曲线的一般方程
- 分段函数: 条件函数、绝对值函数等
用户: "画一个圆心在原点,半径为5的圆"
AI: 执行命令 Circle((0, 0), 5)
用户: "绘制函数 y = x² - 2x + 1 的图像"
AI: 执行命令 f(x) = x^2 - 2*x + 1
用户: "画一个正六边形,并标出所有顶点"
AI: 智能规划模式,分步骤创建正六边形和顶点标注
- 框架: Next.js 15.4.3 (React 19.1.0)
- 语言: TypeScript 5
- 样式: Tailwind CSS 4
- 图标: Lucide React
- 构建工具: SWC
- 框架: Flask 2.3.3
- 语言: Python 3.x
- AI集成: LangChain + OpenAI API
- 数据验证: Pydantic 2.5.0
- 跨域支持: Flask-CORS
- 容器化: Docker + Docker Compose
- 反向代理: Nginx
- 几何引擎: GeoGebra JavaScript API
在项目根目录创建 .env 文件:
# OpenAI API 配置
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4
OPENAI_TEMPERATURE=0.7
OPENAI_MAX_TOKENS=2000
# 服务配置
FLASK_ENV=production
FLASK_HOST=0.0.0.0
FLASK_PORT=5001
# 前端配置
PUBLIC_API_URL=http://nginx
PUBLIC_WS_URL=ws://nginx
NEXT_PUBLIC_APP_NAME=Cartesian AI
NEXT_PUBLIC_APP_VERSION=1.0.0POST /api/simple-draw
Content-Type: application/json
{
"user_input": "画一个圆"
}POST /api/intelligent-plan
Content-Type: application/json
{
"user_input": "创建一个复杂的几何图形"
}GET /health项目提供完整的Docker化部署方案:
- frontend: Next.js应用容器
- backend: Flask API服务容器
- nginx: 反向代理和静态文件服务
所有服务通过docker-compose编排,支持一键部署。
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
