使用说明
贷款助理聊天机器人
使用FastMCP、Streamlit和Azure OpenAI构建的模块化贷款助手应用程序。
项目结构
FastMCP/
├── backend/ # Backend modules
│ ├── __init__.py
│ ├── app.py # FastAPI banking endpoints
│ ├── database.py # MongoDB connection utilities
│ ├── mcp_client.py # MCP client for tool execution
│ ├── mcp_server.py # MCP server wrapping FastAPI
│ └── models.py # Pydantic data models
│
├── frontend/ # Frontend modules
│ ├── __init__.py
│ ├── chat.py # Chat processing & tool execution
│ ├── config.py # Configuration settings
│ ├── session.py # Session state management
│ ├── streamlit_app.py # Main Streamlit application
│ └── ui.py # UI components
│
├── data/ # Data files (JSON)
├── local-mongo/ # Local MongoDB setup
│
├── run_backend.py # Backend runner script
├── run_frontend.py # Frontend runner script
├── requirements.txt # Python dependencies
└── README.md
快速开始
1.安装依赖项
pip install -r requirements.txt
2.设置环境变量
创建一个 .env 文件包含:
AZURE_OPENAI_KEY=your_key
AZURE_OPENAI_ENDPOINT=your_endpoint
AZURE_OPENAI_GPT_DEPLOYMENT_NAME=gpt-4.1
MONGO_URI=mongodb://localhost:27017/
LINKUP_API_KEY=your_linkup_key # Optional, for web search
3.启动MongoDB(如果使用本地)
cd local-mongo
docker-compose up -d
4.启动后端(MCP服务器)
选项A-使用FastMCP CLI(推荐):
fastmcp run backend/mcp_server.py --transport sse --port 8000
选项B-使用Python:
python run_backend.py
5.启动前端(Streamlit)
选项A-使用Streamlit CLI(推荐):
streamlit run frontend/streamlit_app.py
选项B-使用Python:
python run_frontend.py
建筑
后端
-
app.py:带银行端点的FastAPI应用程序:- 客户查询(基本列表,完整详细信息)
- 账户管理
- 贷款申请和状态
- DTI计算
- 就业评分
- Web搜索集成
-
mcp_server.py:使用FastMCP将FastAPI应用程序包装为MCP服务器 -
mcp_client.py:用于通过SSE传输连接到MCP服务器的客户端 -
database.py:用于同步(PyMongo)和异步(Motor)连接的MongoDB实用程序 -
models.py:用于数据验证的Pydantic模型
前端
-
streamlit_app.py:协调所有组件的主要入口点 -
chat.py:处理聊天处理、流式响应和工具执行 -
session.py:管理Streamlit会话状态和会话持久性 -
ui.py:可重用的UI组件(侧边栏、聊天显示、审批对话框) -
config.py:集中式配置(API键、提示、样式)
特性
- 动态工具发现:工具在运行时从MCP服务器获取
- 流媒体响应:实时显示LLM响应
- 工具批准:敏感操作(如贷款申请)需要用户批准
- 对话历史:坚持使用MongoDB
- 本地执行:所有工具都在本地执行-不需要外部暴露
API终点
| 端点 | 方法 | 描述 |
|---|---|---|
/customers/basic |
GET | 列出所有客户(ID+姓名) |
/customers/{id} |
获取 | 完整的客户详细信息 |
/customers/{id}/accounts |
GET | 客户帐户 |
/customers/{id}/dti |
GET | 债务与收入比率 |
/customers/{id}/employment_score |
GET | 就业稳定性得分 |
/loans/apply |
POST | 申请贷款 |
/loans/{customer_id} |
GET | 客户现有贷款 |
/search/web |
获取 | 通过Linkup API进行Web搜索 |
遗留文件
原始的单片文件仍然存在以供参考:
streamlit_app_local.py-原始组合前端streamlit_app.py-云版本mcp_2.py-原始MCP服务器mcp_server.py-原始MCP服务器变体
在验证新结构正常工作后,可以安全地将其拆除。