Garak MCP服务器
集成了模型上下文协议(MCP)的服务器 加拉克 LLM漏洞扫描功能,配备由Azure OpenAI支持的会话式AI代理。
概述
此MCP服务器提供以下工具:
- 人工智能研究助理:一个能够回答问题并提供研究帮助的对话代理
- Garak安全评估:使用Garak的探测框架进行全面的LLM漏洞评估
- Azure OpenAI集成:与Azure OpenAI模型无缝集成以生成文本
- 会话管理:跟踪、管理和导出对话历史记录
特性
🤖 AI研究代理
- 会话界面:与人工智能研究助理进行自然语言交互
- 安全检查:内置内容过滤,防止有害响应
- 情境感知:维护上下文响应的对话历史记录
- 角色定制:动态更新代理角色和专业化
🔍 Garak安全评估
- 综合测试:运行多个Garak探测以评估LLM漏洞
- 插件支持:测试各种攻击媒介(快速注入、越狱等)
- 并行处理:可配置的并行执行可加快评估速度
- 详细报告:生成综合评估报告
☁️ Azure OpenAI集成
- 模型灵活性:支持各种Azure OpenAI模型(GPT-4、GPT-3.5等)
- 速率限制:内置请求节流以遵守API限制
- 错误处理:强大的错误处理和重试机制
- 配置管理:基于环境的配置
安装
先决条件
- Python 3.10+
- Azure OpenAI帐户 具有API访问权限
- Garak安装 (可选,用于安全评估功能)
设置
- 克隆存储库:
cd garak_working/garak/mcp_app/garak_mcp- 安装依赖项:
pip install mcp requests- 安装Garak (用于安全评估):
pip install garak- 配置Azure OpenAI:
设置以下环境变量:
export AZURE_ENDPOINT=""
export AZURE_API_KEY="your-api-key"
export AZURE_MODEL_NAME="" # or your preferred model用法
启动MCP服务器
python server.py服务器将启动并监听MCP客户端连接。
可用工具
1. ask_research_agent
问人工智能研究助理一个问题。
参数:
question(string,必填):向代理人提出的问题
例子:
{
"name": "ask_research_agent",
"arguments": {
"question": "What are the latest developments in AI safety?"
}
}2. run_safety_evaluation
在模型上运行Garak安全评估。
参数:
model_string(字符串,可选):模型标识符(默认值:“azure:gpt4o”)plugins(数组,可选):要运行的Garak插件列表(默认值:\[“promptinject”\])
例子:
{
"name": "run_safety_evaluation",
"arguments": {
"model_string": "azure:gpt4o",
"plugins": ["promptinject", "dan", "encoding"]
}
}3. get_agent_history
检索当前对话历史记录。
例子:
{
"name": "get_agent_history",
"arguments": {}
}4. reset_agent
清除代理的对话历史记录。
例子:
{
"name": "reset_agent",
"arguments": {}
}5. update_agent_role
更新代理的角色/系统提示。
参数:
new_role(string,必填):新角色描述
例子:
{
"name": "update_agent_role",
"arguments": {
"new_role": "You are an expert cybersecurity analyst specializing in threat detection."
}
}可用资源
agent://history
与研究代理的当前对话历史。
agent://config
当前代理配置和设置。
建筑
核心组件
server.py:使用工具和资源处理程序实现MCP服务器agents.py:具有对话管理和安全功能的AI代理类azure_model.py:具有配置和错误处理功能的Azure OpenAI客户端eval_garak.py:Garak评估包装,具有增强的报告功能
代理类
MCPAgent
基本代理类包含:
- 对话历史管理
- 安全内容过滤
- 基于角色的提示
- 错误处理和日志
SpecializedAgent
具有域特定功能的扩展代理:
- 专业化背景
- 增强对特定域的提示
- 自定义关键字处理
Azure OpenAI客户端
这 AzureOpenAIClient 类提供:
- 配置管理:基于环境的设置
- 速率限制:请求节流以遵守API限制
- 错误处理:全面的错误处理和重试逻辑
- 令牌使用跟踪:监控API的使用情况和成本
Garak评估员
这 GarakEvaluator 课程提供:
- 插件管理:支持各种Garak探头
- 并行执行:可配置的并行处理
- 报告生成:详细的评估报告
- 历史跟踪:维护评估历史记录
配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
AZURE_ENDPOINT | Azure OpenAI端点URL | 必填 |
AZURE_API_KEY | Azure OpenAI API密钥 | 必需 |
AZURE_MODEL_NAME | 要使用的型号名称 | gpt4o |
AZURE_API_VERSION | API版本 | 2024-06-01 |
Garak配置
Garak评估可以配置为:
- 模型类型:Azure、OpenAI、HuggingFace等。
- 插件:要运行的探测列表
- 并行设置:并行尝试和请求的次数
- 输出目录:评价报告的保存位置
例子
基础研究查询
# Ask the research agent a question
response = await client.call_tool("ask_research_agent", {
"question": "Explain the concept of prompt injection attacks"
})安全性评估
# Run comprehensive safety evaluation
result = await client.call_tool("run_safety_evaluation", {
"model_string": "azure:gpt4o",
"plugins": ["promptinject", "dan", "encoding", "misleading"]
})代理管理
# Update agent role
await client.call_tool("update_agent_role", {
"new_role": "You are an expert in machine learning and AI ethics."
})
# Get conversation history
history = await client.call_tool("get_agent_history", {})错误处理
服务器包括全面的错误处理:
- API错误:优雅地处理Azure OpenAI API错误
- 网络问题:连接错误恢复
- 无效输入:输入验证和有用的错误消息
- Garak故障:评估失败的回退处理
日志记录
服务器使用Python的日志模块:
- 信息级别:一般操作日志
- 错误级别:错误条件和故障
- 调试级别:详细的调试信息
日志包括:
- API请求/响应详细信息
- 代理对话跟踪
- Garak评估进展
- 错误条件和堆栈跟踪
安全考虑
- API密钥保护:永远不要在日志或响应中公开API密钥
- 内容过滤:内置有害内容安全检查
- 速率限制:防止API滥用和成本过高
- 输入验证:在处理之前验证所有用户输入
故障排除
常见问题
- Azure API密钥错误
- 确保 AZURE_API_KEY 设置正确 - 验证API密钥是否具有正确的权限
- 找不到Garak
- 安装Garak: pip install garak - 验证Garak安装: python -c "import garak"
- 速率限制错误
- 客户端包括自动速率限制 - 如果遇到速率限制,请在请求之间等待
- 未找到型号
- 验证中的模型名称 AZURE_MODEL_NAME - 检查模型是否在Azure部署中可用
调试模式
启用调试日志记录:
import logging
logging.basicConfig(level=logging.DEBUG)贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
该项目是Garak生态系统的一部分,遵循相同的许可条款。
支持
- 文档: Garak文档
- Discord 的中文翻译是“不和谐”或“纷争”。: Garak Discord社区
- GitHub: Garak存储库
- 网站: garak.ai
相关项目
- 加拉克:LLM漏洞扫描程序
- 主控程序:模型上下文协议
- Azure OpenAI:Azure OpenAI服务
