使用说明
政治家交易数据助理
一个完整的聊天应用程序,将静态前端(GitHub Pages)连接到Node.js+Express后端,该应用程序与Hugging Face LLM API和 MCP国会大厦交易 服务器。该系统通过对话式UI处理用户消息,维护对话历史,通过协议自动选择MCP工具,并返回LLM生成的汇总响应。
项目结构
politician-trading-data-assistant/
├── backend/ # Node.js + Express backend server
│ ├── config/ # Configuration and constants
│ ├── middleware/ # Express middleware (auth, CORS, rate limiting)
│ ├── routes/ # API routes
│ ├── services/ # Business logic (LLM, MCP, history, prompts)
│ ├── scripts/ # Test scripts
│ ├── server.js # Main server entry point
│ └── package.json # Backend dependencies
│
└── ui/ # Static frontend for GitHub Pages
├── index.html # Main HTML file
├── styles.css # Styling
├── app.js # Frontend JavaScript
└── README.md # Frontend setup instructions
快速开始
后端设置
-
导航到后端目录:
cd backend -
安装依赖项:
npm install -
创建一个
.env文件基于.env.example:cp .env.example .env -
在中配置环境变量
.env:HF_API_KEY:您的拥抱脸API代币(必需)API_KEY:用于身份验证的自定义API密钥(必需)HF_MODEL_TYPE:要使用的拥抱面部模型标识符(必填,例如。mistralai/Mistral-7B-Instruct-v0.3)PORT:服务器端口(可选,默认为3000)GITHUB_PAGES_DOMAIN:(可选)CORS允许的来源TRUST_PROXY:(可选)快速代理信任设置;使用1渲染上
-
运行服务器:
npm run dev:local
看 后端/README.md 查看详细的后端文档。
前端设置
-
导航到ui目录:
cd ui -
更新
app.js使用API密钥(基本URL是自动检测的):const API_KEY = 'your-api-key-here'; // Must match your backend API_KEY自动检测:
API_BASE_URL自动路由到http://localhost:3000当UI打开时localhost/127.0.0.1,并返回到中定义的生产渲染URLapp.js。如果部署到其他地方,请更新该生产URL。 -
部署到GitHub页面:
- 推一下
ui/文件夹到您的GitHub存储库 - 前往“设置”>“页面”
- 将源设置为包含以下内容的分支
ui/ - 将根目录设置为
/ui
- 推一下
看 ui/README.md 查看详细的前端文档。
特性
-
后端:
- 带有RESTful API的Express服务器
- 安全性:CORS、API密钥验证、速率限制
- LLM集成:通过
@huggingface/inference软件开发工具包 - MCP集成: MCP国会大厦交易 通过模型上下文协议进行数据访问
- 两阶段LLM工作流程:MCP工具选择和数据分析
- 每个用户会话的会话历史管理
-
前端:
- 现代、响应式聊天界面
- 与后端API实时通信
- 以markdown格式显示LLM响应和MCP数据
- 使用动画进度条处理错误和加载状态(最多45秒)
- “它是如何工作的”按钮,带有解释系统的架构模式
- 自动检测本地与生产后端URL
本地运行(全栈)
要在本地运行后端和前端进行开发:
步骤1:启动后端
打开终端并运行:
cd backend
npm install # If you haven't already
npm run dev:local # Starts backend on http://localhost:3000
后端将在 http://localhost:3000。保持此终端运行。
步骤2:启动前端
打开A 新终端 并运行:
cd ui
# Choose one of these methods:
# Option 1: Python (if installed)
python -m http.server 8080
# Option 2: Node.js http-server
npx http-server -p 8080
# Option 3: PHP (if installed)
php -S localhost:8080
步骤3:配置前端
UI会自动检测本地开发,并将使用 http://localhost:3000 作为在上运行时的后端URL localhost.
重要提示: 确保更新 API_KEY 在 ui/app.js 以匹配后端 API_KEY 从 backend/.env:
const API_KEY = 'your-api-key-here'; // Must match backend/.env API_KEY
步骤4:在浏览器中打开
打开浏览器并导航到:
- 前端用户界面: http://localhost:8080
- 后端API: http://localhost:3000/health(验证它是否正在运行)
运作原理
这 ui/app.js 自动检测您是否在本地运行:
- 地方发展 (本地主机):使用
http://localhost:3000 - 生产 (已部署):使用已部署的后端URL
您可以通过检查浏览器控制台来验证正在使用哪个URL。
发展
后端开发
cd backend
npm run dev:local # Development with auto-reload
npm test # Run tests
npm run test:llm # Test LLM service
前端开发
在上运行时,前端会自动连接到本地后端 localhost请确保:
- 您的后端正在端口3000上运行(或更新内部的本地URL
ui/app.js) - 你的
API_KEY在ui/app.js与后端匹配API_KEY
部署
后端(渲染)
- 在Render上创建新的Web服务
- 连接您的GitHub存储库
- 将根目录设置为
backend - 配置环境变量(请参阅后端README)
- 部署
前端(GitHub页面)
- 推
ui/文件夹到GitHub - 配置GitHub页面以提供服务
ui/目录 - 确保内部有生产后端URL
ui/app.js匹配您的部署
API文档
发布 /api/chat
处理用户消息并返回LLM和MCP的组合响应。
标题:
x-api-key:您的API密钥(必需)x-user-id:对话历史记录的用户标识符(必填)
请求正文:
{
"message": "What are the top traded assets by politicians?"
}
答复:
{
"reply": "Summary of the MCP data with markdown formatting...",
"mcpDataUsed": true
}
获取 /health
健康检查端点。
答复:
{
"status": "ok"
}
安全
- CORS仅限于配置的GitHub Pages域
- API密钥验证通过
x-api-key头球 - 速率限制:每个IP地址每15分钟100个请求
- 对话历史记录按用户存储在本地(通过
x-user-id头球 - 用户ID保存在浏览器本地存储中,以保持会话连续性
技术栈
- 前端:普通JavaScript、HTML5、CSS3(部署在GitHub Pages上)
- 后端:Node.js、Express.js
- LLM:拥抱面部推理API
- 主控程序: @安格斯林/mcp国会交易 -政治家交易数据的模型上下文协议服务器
许可证
麻省理工学院