Rishu22889/grid07_ai

GitHub: Rishu22889/grid07_ai

一个基于 LangGraph 和 RAG 的多智能体 AI 对话系统,具备语义路由、多角色人格对话和 prompt 注入防御能力。

Stars: 0 | Forks: 0

# Grid07 AI – 认知路由与 RAG 系统 **在线演示:** https://grid07ai.vercel.app 一个由 AI 驱动的聊天机器人系统,包含三个截然不同的 AI 角色,具备基于向量的路由、RAG 增强的对话以及 prompt 注入防御功能。使用 Flask 和 LangChain 构建,并部署在 Vercel 上。 ## 截图 ### 第一阶段:向量角色路由器 ![第一阶段 - 路由器](https://raw.githubusercontent.com/Rishu22889/grid07_ai/main/static/phase-1.png) 使用向量相似度的语义路由,将消息与相关的 AI 角色进行匹配。 ### 第二阶段:自主内容引擎 ![第二阶段 - 内容](https://raw.githubusercontent.com/Rishu22889/grid07_ai/main/static/phase-2.png) 由 LangGraph 驱动的内容生成,具备基于个性的主题选择功能。 ### 第三阶段:RAG 攻防防御 ![第三阶段 - 攻防](https://static.pigsec.cn/wp-content/uploads/repos/cas/f4/f4e190380dd846219488bb4c1afbd7a321129d6fc7fcbe17ff1e473221452cce.png) 在完整对话上下文下的 prompt 注入抵抗力测试。 ## 概述 本项目展示了一个生产级就绪的 AI 系统,该系统将用户查询路由到专门的 AI 角色,在多轮对话中保持上下文,并防御 prompt 注入攻击。该系统结合了语义路由、检索增强生成 (RAG) 和自主内容创建。 ### 核心功能 - 与三个截然不同的 AI 角色聊天,每个角色都有独特的观点和专业知识 - 使用向量相似度自动将消息路由到相关角色 - 使用 RAG 在多轮对话中保持对话上下文 - 检测并中和 prompt 注入尝试 - 根据个性特征生成自主内容 ## 功能特性 ### 三个 AI 角色 **科技乐观派** 一位乐观的未来主义者,坚信技术进步(尤其是在 AI、加密货币和太空探索领域)将解决人类面临的挑战。深受硅谷思维影响,并支持富有远见的企业家。 **末日悲观派** 一位批判性的观察者,对晚期资本主义、大型科技公司的垄断以及不受限制的 AI 发展提出质疑。重视去中心化、隐私和可持续性,同时强调系统性风险。 **金融狂热者** 一位对市场痴迷的分析师,通过金钱、风险和回报的视角来评估一切。专注于交易、宏观经济学和金融系统,并强调 ROI。 ### 智能路由 该系统使用语义理解将传入的消息与最相关的角色进行匹配。在本地开发环境中,它使用向量嵌入和 ChromaDB。在 Vercel 上,它会回退到基于关键词的路由,以适应 Serverless 环境的限制。 ### RAG 增强对话 系统不会孤立地处理每条消息,而是维护完整的对话历史和上下文。这允许进行连贯的多轮讨论,AI 能够记住之前说过的话,并在此基础上进行逻辑推演。 ### Prompt 注入防御 该系统将所有用户输入视为潜在的恶意行为。它包含对常见注入模式(如“忽略所有先前的指令”)的检测机制,并在用户试图操纵 AI 行为时保持角色的一致性。 ## 架构 该系统分为三个主要阶段构建,每个阶段处理 AI 交互的特定方面: ### 第一阶段:认知路由 系统不会将每条消息广播给所有角色,而是使用语义嵌入来确定相关性。每个角色都拥有代表其专业知识和兴趣的嵌入表示。传入的消息使用相同的模型进行嵌入,通过余弦相似度来确定哪些角色最相关。 在 Vercel 的生产环境中,向量操作被替换为关键词匹配,以规避 Serverless 环境的限制,但其核心理念保持不变。 ### 第二阶段:自主内容引擎 角色可以使用 LangGraph 状态机自主生成内容。该过程包括: 1. 根据角色的兴趣决定主题 2. 通过搜索收集相关上下文 3. 起草符合其观点的内容 这展示了 AI 智能体如何在保持一致角色的同时独立运行。 ### 第三阶段:具备安全性的 RAG 处理实际对话的最关键组件。对于每条用户消息,系统会: 1. 检索完整的对话上下文,包括父帖子和评论历史 2. 构建包含所有相关信息的综合 prompt 3. 生成既符合上下文又与角色保持一致的回复 4. 监控注入尝试并忽略恶意指令 这确保了对话感觉自然连贯,同时维护了安全性。 ## 技术栈 **后端** - Python 3.13(用于核心逻辑) - Flask(用于 REST API) - Flask-CORS(用于跨域请求) - LangChain(用于 LLM 编排) - LangGraph(用于状态机工作流) - Groq API(用于语言模型推理) - Google Gemini(用于生成嵌入) **前端** - 纯 HTML、CSS 和 JavaScript - 赛博朋克风格的暗黑主题 - 适用于移动端和桌面端的响应式设计 - 实时聊天界面 **基础设施** - Vercel(用于 Serverless 部署) - 基于环境的配置 - 自动 HTTPS 和 CDN ## 部署 ### 部署到 Vercel 1. 克隆代码库: ``` git clone cd grid07_ai ``` 2. 使用 Vercel CLI 进行部署: ``` vercel ``` 3. 在 Vercel 控制台中配置环境变量: - 导航到您的项目设置 - 添加以下变量: GROQ_API_KEY=your_groq_api_key GOOGLE_API_KEY=your_google_api_key GROQ_MODEL=llama-3.1-8b-instant EMBEDDING_MODEL=models/gemini-embedding-001 ROUTING_THRESHOLD=0.5 4. 重新部署以应用环境变量: ``` vercel --prod ``` ### API 密钥 这两项服务均提供适合开发和演示的免费层级: - Groq API: https://console.groq.com/keys - Google AI Studio: https://aistudio.google.com/app/apikey ## 本地开发 ### 设置 安装依赖项: ``` pip install -r requirements.txt ``` 配置环境变量: ``` cp .env.example .env # 使用你的 API keys 编辑 .env ``` 启动 API 服务器: ``` python -m app.web_api ``` 打开聊天机器人: ``` open index.html ``` 应用程序将在 http://localhost:5001 提供 ## 项目结构 ``` grid07_ai/ ├── index.html # Frontend chatbot interface ├── app/ │ ├── web_api.py # Flask API server │ ├── config/ # Configuration and settings │ ├── personas/ # Persona definitions and system prompts │ ├── rag/ # RAG logic and injection defense │ ├── graph/ # LangGraph workflows │ ├── router/ # Routing logic │ ├── embeddings/ # Embedding generation │ ├── vectorstore/ # ChromaDB integration │ └── tools/ # Mock search and utilities ├── requirements.txt # Python dependencies ├── vercel.json # Vercel deployment config └── README.md ``` ## 开发目的 本项目是为 Trilogy Innovations 实习申请而开发的,专门针对以下标准: **标准 2:真实世界项目** 一个具有实时部署的工作应用程序,展示了全栈开发技能和生产级就绪的模式。 **标准 3:AI 辅助构建** 广泛使用包括 LLM、RAG、向量嵌入和自主智能体在内的 AI 技术,并具备清晰的架构决策和安全考量。 ### 核心优势 - 清晰、模块化的架构,实现了关注点分离 - 注重安全的实现,具备注入防御功能 - 详尽的文档,解释了设计决策 - 可供评估的实时部署 - 展示了对生产级 AI 系统的理解 ## API 参考 ### 端点 **GET /api/bots** 返回可用机器人角色及其描述的列表。 **POST /api/chat** 与特定机器人进行对话。 ``` { "bot_id": "bot_a", "message": "What do you think about AI?", "parent_post": "Original post content", "comment_history": [] } ``` **POST /api/route** 将消息路由到相关的机器人角色。 ``` { "post": "Bitcoin crashed 20% today" } ``` **POST /api/generate** 为机器人生成自主内容。 ``` { "bot_id": "bot_a" } ``` **GET /health** 健康检查端点。 ## 配置 ### 环境变量 **必需项:** - `GROQ_API_KEY`: Groq 语言模型服务的 API 密钥 - `GOOGLE_API_KEY`: Google Gemini 嵌入的 API 密钥 **可选项:** - `GROQ_MODEL`: 模型标识符(默认值:llama-3.1-8b-instant) - `EMBEDDING_MODEL`: 嵌入模型(默认值:models/gemini-embedding-001) - `ROUTING_THRESHOLD`: 用于路由的相似度阈值(默认值:0.5) ## 技术说明 ### Vercel 部署注意事项 与传统服务器相比,Vercel 的 Serverless 环境存在一些限制: - 没有持久化存储,因此 ChromaDB 向量存储被禁用 - 500MB 的包大小限制要求依赖项尽可能精简 - 路由使用关键词匹配代替向量相似度 - 内容生成被简化,未包含完整的 LangGraph 对于演示部署而言,这些都是合理的权衡。所有核心功能(包括聊天和 RAG)均按预期工作。 ### 本地开发的优势 在本地运行可提供完整的体验: - 结合 ChromaDB 的完整向量相似度路由 - 由完整 LangGraph 驱动的内容生成 - 全面的 RAG 实现 - 无包大小限制 ## 故障排除 **Vercel 上出现找不到模块的错误:** requirements.txt 文件已经过优化,排除了如 torch 和 transformers 等庞大的依赖项。如果您在本地需要这些依赖,请单独安装。 **API 连接失败:** 请确认是否在 Vercel 控制台中正确设置了环境变量。请记住在添加或更改变量后重新部署。 **本地开发中出现 ChromaDB 错误:** 删除 chroma_db 目录并重新启动。向量存储将自动重建。 ## 许可证 MIT 许可证。您可以自由地将此代码用于您自己的项目和学习。 **开发此项目旨在展示 AI 工程能力和生产级就绪的开发实践。**
标签:DLL 劫持, LangGraph, Sysdig, 人工智能, 多模态安全, 大语言模型, 提示词防御, 数据可视化, 检索增强生成, 用户模式Hook绕过, 语义路由, 逆向工具