# banking-agent **Repository Path**: floatpen/banking-agent ## Basic Information - **Project Name**: banking-agent - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-21 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, Python ## README # 🏦 banking-agent 银行智能客服 Agent - 基于 LangChain + Ollama + Spring Boot 一个演示银行场景的智能客服系统,支持 RAG 知识库问答、账户查询、交易记录查看、理财经理预约等功能。 ## ✨ 功能特性 - **RAG 知识库问答**:基于向量检索回答银行业务问题(利率、产品、流程等) - **账户余额查询**:调用后端 API 查询真实账户数据 - **交易记录查看**:查询最近交易流水 - **理财经理预约**:智能预约流程,支持自然语言时间理解 ## 🛠️ 技术栈 | 层级 | 技术 | |------|------| | LLM | Ollama + Qwen2.5 (本地部署) | | Agent 框架 | LangChain | | 向量数据库 | Chroma | | 后端服务 | Java Spring Boot | | 前端界面 | Streamlit | ## 📁 项目结构 ``` banking-agent/ ├── agent/ # Python Agent 核心 │ ├── agent.py # Agent 入口 │ ├── tools.py # 工具函数定义 │ ├── rag.py # RAG 检索 │ └── app.py # Streamlit 界面 ├── backend/ # Java Spring Boot 后端 │ └── src/main/java/ │ └── com/example/ │ ├── controller/ # API 控制器 │ ├── service/ # 业务逻辑 │ └── model/ # 数据模型 ├── data/ # 知识库文档 │ └── bank_faq.md ├── chroma_db/ # 向量数据库(运行时生成) └── README.md ``` ## 🚀 快速开始 ### 前置要求 - Java 17+ - Python 3.9+ - Ollama ### 1. 启动 Java 后端 ```bash cd backend mvn spring-boot:run ``` 后端服务启动在 `http://localhost:8080` ### 2. 启动 Ollama ```bash # 拉取模型 ollama pull qwen2.5 # 启动服务(默认 11434 端口) ollama serve ``` ### 3. 启动 Agent ```bash cd agent # 创建虚拟环境 python -m venv venv # Windows venv\Scripts\activate # Linux/Mac source venv/bin/activate # 安装依赖 pip install -r requirements.txt # 方式一:命令行 python agent.py # 方式二:Web 界面 streamlit run app.py ``` 访问 `http://localhost:8501` 使用 Web 界面 ## 📖 使用示例 ``` 用户: 你们银行定期存款利率是多少? 客服: 目前我行定期存款利率为:3个月1.5%,6个月1.8%,1年2.0%... 用户: 我的账户余额是多少?用户ID是user001 客服: 账户类型:私人银行账户,余额:¥1,580,000.50 用户: 我想预约理财经理 客服: 好的,请问您希望预约什么时间? ``` ## 🔧 配置说明 ### 修改知识库 编辑 `data/bank_faq.md`,添加或修改问答内容后,重新生成向量库: ```python # agent/rag.py 中重新加载 vectorstore = Chroma.from_documents(...) ``` ### 添加新工具 在 `tools.py` 中使用 `@tool` 装饰器定义新工具: ```python from langchain.tools import tool @tool def new_tool(param: str) -> str: """工具描述""" # 实现逻辑 return result ``` ### 更换模型 修改 `agent.py` 中的模型名称: ```python llm = Ollama(model="qwen2.5") # 换成其他模型 ``` ## 📝 面试亮点说明 这个项目展示了以下能力: 1. **Agent 开发能力**:LangChain 工具封装、多轮对话、记忆管理 2. **RAG 工程能力**:文档切分、向量检索、混合检索 3. **后端工程能力**:Spring Boot API 设计、Mock 数据架构 4. **系统设计能力**:整体架构规划、技术选型 5. **问题解决能力**:LangChain 踩坑记录(见下方) ### 踩坑记录 - `@tool` 装饰器多参数不兼容,需改用 `Tool` 类 + 单参数字符串 - Tool description 必须明确"直接传入值",否则 LLM 会传 `param="value"` 格式 - AgentType 选用 `CONVERSATIONAL_REACT_DESCRIPTION` 最稳定 ## 📄 License MIT License