Skip to content

cxx-cod/LangChain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

智能聊天框架项目

基于 LangChain 和 LangGraph 构建的分层架构聊天框架,支持多模型切换、多轮对话记忆、对话历史管理等功能。

📁 项目架构

e:\镜像\de\Langchain\
├── core/                           # 🔧 算子层 - 核心组件
│   ├── __init__.py                # 包初始化文件
│   ├── model_manager.py           # 模型管理器 - 统一管理AI模型
│   ├── graph_builder.py           # 图构建器 - 构建LangGraph对话图
│   ├── memory_manager.py          # 内存管理器 - 管理对话记忆
│   ├── logger.py                  # 分层日志管理系统
│   ├── decorators.py              # 日志装饰器 - 自动化日志记录
│   ├── mysql.py                   # MySQL数据库配置管理
├── logic/                          # 🧠 逻辑层 - 业务逻辑
│   ├── __init__.py                # 包初始化文件
│   ├── chat_framework.py          # 聊天框架 - 统一对话接口
│   └── conversation.py            # 对话管理器 - 处理对话状态和历史
├── apps/                           # 🖥️ 应用层 - 用户界面
│   ├── __init__.py                # 包初始化文件
│   └── chat_app.py                # 聊天应用 - 交互式用户界面
├── main.py                         # 🚀 主入口文件
└── README.md                       # 📖 项目文档

🎯 核心功能

  • 多模型支持: 支持 Gemini、GPT-4、GPT-3.5、Claude 等多种AI模型
  • 动态模型切换: 运行时无缝切换不同的AI模型
  • 多轮对话记忆: 基于LangGraph的会话记忆功能
  • 多会话管理: 支持多个独立的对话会话
  • 对话历史导出: 支持JSON和文本格式的历史记录导出
  • 统计信息: 提供对话统计和分析功能
  • 分层架构: 清晰的算子层、逻辑层、应用层分离
  • 分层日志系统: 按项目结构自动分层记录日志
  • 数据库持久化: 支持SQLite和PostgreSQL数据库存储
  • 自动日志装饰器: 通过装饰器自动记录函数执行过程

🚀 快速开始

环境要求

  • Python 3.8+
  • 相关AI模型的API密钥(OpenAI、Anthropic等)

安装依赖

pip install langchain langgraph langchain-core dotenv
# 可选:PostgreSQL支持
pip install psycopg2-binary

配置环境变量

创建 .env 文件:

# AI模型API密钥
OPENAI_API_KEY=your_openai_api_key
ANTHROPIC_API_KEY=your_anthropic_api_key

# 数据库配置(可选)
# SQLite配置(默认)
SQLITE_DB_DIR=data
SQLITE_DB_NAME=conversations.db

# PostgreSQL配置(可选)
DB_HOST=localhost
DB_PORT=5432
DB_NAME=langchain_chat
DB_USER=postgres
DB_PASSWORD=your_password

运行应用

python main.py

📚 详细文档

🔧 算子层 (Core)

核心组件层,提供基础的原子操作功能。

core/model_manager.py - 模型管理器

职责: 统一管理和调用各种AI模型

主要功能:

  • 支持多种AI模型的统一接口
  • API密钥自动管理
  • 模型实例缓存
  • 自定义模型配置

核心类:

class ModelManager:
    def get_model(self, model_key="gemini")        # 获取模型实例
    def list_supported_models(self)                # 列出支持的模型
    def add_custom_model(self, key, config)        # 添加自定义模型
    def clear_cache(self)                          # 清空模型缓存

支持的模型:

  • gemini: Google Gemini 2.5 Flash
  • gpt4: OpenAI GPT-4
  • gpt3.5: OpenAI GPT-3.5 Turbo
  • claude: Anthropic Claude 3 Sonnet

core/graph_builder.py - 图构建器

职责: 构建和管理LangGraph对话图结构

主要功能:

  • 创建简单聊天图
  • 创建带记忆的聊天图
  • 自定义图结构构建

核心方法:

class GraphBuilder:
    @staticmethod
    def create_simple_chat_graph(model)            # 创建简单聊天图
    @staticmethod
    def create_memory_chat_graph(model, memory)    # 创建带记忆聊天图
    @staticmethod
    def create_custom_graph(model, config)         # 创建自定义图

core/memory_manager.py - 内存管理器

职责: 管理对话记忆和会话状态

主要功能:

  • 内存存储器管理
  • 多会话记忆隔离
  • 线程配置管理
  • 记忆清理功能

核心方法:

class MemoryManager:
    def get_memory_saver(self, memory_type="default")      # 获取内存存储器
    def clear_memory(self, memory_type="default")          # 清空指定记忆
    def get_thread_config(self, thread_id)                 # 获取线程配置
    def list_memory_types(self)                            # 列出记忆类型

🧠 逻辑层 (Logic)

业务逻辑层,提供高级的业务功能。

logic/chat_framework.py - 聊天框架

职责: 提供统一的对话接口,协调各个组件

