🔧 IT大师助理
一个专门从事IT基础设施和网络安全的人工智能聊天机器人,由Streamlit和OpenRouter构建。该应用程序使用人工智能意图检测、实时网络搜索(Exa)和选择性MCP集成(AWS文档、Microsoft Learn),没有本地知识库或RAG。
🌟 特性
核心能力
- AI意图检测:将查询路由到AWS文档MCP、Microsoft Learn MCP或Exa实时搜索
- 情境感知对话:维护自然互动的对话历史记录
- 实时覆盖:通过供应商提升搜索权威IT/安全来源
- OpenRouter型号:通过UI/secrets选择和使用模型
高级功能
- 多种响应格式:定义、分步指南、故障排除、比较
- 专业用户界面:具有自定义CSS和响应式布局的现代设计
- 会话管理:跨交互的持续对话状态
- 性能监控:响应质量和使用指标
🛠️ 技术栈
- 前端:流光灯
- 后端:使用OpenRouter聊天完成API的Python
- 实时搜索:Exa搜索API,带有域筛选器和供应商提升
- MCP集成:AWS文档(HTTP API)、Microsoft Learn(实现SSE流媒体)
- 部署:Streamlit社区云(免费托管)
🚀 快速开始
先决条件
- Python 3.8+
- OpenRouter API密钥(在 openrouter.ai)
- Git
地方发展
- 克隆存储库
git clone https://github.com/leroylim/it-guru-assistant-chatbot.git
cd it-guru-assistant-chatbot- 安装依赖项
pip install -r requirements.txt- 配置API密钥
创建 .streamlit/secrets.toml 并添加您的密钥:
OPENROUTER_API_KEY = "your-openrouter-api-key-here"
OPENROUTER_MODEL = "google/gemini-2.5-flash-lite" # or any available model id
# Exa real-time search
EXA_API_KEY = "your-exa-api-key-here"
EXA_START_DAYS = 180 # rolling window, overrides EXA_START_DATE if > 0
# EXA_START_DATE = "2025-02-01" # optional fixed date
EXA_MAX_RESULTS = 5
# IT scope guardrails (enable strict IT-only scope)
ENFORCE_IT_SCOPE = true # default true; set false to disable scope enforcement
ALLOW_IT_CAREER_TOPICS = true # allow resume/interviews/certifications (career-only)
OUT_OF_SCOPE_MESSAGE = "Sorry, I’m focused on IT infrastructure, cybersecurity, cloud, DevOps, and IT careers. Please rephrase your question within this scope."
# Admin UI controls
HIDE_SETTINGS_BAR = false # set true to hide entire Settings sidebar section
HIDE_MODEL_SELECTOR = false # set true to hide model selector and lock to OPENROUTER_MODEL- 运行应用程序
streamlit run app.py- 打开浏览器
引导到 http://localhost:8501
🌐 部署到Streamlit社区云
逐步部署
- 准备存储库
- 确保所有代码都在公共GitHub存储库中 - 验证 requirements.txt 包括所有依赖项 - 删除任何硬编码的API密钥
- 部署到Streamlit云
- 访问 share.streamlit.io - 连接您的GitHub帐户 - 选择您的存储库,然后 app.py 作为主文件 - 在Streamlit仪表板中配置机密:
OPENROUTER_API_KEY = "your-actual-api-key"
OPENROUTER_MODEL = "google/gemini-2.5-flash-lite"
EXA_API_KEY = "exa_..."
EXA_START_DAYS = 180
EXA_MAX_RESULTS = 5
# IT scope guardrails
ENFORCE_IT_SCOPE = true
ALLOW_IT_CAREER_TOPICS = true
OUT_OF_SCOPE_MESSAGE = "Sorry, I’m focused on IT infrastructure, cybersecurity, cloud, DevOps, and IT careers. Please rephrase your question within this scope."
# Admin UI controls
HIDE_SETTINGS_BAR = false
HIDE_MODEL_SELECTOR = false⚙️ 配置参考
所需的秘密
- OPENROUTER_API_键:用于LLM响应和小型分类调用的OpenRouter API密钥
- OPENROUTER_MODEL:默认型号ID(例如。,
meta-llama/llama-3.1-8b-instruct:free) - EXA_API_密钥:Exa搜索API密钥(用于实时web结果)
可选秘密
- EXA_START_DAYS:用于最近度过滤的整数滚动窗口(例如。,
7,30,180)
- EXA_START_DATE:ISO日期(
YYYY-MM-DD)作为固定的最早爬网日期(如果EXA_START_DAYS > 0)
- EXA_MAX结果:要返回的结果数(代码中默认为3;上面的示例使用5)
- LLM_SCOPE_CHECK:
true|false(默认值false)--什么时候true,廉价的LLM检查仅在包含非IT术语和IT锚点的模糊查询上运行。如果LLM说超出范围,则拒绝查询。
- LLM_SCOPE_MODEL:用于范围检查的可选模型ID(默认为
OPENROUTER_MODEL如果没有提供)。例子:meta-llama/llama-3.1-8b-instruct:free.
IT范围护栏(秘密)
- ENFORCE_IT_SCOPE:
true|false(默认值true)--什么时候true,非IT话题会被礼貌地拒绝 - ALLOW_IT_care_TOPICS:
true|false(默认值true)--允许简历/面试/证书主题 - OUT_OF_SCOPE_MESSAGE:向用户显示自定义拒绝消息
IT范围关键字(外部化JSON)
- 范围保护关键字可在中编辑
modules/mcp/scope_keywords.json:
- non_it_patterns:将主题视为超出范围(对单个单词使用单词边界正则表达式;对短语使用子字符串) - it_career_whitelist:与职业相关的白名单术语 - it_anchors:强有力的信息技术指标;任何锚点的存在都可以防止误报,并在不明确时触发可选的LLM范围检查
如果无法读取JSON,应用程序将恢复为内置默认值。
管理UI控件(机密)
- 隐藏设置BAR:
true|false(默认值false)--隐藏侧边栏中的整个“设置”部分 - HIDE_MODEL_SELECTOR:
true|false(默认值false)--隐藏模型选择器并将应用程序锁定到OPENROUTER_MODEL
环境变量
- OPENROUTER_API_键:如果不是秘密的,应用程序也会从环境中读取此信息作为后备
- 例子: export OPENROUTER_API_KEY=sk-or-...
笔记:
- 考试密钥(
EXA_*)从本应用程序中的Streamlit机密中读取;对于那些人来说,更喜欢秘密而不是环境。 - 看
modules/ai_service.py,modules/mcp/intent_detector.py,modules/mcp/exa_client.py,以及modules/mcp/router.py了解如何使用这些设置。
- 上线
- 点击“部署”-您的应用程序立即上线 - 获取您的自定义URL: your-app-name.streamlit.app
📊 项目结构
it-chatbot/
├── app.py # Main Streamlit application
├── requirements.txt # Python dependencies
├── config.py # App config (max_tokens, temperature)
├── modules/
│ ├── ai_service.py # OpenRouter calls and response formatting
│ ├── ui_components.py # Streamlit UI components
│ └── mcp/
│ ├── exa_client.py # Exa search integration
│ ├── exa_domains.json # Editable domain categories and vendor map
│ ├── scope_keywords.json # Editable scope keywords (non-IT, IT anchors, career whitelist)
│ └── intent_detector.py # AI-powered intent routing
├── .streamlit/
│ └── secrets.toml # API keys and Exa settings (local dev)
└── README.md🎯 IT大师可以提供什么帮助
🔧 网络
- 防火墙、VPN、DNS配置
- 路由和交换概念
- 网络故障排除程序
- 负载平衡和流量管理
🔒 网络安全
- 安全最佳实践和框架
- SSL/TLS证书和加密
- 事故响应程序
- 漏洞管理
💻 系统管理
- Active Directory管理
- 服务器管理(Windows/Linux)
- 备份和灾难恢复
- PowerShell和自动化
☁️ 云和基础设施
- AWS、Azure、谷歌云概念
- 容器编排(Kubernetes)
- 基础设施即代码(Terraform)
- DevOps实践和CI/CD
🔧 技术实现
意向路由
系统对查询进行分类,并将其路由到最佳来源:
- 定义:“什么是防火墙?”
- 一步一步:“如何配置DNS?”
- 故障排除:“网络连接问题”
- 比较:“VPN与代理”
会话管理
在高效管理内存的同时,跨交互维护上下文:
def manage_conversation_context(chat_history, max_context=10):
# Keep recent exchanges for context continuity
recent_history = chat_history[-max_context*2:]
return format_context_for_ai(recent_history)📈 性能与分析
内置指标
- 查询分类:用户请求的自动分类
- 响应质量:上下文相关性评分
- 使用情况分析:会话持续时间和交互深度
🎨 UI/UX功能
专业设计
- 现代界面:干净、直观的聊天布局
- 响应式设计:适用于台式机和移动设备
- 自定义样式:专业配色方案和排版
- 加载状态:处理过程中的视觉反馈
用户体验
- 聪明的建议:侧边栏中的上下文帮助
- 错误处理:优雅地处理API故障
- 无障碍:屏幕阅读器友好组件
- 演出:针对快速响应时间进行了优化
🔐 安全考虑
API密钥管理
- 永远不要将API密钥提交到版本控制
- 使用Streamlit secrets进行安全密钥存储
- 本地开发的环境变量回退
提供安全性
- 标题和文本被净化;通过Markdown呈现的源代码
unsafe_allow_html=False.
数据隐私
- 没有持久存储用户对话
- 仅基于会话的数据
- 不收集个人信息
🚀 未来的增强功能
计划的功能
- \[\]多模式支持(文档分析)
- \[\]高级分析仪表板
- \[\]自定义知识库上传
- \[\]与票务系统集成
可扩展性选项
- \[\]对话历史数据库后端
- \[\]Redis缓存以提高性能
- \[\]Kubernetes部署配置
- \[\]负载平衡以实现高可用性
🤝 贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📝 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
商标
Microsoft、AWS、Streamlit、Exa和OpenRouter是其各自所有者的商标。此处使用并不意味着认可。
贡献
通过向此存储库贡献,您同意您的贡献将根据此项目的MIT许可证获得许可。
👤 作者
建造于 韩永林\ github:https://github.com/leroylim\ 领英:https://www.linkedin.com/in/han-yong-lim-312b88a7/
🙏 致谢
- 根据全面的IT Assistant文档中的最佳实践构建
- 受现代RAG架构和会话式AI模式的启发
- 专为投资组合演示和现实应用而设计
🧾 鸣谢
- UI框架: 溪流
- LLM平台: OpenRouter
- 实时网络搜索: Exa
- Microsoft文档: 微软学习
- AWS文档: AWS文档
📞 支持
如有疑问或支持,请:
- 检查 问题 页
- 创建具有详细描述的新问题
- 通过GitHub联系维护人员
______________________________________________________________________
🔧 IT大师助理 -通过实用的IT解决方案展示专业的AI开发技能。
