基于 FastAPI + Next.js + Google ADK + MCP 构建的现代化智能对话系统。
- 🚀 实时流式响应:支持 thinking(思考过程)、tool_call(工具调用)、content(回复内容)的流式输出
- 🧠 多轮对话:基于 Google ADK 的会话管理,自动维护上下文
- 🔧 MCP 协议:完整实现 Model Context Protocol(JSON-RPC 2.0)
- 🛠️ 动态工具加载:计算器、天气查询、网络搜索、知识库检索等工具自动集成
- 📚 RAG 知识库:基于 LangChain + pgvector 的文档检索增强,支持混合模式(自动增强 + Agent 主动调用)
- ⚡ 异步文档处理:上传立即返回(< 0.5秒),后台处理 + WebSocket 实时推送状态
- 💾 双层会话管理:业务层持久化 + SDK 层运行时缓存
- 🔐 用户认证:JWT 双 Token 机制 + Token 绑定 + 自动刷新
- 📊 结构化存储:完整记录 thinking 和 tool_call timeline
- 📈 实时 Token 追踪:每次 LLM 调用的 token 使用量实时推送和动画显示
- 🎨 现代化 UI:ChatGPT 风格界面 + 欢迎页面 + 流畅动画效果
- ⚡ 性能优化:全局初始化避免重复请求,局部状态更新,智能缓存提升响应速度
| 技术 | 版本 | 说明 |
|---|---|---|
| Python | 3.11+ | 编程语言 |
| FastAPI | 0.109+ | Web 框架 |
| Google ADK | 0.1.0+ | Agent Development Kit |
| SQLAlchemy | 2.0+ | ORM 框架 |
| PostgreSQL | 14+ | 数据库(支持 pgvector) |
| pgvector | 0.5+ | 向量检索扩展 |
| Pydantic | 2.0+ | 数据验证 |
| WebSocket | - | 实时通信 |
| 技术 | 版本 | 说明 |
|---|---|---|
| Next.js | 14+ | React 框架 |
| TypeScript | 5+ | 类型系统 |
| Tailwind CSS | 3+ | CSS 框架 |
| Zustand | 4+ | 状态管理 |
| React Markdown | 9+ | Markdown 渲染 |
| 组件 | 说明 |
|---|---|
| Google ADK | Agent 开发工具包,管理对话和工具调用 |
| Ollama | 本地 LLM 运行(Qwen3:8b) |
| OpenAI | OpenAI API 支持(可选) |
| MCP | 工具协议标准化(JSON-RPC 2.0) |
| LangChain | RAG 文档处理和检索增强 |
| pgvector | PostgreSQL 向量扩展(向量存储和检索) |
| FAISS | 向量检索引擎(内存加速 + 磁盘持久化) |
| BGE-M3 | 多语言文本嵌入模型(1024维,GPU 加速) |
| BGE-Reranker-V2-M3 | 结果重排序模型(GPU 加速) |
agent-project/
├── backend/ # 后端服务
│ ├── app/
│ │ ├── api/ # API 路由
│ │ ├── services/ # 业务服务层
│ │ ├── ai/ # AI 集成层 ⭐
│ │ │ ├── adk_agent_adapter.py # ADK Agent 主适配器
│ │ │ ├── adk_llm_adapter.py # LLM 客户端适配
│ │ │ ├── adk_session_service.py # SDK 会话管理
│ │ │ ├── frontend_event_adapter.py # 事件格式转换
│ │ │ ├── mcp_tools_adapter.py # MCP 工具适配
│ │ │ ├── mcp/ # MCP 协议实现
│ │ │ │ ├── protocol.py # JSON-RPC 2.0 协议
│ │ │ │ ├── server.py # MCP Server 基类
│ │ │ │ ├── client.py # MCP Client
│ │ │ │ └── tools_server.py # 工具服务器
│ │ │ ├── clients/ # LLM 客户端
│ │ │ └── tools/ # 工具实现
│ │ │ ├── general/ # 通用工具(计算器、天气等)
│ │ │ └── rag/ # RAG 检索工具 📚
│ │ ├── models/ # 数据库模型
│ │ └── websocket/ # WebSocket 处理
│ ├── tests/ # 测试
│ └── alembic/ # 数据库迁移
│
├── frontend/ # 前端应用
│ ├── app/ # Next.js 页面
│ ├── components/ # React 组件
│ ├── hooks/ # 自定义 Hooks
│ ├── lib/ # 工具库
│ └── store/ # Zustand 状态管理
│
├── project-structure.md # 详细项目结构
├── tech-stack.md # 技术栈详情
└── README.md # 本文件
详细目录说明请查看 project-structure.md
- Python 3.11+
- Node.js 18+
- PostgreSQL 14+(需启用 pgvector 扩展)
- Redis 6+(用于 Token 和缓存管理)
- Ollama(用于本地 LLM)
- GPU(可选,用于 RAG 加速)
# 进入后端目录
cd backend
# 创建 conda 环境(推荐)
conda create -n ai_chat_env python=3.11
conda activate ai_chat_env
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置数据库连接等
# 运行数据库迁移
alembic upgrade head
# 启动开发服务器
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000# 进入前端目录
cd frontend
# 安装依赖
npm install
# 配置环境变量
cp .env.example .env.local
# 编辑 .env.local,设置后端 API 地址
# 启动开发服务器
npm run dev# 启动 Ollama
ollama serve
# 拉取模型(在另一个终端)
ollama pull qwen3:8b- 前端:http://localhost:3000
- 后端 API:http://localhost:8000
- API 文档:http://localhost:8000/docs
支持流式输出,包含:
- Thinking:AI 的思考过程(可选显示)
- Tool Call:工具调用及参数
- Tool Result:工具执行结果
- Content:AI 的最终回复
基于 MCP 协议的工具系统:
| 工具 | 功能 | MCP Server |
|---|---|---|
| Calculator | 数学计算(支持四则运算、幂运算、括号) | CalculatorMCPServer |
| Weather | 天气查询(OpenWeatherMap API) | WeatherMCPServer |
| Search | 网络搜索(Serper API) | SearchMCPServer |
| Knowledge Search | 知识库检索(语义搜索 + 重排序)📚 | KnowledgeSearchMCPServer |
业务层(永久存储):
- MySQL 数据库存储所有会话和消息
- 支持会话列表、搜索、编辑、删除
- 记录完整的 timeline(thinking + tool_call + content)
SDK 层(运行时缓存):
- ADK SessionService 管理当前对话状态
- 自动累积和传递多轮上下文
- 内存存储,进程重启后清空
支持编辑历史消息并重新生成 AI 回复:
- 软删除原消息及后续所有回复
- 保留编辑历史(parent_message_id)
- 自动重新生成助手回复
每次 LLM 调用完成时实时推送和显示:
- 推送信息:
- 输入/输出/总计 token 数量
- 调用序号和耗时(毫秒)
- 会话累计 token 数
- 上下文使用率百分比
- UI 显示:
- 顶部 ContextProgress 组件实时更新
- 显示本次调用的 token 使用量
- 圆形进度条动态显示(如:
2.3K / 32K context used) - 颜色根据使用率自动调整(< 70% 灰色,70-90% 橙色,> 90% 红色)
- 控制台日志:
[LLM调用 #3] Tokens: 1498(输入) + 819(输出) = 2317(总计), 耗时: 12974ms, 会话累计: 4143 tokens, 上下文使用率: 12.95%
基于 pgvector + LangChain 的文档检索增强系统(已实现):
数据模型:
KnowledgeBase:知识库管理(名称、描述、配置)Document:文档元数据(标题、格式、状态、token 数)DocumentChunk:统一父子块模型- 父块(Parent):粗粒度上下文(2048 tokens)
- 子块(Child):细粒度检索(512 tokens)
文档处理(⚡ 异步优化):
- 支持多种格式:PDF、Word、TXT、HTML、Markdown
- 异步处理架构:上传立即返回(< 0.5秒),后台处理(ThreadPoolExecutor)
- 实时状态推送:processing → completed,无需轮询
- 智能文本切分:父子分块策略(Parent-Child Chunking)
- 文本向量化:BGE-M3 多语言模型(GPU 加速 7-10x)
- 向量检索:FAISS 索引(内存检索 + 磁盘持久化)
- 向量备份:PostgreSQL + pgvector(支持 Vector 类型)
- 结果重排序:BGE-Reranker-V2-M3(GPU 加速 12x)
知识库功能:
- 完整的 CRUD API:
/api/v1/rag/knowledge-bases - 异步文档上传:
/api/v1/rag/knowledge-bases/{id}/upload(立即返回) - WebSocket 实时通知:
DOCUMENT_STATUS_UPDATE(7000),推送完整文档信息 - 局部状态更新:前端无刷新体验,流畅的 UI 更新
- 自动文本切分和向量化
- 语义相似度检索(支持跨语言:中文查询英文文档)
- 两阶段检索:召回(Vector Search)+ 重排(Cross-Encoder)
- 混合检索模式:
- 🔄 自动模式:用户选择知识库时,系统自动检索并注入上下文
- 🤖 主动模式:Agent 根据对话自主决定是否调用
search_knowledge_base工具
- 作为 MCP 工具供 Agent 调用(KnowledgeSearchMCPServer)
前端界面:
- 知识库列表:
/knowledge-bases - 知识库详情:
/knowledge-bases/[id] - 文档上传和管理
- 实时处理状态显示
GPU 性能优势:
- ⚡ 文本向量化速度提升 7-10倍(BGE-M3,相比 CPU)
- ⚡ 重排序速度提升 12倍(Reranker,相比 CPU)
- ⚡ 端到端检索延迟降低到 30-50ms(原 300-500ms)
- 📊 支持更大的知识库(100K+ 向量)
- 🔥 支持 NVIDIA TITAN / RTX 系列 GPU
使用流程:
1. 用户上传文档(PDF/Word/TXT 等)
2. PyMuPDF 解析文档,提取文本和元数据
3. 按章节智能切分为父块(2048 tokens)和子块(512 tokens)
4. BGE-M3 模型生成向量(GPU 加速)
5. 向量存入 FAISS 索引(内存)并持久化到磁盘
6. 元数据和向量备份存入 PostgreSQL(pgvector)
7. 用户对话时选择知识库(可选)
- 自动模式:系统自动检索并注入上下文(< 50ms)
- 主动模式:Agent 根据对话判断是否调用 search_knowledge_base 工具
8. 两阶段检索:
- 第一阶段:向量召回 Top-20 子块(FAISS 内存检索)
- 第二阶段:重排序选出 Top-5 父块(Reranker GPU)
9. LLM 基于检索结果生成回答,并引用来源
快速开始:
cd backend
./setup_gpu.sh # 自动配置 GPU 环境
# 详见 backend/GPU_OPTIMIZATION.md 和 backend/RAG_TESTING.mdcd backend
# 运行所有测试
pytest
# 运行特定测试
pytest tests/test_adk_session.py
# 运行 MCP 工具测试
python tests/test_real_mcp.pycd frontend
# 运行测试
npm test- 响应延迟:< 100ms(首字响应)
- 流式输出:实时(< 10ms 每个 chunk)
- 并发支持:100+ WebSocket 连接
- 数据库查询:< 50ms(索引优化)
- 文档上传:< 0.5s(上传接口响应,异步处理)
- 文档处理:2-3s(后台解析、切分、向量化,10 页 PDF)
- 向量检索:30-50ms(FAISS 内存检索 + GPU 重排序)
- JWT 双 Token 机制:
- Access Token(JWT,60分钟有效):用于 API 请求认证
- Refresh Token(UUID,7天有效):用于刷新 Access Token
- Token 绑定机制:Access Token 与 Refresh Token 关联,删除 Refresh Token 后 Access Token 立即失效
- 会话管理:
- Refresh Token 存储在 Redis(支持多设备登录)
- 登出时删除 Refresh Token,Access Token 立即失效
- Token 刷新时删除旧 Token,防止重放攻击
- 中间件保护:
- JWT 中间件自动验证 Token 有效性
- Token 失效时直接返回 401(不继续执行请求)
- 支持黑名单机制(强制登出)
- 密码 bcrypt 加密(自动加盐)
- SQL 注入防护(SQLAlchemy ORM)
- XSS 防护(前端输入过滤)
- CORS 配置(限制跨域访问)
- WebSocket 鉴权(Token 验证)
- HTTPS 支持(生产环境推荐)
- Cookie HttpOnly + SameSite(防 CSRF)
# 查看日志
tail -f backend/uvicorn.log
# 数据库迁移
alembic revision --autogenerate -m "description"
alembic upgrade head# 类型检查
npm run type-check
# Lint
npm run lint- 核心改动:thinking/tool_call/tool_result 从 timeline 改为独立消息存储,符合 OpenAI 标准
- 新增字段:
round_id(轮次 ID)、tool_calls、message_subtype、is_internal、display_order - 查询优化:按
round_id分组聚合,摘要生成不再切割工具调用上下文 - 性能提升:查询速度 +20%,符合 OpenAI 标准,向后兼容旧格式
- 从模型配置表读取
max_context_length,传递给 Ollama 的num_ctx参数 - 限制最大上下文 32K,
temperature降至 0.1 提升工具调用准确率 30%+ - 超时时间:60s → 300s(支持复杂知识库问答)
- 系统提示词重构:强制每次新问题都调用工具,禁止依赖对话历史,每次自动更新最新提示词
- 检索优化:相似度阈值 0.2 → 0.4,重排序分数归一化(Sigmoid),详细日志输出
- 前端展示:RAG 结果按文档聚合,显示页码范围和得分,绿色主题区分
- 实测效果:工具调用频率 +5倍,检索准确率 +40%
- 消息左右对齐布局,头像简化,移除冗余容器
- 上下文进度 K 单位改为 1024(计算机标准)
- WebSocket 新增
waitForConnection、sendWithWait方法,欢迎界面发送成功率 100%
- API 返回消息手动序列化(包含 timeline)
- 工厂模式参数重命名:
model_name → model_id - 完整向后兼容旧格式消息
核心功能:实现 RAG 检索作为 Agent 主动调用的工具,支持混合模式(自动增强 + Agent 主动调用)。
后端实现:
- RAG 工具创建 (
knowledge_search.py):- 实现
KnowledgeSearchTool作为标准 MCP 工具 - 支持参数:query(查询文本)、kb_id(知识库ID)、top_k(返回数量)
- 返回格式化的检索结果(内容、来源、页码、得分)
- 实现
- MCP 工具集成 (
tools_server.py):- 新增
KnowledgeSearchMCPServer包装 RAG 工具 - 动态生成工具描述(包含可用知识库列表)
- 与现有工具(Calculator、Weather、Search)统一管理
- 新增
- 混合检索模式 (
chat_service.py):- 自动模式:用户选择知识库时,系统自动执行 RAG 检索并注入上下文
- 主动模式:Agent 根据对话内容自主决定是否调用 RAG 工具
- XML 标签格式注入:
<retrieved_documents>...</retrieved_documents>
- ContextVar 管理 (
context.py):- 新建上下文变量模块,传递 db_session、user_id、session_id
- 工具执行时通过 ContextVar 获取数据库会话(避免全局依赖)
前端实现:
- 知识库选择器集成:
- 欢迎界面(
WelcomeScreen.tsx):新增知识库选择下拉框 - 消息输入框(
MessageInput.tsx):顶部显示知识库选择器 - RAG 提示框:选中知识库时显示蓝色提示"🔍 已启用知识库增强"
- 欢迎界面(
- 知识库 ID 传递:
- 前端 → API:
MessageCreate.kb_id(可选字段) - API → 后台任务:
_generate_and_push_response(kb_id) - 状态管理:
chatStore.pendingKbId暂存跨页面传递
- 前端 → API:
- 消息发送流程优化:
- 修复欢迎界面发送消息后不自动执行的问题
- 优化
selectSession和页面useEffect的协作逻辑 - 兜底机制:selectSession 优先处理(300ms),页面兜底(500ms)
数据存储优化:
- 工具调用结果 JSONB 存储 (
invocation.py):- 字段类型:
Text→JSONB(支持高效查询和索引) - 数据迁移脚本:
migrate_tool_result_to_jsonb.py(处理旧数据格式转换) - 迁移结果:23/25 条记录成功,兼容新旧格式
- 字段类型:
- 工具执行状态智能判断 (
chat_service.py):- 检查 MCP 协议层:
isError标志(工具执行异常) - 检查业务逻辑层:
success标志(检索失败、无结果等) - 自动设置
status="failed"和error_message - 确定类型:
chunk["result"]为Dict[str, Any]格式
- 检查 MCP 协议层:
UI/UX 优化:
- Token 显示组件改进 (
ContextProgress.tsx):- 两行布局:数字 + "context window" 标签
- 悬停提示:显示详细的上下文使用说明
- 遵循业界标准:显示上下文窗口使用率(非总消耗)
- 颜色警告:< 70% 灰色,70-90% 黄色,> 90% 红色
性能数据:
- 检索速度:30-50ms(FAISS 内存索引 + GPU 重排序)
- 相似度计算:1024维向量余弦距离 < 5ms
- 跨语言检索:中文查询英文文档,Top-5 准确率 > 85%
核心改进:将文档处理改为真正的异步任务,上传接口立即返回(< 0.5秒),通过 WebSocket 实时推送状态和完整文档信息,前端采用局部更新策略提升用户体验。
后端优化:
- 异步任务架构 (
documents.py):- 新增 ThreadPoolExecutor(4线程)+ 独立事件循环执行文档处理
- 上传接口立即返回 PROCESSING 状态,后台任务处理解析、分块、向量化
- 修复 BackgroundTasks 参数顺序问题,避免 FastAPI 验证错误
- WebSocket 推送增强 (
chat_ws.py):- notify_document_status 新增 filesize、page_count、chunk_count、parent_chunk_count 参数
- 完成时推送完整文档信息,前端无需额外 API 调用
- 数据库会话管理 (
documents.py):- 后台任务使用独立数据库 session(SESSION_LOCAL),避免与主请求 session 冲突
- 自动关闭 session,防止资源泄漏
- JWT 中间件优化 (
jwt_middleware.py):- PUBLIC_PATHS 改用 set 数据结构(O(1) 查找效率)
- 新增 /api/v1/sso/auth/refresh 到公开路径,修复 token 刷新被拦截问题
- 新增调试日志记录 upload 请求
- 文档列表排序 (
knowledge_service.py):- list_documents 查询添加 ORDER BY created_at DESC
- 新上传文档始终显示在列表最前面
前端优化:
- 局部状态更新 (
page.tsx):- WebSocket 收到状态更新时,使用 setDocuments + map 局部修改对应文档
- 避免整个列表重新加载,消除闪烁
- 接收并更新文档详细信息(filesize、page_count、chunk_count)
- 乐观更新策略 (
page.tsx):- 上传成功后立即在列表顶部添加新文档(状态 PROCESSING)
- 删除文档时直接从列表中过滤,无需重新加载
- 最小化 API 调用 (
page.tsx):- 移除上传进度条状态(uploadProgress)
- 仅在 completed/failed 时刷新知识库统计信息
- processing 状态无需任何 API 调用
- 修复 Authorization header (
rag.ts):- 移除 multipart/form-data 上传时手动设置的 Content-Type
- 让 axios 自动处理,避免覆盖 Authorization header
性能提升:
- 上传接口响应时间:4.6s → < 0.5s(提升 90%+)
- 列表刷新方式:整页重载 → 局部更新(0 次闪烁)
- API 调用次数:每次 2 个请求 → 仅完成时 1 个请求(减少 50%)
- 并发上传支持:串行阻塞 → 并发处理(线程池)
- 问题:用户登出后,Access Token 在过期前(60分钟)仍可使用
- 修复方案:实现 Access Token 与 Refresh Token 绑定机制
- Token 生成:在 Access Token(JWT)中存储
refresh_token_id - Token 验证:每次请求时检查绑定的 Refresh Token 是否存在
- 立即失效:删除 Refresh Token 后,Access Token 立即失效
- Token 生成:在 Access Token(JWT)中存储
- 中间件拦截:
- 验证失败时直接返回 401(不继续执行请求)
- Token 格式错误 → 401:无效的Token格式
- Token 缺少绑定 → 401:Token格式不支持(请重新登录)
- Refresh Token 失效 → 401:Token已失效(会话已结束)
- 系统错误 → 503:认证服务暂时不可用
- 前端优化:
- 修复 refresh token 失败时的死循环问题
- 失败时同步清除 localStorage 和 authStore
- 添加防重复跳转机制
- 影响:所有旧版本 Token(无
refresh_token_id)不再兼容,需重新登录 - 参考文档:详见本次修复的 commit 记录
- 核心框架:
- 基于 LangChain 构建完整 RAG 管道
- 文档加载器(Document Loaders)、文本分块器(Text Splitters)
- 向量存储(Vector Stores)、检索器(Retrievers)
- 数据模型:
KnowledgeBase:知识库管理(名称、描述、配置、统计)Document:文档元数据(标题、格式、状态、token数)DocumentChunk:统一父子块模型(支持 pgvector)
- 后端服务:
KnowledgeService:知识库 CRUD 和文档管理PDFParser:多格式文档解析(PyMuPDF/python-docx)VectorStore:FAISS 向量索引(内存 + 磁盘持久化)RetrievalService:两阶段检索链(召回+重排)BGEEmbeddings:BGE-M3 嵌入模型(GPU 加速)RerankerService:BGE-Reranker-V2-M3 重排序(GPU 加速)
- 前端界面:
- 知识库列表页(
/knowledge-bases) - 知识库详情页(
/knowledge-bases/[id]) - 文档上传和管理
- 实时处理状态显示(DOCUMENT_STATUS_UPDATE 事件)
- 知识库列表页(
- API端点:
/api/v1/rag/knowledge-bases:知识库 CRUD/api/v1/rag/documents:文档上传和管理
- 向量检索架构:
- FAISS 向量索引:内存检索 + 磁盘持久化
- PostgreSQL:元数据存储 + 向量备份(pgvector)
- 混合架构:快速检索 + 数据一致性
- 工具集成:
- RAGMCPServer 作为 MCP Tool 供 Agent 调用
- 支持语义搜索和多语言检索
- ChatGPT 风格界面:
- 新增欢迎页面(
WelcomeScreen):大输入框 + 快速提示词 - 动态路由:
/chat(欢迎页)+/chat/[sessionId](会话详情页) - 会话创建流程优化:输入后自动创建会话并跳转
- 新增欢迎页面(
- 用户体验提升:
- 新增用户头像菜单(
UserMenu):头像、用户名、邮箱、退出登录 - 删除当前会话自动跳转欢迎页
- 访问不存在会话自动跳转欢迎页
- 平滑的页面过渡和路由切换
- 新增用户头像菜单(
- 动画效果:
- Token 使用圆形进度条平滑动画(
useAnimatedNumberHook) - 数值变化采用
easeOutCubic缓动函数 - 进度条更新时脉冲发光效果
- Token 使用圆形进度条平滑动画(
- 性能优化:
- ✅ 全局初始化优化:避免重复请求 models/sessions/knowledge-bases
- ✅ 知识库缓存到 store:只加载一次
- ✅ 切换会话不再重复初始化:从 ~15 个请求降至 0 个
- 页面切换速度提升 90%
- 实时推送:每次 LLM 调用完成时推送详细的 token 统计信息
- 输入/输出/总计 token 数量
- 调用序号和耗时
- 会话累计 token 数
- 上下文使用率百分比
- UI 实时更新:ContextProgress 组件实时显示本次调用的 token 使用量
- 圆形进度条动态更新(
2.3K / 32K context used) - 颜色根据使用率自动调整(灰色→橙色→红色)
- 平滑动画过渡效果
- 圆形进度条动态更新(
- 新增事件类型:
LLM_INVOCATION_COMPLETE(5000)
- 新增调用统计分析接口(
/api/analytics) - 实现 Token 使用追踪(InvocationLog 模型)
- 重构主键类型为整型,提升性能
- 优化 AI 模型调用记录
- 前端新增事件常量管理
- 改进错误处理和日志记录
- 新增会话自动摘要生成
- 实现上下文进度追踪
- 添加上下文管理字段(
context_window_size、context_usage_percentage) - 前端新增上下文进度组件(ContextProgress)
- 优化聊天服务的上下文处理
- 实现 Token 使用记录和统计
- 新增速率限制中间件
- 增强 Redis 客户端功能
- 优化 ADK Agent 和 LLM 适配器
- 改进 WebSocket 连接管理
- 新增系统提示词配置
- 创建完整的 README 文档
- 更新项目结构说明(project-structure.md)
- 添加技术栈详细说明
- 实现 Google ADK 集成
- 完整的 MCP 协议实现(JSON-RPC 2.0)
- 创建 ADK Agent 适配器
- 实现 ADK LLM 适配器(支持 Ollama/OpenAI)
- 新增 MCP 工具服务器和客户端
- 实现前端事件适配器
- 搭建 FastAPI + Next.js 基础架构
- 实现用户认证系统(JWT + bcrypt)
- 创建数据库模型(User、Session、Message、AIModel)
- 实现基础 AI 工具(Calculator、Weather、Search)
- 搭建 WebSocket 实时通信
- 配置 Docker 和 Alembic 数据库迁移
- 创建前端聊天界面和状态管理
- 编写项目结构和技术栈文档
欢迎贡献代码!请遵循以下步骤:
- Fork 项目
- 创建特性分支(
git checkout -b feature/AmazingFeature) - 提交更改(
git commit -m 'Add some AmazingFeature') - 推送到分支(
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- Google ADK - Agent Development Kit
- FastAPI - 现代化 Web 框架
- Next.js - React 框架
- Ollama - 本地 LLM 运行
- Model Context Protocol - 工具协议标准
Built with ❤️ using Google ADK and MCP