银行助手

基于LangChain和Azure OpenAI构建的对话式银行助手,用于处理用户查询账户余额、交易和账户管理问题。

  • by ehdclan
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ehdclan/AI-MCP-Agent

使用说明

朗链银行助理

概述

这是一个 会话式银行助理 使用 LangChain 和 Azure OpenAI,旨在处理与银行服务相关的用户查询,如检查账户余额、处理交易和管理账户相关查询。

它使用a 零样本代理 架构、用于维护会话上下文的内存缓冲区,以及用于分类意图和执行银行操作的多种工具。


特性

  • 用户登录和会话管理:
    具有会话持久性的基于PIN的安全身份验证系统。登录后,用户不需要重复提供帐户信息。

  • 意图分类:
    所有用户查询首先使用 IntentClassifier 以确定它们是否与余额、交易、卡问题或不受支持的操作有关。

  • 上下文感知记忆:
    对话历史记录存储在内存缓冲区中。以前提供的信息,如 3位帐户ID 在同一会话中自动重用。

  • 银行工具:

    • CheckBalance –获取给定帐户ID的帐户余额。
    • HandleTransaction –处理与交易相关的查询,包括待处理或失败的转账。
    • ReportCardIssues –手柄 仅与卡相关的问题,例如丢失的卡、损坏的卡、激活问题或卡不起作用。
    • Unsupported –确定其他工具是否无法处理查询。
  • 丢失数据的安全处理:
    当所需数据(如真实交易历史)不可用时,使用占位符消息,防止循环或重复的澄清请求。

  • 用户友好的提示:
    助理遵循循序渐进的推理指南:

    • 只有在绝对必要时才要求澄清。
    • 重复使用内存中的帐户ID,而不是重复询问。
    • 避免在后续问题中出现无限循环。

安装

  1. 克隆存储库:
git clone <repo_url>
cd LangChain-Banking-Agent
  1. 创建并激活虚拟环境:
python -m venv venv
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate
  1. 安装依赖项:
pip install -r requirements.txt

环境和证书(.env)

此项目使用多个Azure凭据和一个推理端点进行意图分类。创建一个 .env 在项目根目录中创建文件,并添加下面描述的值。

重要提示: 永不承诺 .env 源代码控制。添加到 .gitignore.

示例 .env (模板)

# Azure OpenAI / Cognitive Services resource credentials used by the LLM/speech code
azure_resource_key=<your_azure_cognitive_or_openai_key_here>
azure_resource_endpoint=https://<your-resource-name>.<region>.cognitiveservices.azure.com/

# Model API (used for intent classifier or custom classifier endpoint)
model_api_key=<your_model_api_key_here>
model_endpoint=https://<your-inference-host>/score

# Azure Speech (optional, if using speech integration)
AZURE_SPEECH_KEY=<your_speech_key_here>
AZURE_SPEECH_REGION=<speech_region>

从哪里获取每个值

  • azure_resource_key & azure_resource_endpoint 创建 Azure OpenAI 或 认知服务 Azure门户中的资源。

    • 打开资源→ 密钥和端点 → 复制任意键+端点URL。
  • model_api_key & model_endpoint 如果助手调用外部托管端点(Azure ML、自定义推理服务等)进行意图分类,则使用此功能。

    • 对于开发,您可以使用一个简单的本地分类器并相应地设置这些值。
  • AZURE_SPEECH_KEY & AZURE_SPEECH_REGION (可选) 仅当启用语音到文本或文本到语音时才需要。

如果您不确定使用哪个分类器端点,请按照组织的说明进行操作,或在开发过程中使用模拟分类器。


用法

运行助手:

python main.py

使用测试凭据登录:

Welcome. Please login to continue.

Enter your Account ID: 001
Enter your PIN: 1234

✅ Login successful! Welcome back, Ini!

用自然语言提问:

You: What's my balance?
Assistant: Hello Ini! Your balance is ₦200,000.

卡问题:

You: I lost my card
Assistant:
Hello Ini!
Your card has been blocked immediately.

Next steps:
• New card ready in 48 hours  
• Collect at any branch with ID  
• Reference: CARD-001-LOST/STOLEN  
• Urgent help: 0800-BANK-HELP

交易:

You: Show my transactions
Assistant: [Displays transaction history]

类型 exit 退出或 logout 切换用户。


项目结构

LangChain-Banking-Agent/
├── main.py                # Main application script with login system
├── utils.py               # Helper functions, banking operations, intent classification
├── tools.py               # Banking tool definitions for LangChain agent
├── requirements.txt       # Python dependencies
├── README.md              # Project documentation
└── .env                   # Environment variables for Azure OpenAI (not checked in)

关键组件

  • main.py –处理用户身份验证、代理初始化、会话循环。
  • utils.py –实现银行逻辑:余额检查、交易、发卡报告。
  • tools.py –定义代理使用的LangChain工具。

测试账户

账户ID PIN 姓名 余额
001 1234 这
002 5678 博鲁 ₦420000
003 9012 埃布卡 3亿韩元
004 3456 丹尼尔 ₦250000

备注

  • 内存处理: ConversationBufferMemory 存储过去的查询和帐户ID,以便代理可以在会话中重用它们。

  • 环路预防: 对于无法处理的查询(例如,缺少真实世界的交易数据),助手会返回一个礼貌的占位符并执行 不 反复要求确认。

  • 安全: 保持 .env 文件私有。切勿提交凭据。

  • 认证: 基于PIN的登录仅用于演示目的。生产系统应实施安全密码散列和MFA。


未来改进

  • 整合真实银行API数据源。
  • 扩展工具支持(贷款、转账、账单支付)。
  • 添加多用户并发和持久会话存储。
  • 实施安全的凭证存储和加密。
  • 创建web或移动UI。