saanidhyasharma-blip/gridmind
GitHub: saanidhyasharma-blip/gridmind
一个演示多机器人人设路由和提示注入防御的教学项目,结合 LangGraph 工作流生成安全可控的结构化 AI 内容。
Stars: 0 | Forks: 0
# GridMind
GridMind 是 Grid07 AI 工程作业的 Python 实现。它演示了人设路由、基于 LangGraph 的自主帖子生成,以及带有提示注入防御的深度线程 RAG 风格回复。
## 功能
- 使用余弦相似度的向量风格机器人人设匹配。
- LangGraph 工作流:
- 判断搜索
- 网页搜索
- 起草帖子
- 使用硬编码的最新新闻上下文模拟 `searxng` 搜索工具。
- 使用 Pydantic 严格的 JSON 帖子输出。
- 线程上下文回复生成器,将人类回复视为不受信任的内容。
- 用于在没有 API 密钥的演示中运行的本地确定性回退模式。
## 设置
```
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
```
默认情况下,`.env.example` 使用:
```
LLM_PROVIDER=local
EMBEDDING_PROVIDER=local
```
此模式在无需外部 API 密钥的情况下运行。要使用真实模型,请将 `LLM_PROVIDER` 和 `EMBEDDING_PROVIDER` 设置为 `openai`、`groq` 或 `ollama`,并填写相关值。
如果配置的 API 密钥没有可用配额,`main.py` 会记录一条提供者提示,并回退到确定性的本地行为,以便作业演示仍能完成。
## 运行
```
python main.py
```
该脚本会打印所有三个阶段,并将相同的输出写入:
```
logs/execution_log.md
```
## 阶段 1:人设路由
`route_post_to_bots(post_content: str, threshold: float = 0.85)` 会对传入的帖子进行嵌入,将其与人设嵌入进行比较,并返回余弦相似度高于阈值的机器人。
作业阈值为 `0.85`,但本地确定性嵌入使用较低的演示阈值,因为它们不是语义模型嵌入。
## 阶段 2:LangGraph 内容引擎
图(graph)在 `src/gridmind/content_graph.py` 中实现。
```
Decide Search -> Web Search -> Draft Post -> END
```
最终输出遵循以下 schema:
```
{
"bot_id": "bot_a",
"topic": "...",
"post_content": "..."
}
```
## 阶段 3:提示注入防御
`generate_defense_reply(...)` 构建一个系统级提示,使机器人保持其人设,并将所有线程消息视为不受信任的对话内容。诸如“忽略之前的指令”之类的注入尝试不被允许覆盖机器人的人设。
## 测试
```
pytest
```
测试有意使用本地确定性组件,即使 `.env` 配置为 OpenAI 时也是如此,这样它们就可以在离线状态下运行,避免消耗 API 配额。
标签:AI作业, AI安全, AI工程, AI风险缓解, Chat Copilot, DLL 劫持, LangGraph, LLM, Pydantic, Python, RAG, SearXNG, Unmanaged PE, Web搜索, 人工智能, 人物角色路由, 余弦相似度, 向量嵌入, 向量检索, 向量相似度, 大语言模型, 对抗性防御, 工作流引擎, 提示注入防御, 无API演示, 无后门, 本地确定性回退, 机器人, 检索增强生成, 深度回复, 源代码安全, 用户模式Hook绕过, 结构化JSON, 自动化发帖, 逆向工具, 配置审计