AmitDinnimani/TokenGuard
GitHub: AmitDinnimani/TokenGuard
TokenGuard 是一款专为 LLM 应用设计的智能成本「保安」,通过本地模型自动压缩冗长的 Prompt 来大幅降低云端 API 开销并防止恶意请求。
Stars: 0 | Forks: 0
# 🛡️ TokenGuard
**TokenGuard** 是你的 LLM (Large Language Model) 应用的智能助手。它就像是你的 AI 成本的“保安”,通过在将大型 prompt 发送给昂贵的云端模型之前自动缩小它们,确保你永远不会在单个请求上花费过多。
[](https://www.python.org/downloads/)
[](https://docs.python.org/3/library/asyncio.html)
## 🤔 TokenGuard 是做什么的?
想象一下你每月都有一个用于 OpenAI 或 Anthropic 等 AI 服务的预算。有时,用户可能会发送一份巨大的文档,仅处理它就需要花费 2.00 美元。如果 1,000 名用户这样做,你的预算几分钟就会耗尽。
**TokenGuard 通过以下方式解决这个问题:**
1. **监控**:它在 prompt 发送之前计算其中的每一个 token。
2. **检查**:它计算成本。如果成本高于你设定的限制,它就会“吹哨”警告。
3. **压缩**:它不会失败,而是将巨大的 prompt 发送到**本地免费的 AI**(通过 Ollama)进行摘要和压缩,同时保留重要的指令。
4. **节省**:它将小得多、便宜得多的 prompt 发送到你的主 AI,为你节省高达 90% 的成本。
## ✨ 核心功能
- ⚡ **极速异步**:与现代的“async” Web 应用(如 FastAPI)完美配合,让你的用户无需等待。
- 📉 **自动压缩**:使用本地模型(Ollama)将长 prompt 重写为简短有力的版本,且云端 LLM 仍然能够理解。
- 🚀 **智能记忆 (缓存)**:如果你发送两次相同的长 prompt,TokenGuard 会记住压缩后的版本,使得第二次处理瞬间完成。
- 📝 **详细日志 (遥测)**:每个请求都保存在一个简单的文件(`.jsonl`)中,以便你可以在月底准确查看自己节省了多少钱。
- 🛡️ **安全至上**:通过阻止对系统来说过大的 prompt 来防止“拒绝服务”攻击。
## 🛠️ 安装说明
### 1. 前置条件
确保你已安装 [Ollama](https://ollama.com/) 并在你的机器上运行。
### 2. 安装依赖项
```
pip install -r requirements.txt
```
### 3. 设置配置
在你的项目文件夹中创建一个 `.env` 文件(你可以复制 `.env.example`):
```
# 你的 Ollama 运行在哪里?
TOKENGUARD_OLLAMA_ENDPOINT=http://localhost:11434/api/generate
# 应该使用哪个本地 model 来进行缩减?(任何 Ollama model 均可)
TOKENGUARD_OLLAMA_MODEL=qwen2.5-coder:7b-instruct
# 每个 request 允许的最大 $ 成本是多少?
TOKENGUARD_BUDGET_LIMIT=0.01
```
## 🚀 如何使用
### ⚡ `@guard` 装饰器
只需在任何接受 prompt 的函数上方添加 `@guard()`。它同时适用于普通函数和 `async` 函数!
```
from tokenguard.decorators.decorator import guard
# 此 function 现已受到保护!
@guard(limit=0.005) # Limit this specific call to $0.005
def call_ai(prompt: str):
return cloud_llm.send(prompt)
```
### 🔧 手动使用(高级)
如果你想要更多控制,可以直接使用 `Processor`:
```
from tokenguard.core.processor import TokenGuardProcessor
processor = TokenGuardProcessor()
# 如果原始 prompt 过于昂贵,这将返回一个缩减后的 prompt
safe_prompt, request_id = processor.process("your very long prompt here...")
```
## 📁 项目结构
- `core/`:系统的大脑(token 计数,预算检查)。
- `compression/`:使用本地模型压缩 prompt 的逻辑。
- `decorators/`:易于使用的 `@guard` 工具。
- `observer/`:记录你节省成本的日志系统。
- `tests/`:确保一切正常运行的自动化测试。
## 🛡️ 隐私与安全
我们非常重视你的数据:
- **本地压缩**:你的“压缩后”的 prompt 在压缩期间绝不会离开你自己的机器。
- **隐私模式**:你可以关闭 prompt 日志记录,以将数据排除在日志文件之外(`TOKENGUARD_ENABLE_PROMPT_LOGGING=false`)。
- **输入限制**:我们会自动阻止超过 1,000,000 个字符的 prompt,以保持服务器的稳定。
## 📄 许可证
MIT © [Amit Dinnimani](https://github.com/AmitDinnimani)
标签:AI风险缓解, API网关, Asyncio, AV绕过, DLL 劫持, DoS防御, FastAPI, LLM, LLM优化, LLM评估, Ollama, Python, Token限制, Unmanaged PE, 云原生AI, 大语言模型, 安全防护, 开源, 异步编程, 成本控制, 拒绝服务攻击防护, 提示词压缩, 文本摘要, 无后门, 智能助理, 本地大模型, 模型降本, 流量监控, 缓存机制, 逆向工具, 遥测日志, 配置错误