主要功能:

  • 集成模型管理、图构建、内存管理
  • 提供异步对话接口(始终带记忆)
  • 模型动态切换
  • 记忆管理

核心方法:

class ChatFramework:
    def __init__(self, model_key="gemini")              # 初始化框架
    async def chat(self, message, thread_id="default")  # 对话(异步,始终带记忆)
    def switch_model(self, model_key)                   # 切换模型
    def get_current_model(self)                         # 获取当前模型
    def list_available_models(self)                     # 列出可用模型
    def clear_memory(self, memory_type)                 # 清空记忆

logic/conversation.py - 对话管理器

职责: 处理对话状态、历史记录、统计信息

主要功能:

  • 对话历史跟踪
  • 消息发送和接收
  • 历史记录导出
  • 对话统计分析

核心方法:

class Conversation:
    def __init__(self, framework, thread_id)           # 初始化对话
    async def send_message(self, message)              # 发送消息(异步,始终带记忆)
    def get_history(self)                              # 获取历史记录
    def export_history(self, format="json")            # 导出历史记录
    def get_stats(self)                                # 获取统计信息
    def clear_history(self)                            # 清空历史记录

🖥️ 应用层 (Apps)

用户交互层,提供具体的应用界面。

apps/chat_app.py - 聊天应用

职责: 提供交互式的聊天用户界面

主要功能:

  • 交互式菜单系统
  • 对话会话管理
  • 模型切换界面
  • 历史记录导出界面
  • 统计信息展示

核心类:

class ChatApplication:
    def __init__(self)                                 # 初始化应用
    def show_main_menu(self)                          # 显示主菜单
    def start_conversation(self)                       # 开始对话
    def switch_model(self)                            # 切换模型
    def show_statistics(self)                         # 显示统计信息
    def export_history(self)                          # 导出历史记录
    def clear_memory(self)                            # 清空记忆
    def run(self)                                     # 运行应用

🚀 主入口 (main.py)

职责: 应用程序启动入口

功能: 导入并启动聊天应用

🔄 工作流程

  1. 启动应用 (main.py)

    • 导入聊天应用
    • 启动主界面
  2. 初始化框架 (logic/chat_framework.py)

    • 创建模型管理器
    • 创建内存管理器
    • 构建对话图
  3. 用户交互 (apps/chat_app.py)

    • 显示菜单选项
    • 处理用户输入
    • 管理对话会话
  4. 对话处理 (logic/conversation.py)

    • 跟踪对话历史
    • 调用框架进行对话
    • 记录和管理消息
  5. 模型调用 (core/model_manager.py)

    • 获取指定模型
    • 处理API调用
    • 管理模型缓存

💡 使用示例

基本对话

from logic.chat_framework import ChatFramework
from logic.conversation import Conversation

# 创建框架和对话
framework = ChatFramework("gemini")
conversation = Conversation(framework, "my_session")

# 发送消息
response = conversation.send_message("你好,我是小明")
print(response)

# 带记忆的后续对话
response = conversation.send_message("我刚才说我叫什么?")
print(response)  # AI会记住你叫小明

切换模型

# 切换到GPT-4
framework.switch_model("gpt4")

# 继续对话
response = conversation.send_message("现在使用什么模型?")
print(response)

导出历史

# 导出为JSON格式
json_history = conversation.export_history("json")
with open("chat_history.json", "w") as f:
    f.write(json_history)

# 导出为文本格式
text_history = conversation.export_history("text")
with open("chat_history.txt", "w") as f:
    f.write(text_history)

🔧 配置说明

支持的模型配置

core/model_manager.py 中的 SUPPORTED_MODELS 字典中定义:

SUPPORTED_MODELS = {
    "gemini": {
        "model_name": "gemini-2.5-flash",
        "provider": "openai",
        "api_key_env": "OPENAI_API_KEY"
    },
    # ... 其他模型配置
}

添加自定义模型

model_manager.add_custom_model(
    key="my_model",
    model_name="my-custom-model",
    provider="custom_provider",
    api_key_env="MY_API_KEY"
)

🎯 设计特点

  1. 分层架构: 清晰的职责分离,便于维护和扩展
  2. 模块化设计: 每个组件都可以独立使用和测试
  3. 统一接口: 不同的AI模型通过统一接口访问
  4. 内存管理: 智能的对话记忆管理和会话隔离
  5. 可扩展性: 易于添加新模型、新功能和新应用

📝 注意事项

  1. 记忆持久性: 当前使用内存存储,程序重启后记忆会丢失
  2. API密钥: 需要正确配置相应模型的API密钥
  3. 依赖管理: 确保安装了所需的Python包
  4. 会话隔离: 不同的thread_id拥有独立的对话记忆

🚧 未来扩展

  • 添加数据库持久化存储
  • 支持更多AI模型
  • 添加Web界面
  • 实现对话搜索功能
  • 添加对话分析和洞察功能

该项目基于 LangChain 和 LangGraph 构建,提供了一个灵活、可扩展的聊天框架基础。

About

langchai个人项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages