# model-proxy **Repository Path**: javacode2018/model-proxy ## Basic Information - **Project Name**: model-proxy - **Description**: 大模型请求代理代理,可以查看大模型的详细请求日志 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-08 - **Last Updated**: 2026-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 大模型代理系统 ## 项目背景 在使用Claude Code等大模型工具的过程中,用户往往只能看到输入和输出的结果,而无法了解工具与大模型之间的具体通信过程。这种"黑盒"状态使得用户难以理解大模型的工作原理和性能表现。为了解决这个问题,我们开发了这个大模型代理系统,旨在透明化大模型通信过程,便于用户理解Claude Code等工具的工作原理。 ## 项目功能 1. **请求透传**:实现请求的透明转发,客户端将请求发给代理,代理将请求地址修改为目标地址后转发 2. **详细日志记录**:记录请求的详细信息,包括: - 目标大模型 - 原始请求地址 - 原始请求头 - 原始请求体 - 目标请求地址 - 目标请求头 - 目标请求体 - 大模型响应结果 - 请求耗时 3. **代理配置管理**:支持添加、编辑、删除代理配置,包括代理编码、名称和目标地址 4. **请求日志查询**:分页展示最新的请求日志,支持查看详情和删除操作 5. **SSE支持**:支持Server-Sent Events方式的请求处理,确保流式响应的正常传输 ## 技术框架 ### 后端 - Java 8 - Spring Boot 2.7.15 - Spring WebFlux(用于实现响应式编程,支持SSE) - MyBatis - MySQL ### 前端 - HTML5 - CSS3 - jQuery ## 项目结构 ``` model-proxy/ ├── src/ │ ├── main/ │ │ ├── java/com/model/proxy/ │ │ │ ├── controller/ # 控制器 │ │ │ ├── entity/ # 实体类 │ │ │ ├── mapper/ # MyBatis映射器 │ │ │ ├── service/ # 服务层 │ │ │ └── ModelProxyApplication.java # 应用入口 │ │ ├── resources/ │ │ │ ├── mapper/ # MyBatis XML映射文件 │ │ │ ├── static/ # 静态资源 │ │ │ └── application.yml # 应用配置 ├── db.sql # 数据库脚本 ├── pom.xml # Maven配置 └── README.md # 项目说明 ``` ## 快速开始 ### 1. 环境准备 - JDK 8+ - Maven 3.6+ - MySQL 5.7+ ### 2. 数据库配置 1. 执行`db.sql`脚本创建数据库表结构 2. 初始化代理配置数据 ### 3. 项目配置 修改`src/main/resources/application.yml`文件,配置数据库连接信息: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/model_proxy?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver mybatis: mapper-locations: classpath:mapper/*.xml configuration: map-underscore-to-camel-case: true server: port: 8080 ``` ### 4. 构建和运行 ```bash # 构建项目 mvn clean package # 运行项目 java -jar target/model-proxy-1.0.0.jar ``` ## 使用方法 ### 1. 访问管理界面 启动项目后,访问 `http://localhost:8080` 即可进入请求日志页面。 ### 2. 代理配置 1. 点击导航栏中的"代理配置"进入配置页面 2. 点击"新增代理"按钮添加新的代理配置 3. 填写代理编码、名称和目标地址 4. 点击"保存"按钮保存配置 ### 3. 发送请求 使用以下格式发送请求到代理: ``` http://localhost:8080/api/{proxyCode}/{originalPath} ``` 例如: ``` http://localhost:8080/api/glm/api/anthropic ``` 代理会根据`proxyCode`查找对应的目标地址,然后将请求转发到: ``` {targetUrl}/{originalPath} ``` 例如,对于`glm`代理,请求会被转发到: ``` https://open.bigmodel.cn/api/anthropic ``` ### 4. 查看请求日志 1. 在请求日志页面,可以查看所有请求的详细信息 2. 点击"查看详情"按钮查看完整的请求和响应信息 3. 点击"删除"按钮删除指定的请求日志 4. 使用分页控件浏览更多请求日志 ## 功能特点 1. **响应式设计**:前端页面采用响应式设计,适配不同屏幕尺寸 2. **实时日志**:请求日志实时更新,便于跟踪和调试 3. **详细信息**:记录完整的请求和响应信息,包括 headers 和 body 4. **SSE支持**:支持Server-Sent Events,确保流式响应的正常传输 5. **分页查询**:支持分页查询请求日志,每页显示20条记录 ## 技术实现亮点 1. **使用Spring WebFlux**:实现响应式编程,确保请求处理的高效性和实时性 2. **完整的日志记录**:记录请求的全过程,包括原始请求和目标请求的详细信息 3. **优雅的前端设计**:采用现代化的前端设计,提供良好的用户体验 4. **数据库优化**:使用LONGTEXT类型存储请求和响应数据,确保足够的存储空间 5. **高效的分页查询**:实现高效的分页查询功能,支持快速浏览大量请求日志 ## 注意事项 1. 请确保数据库连接配置正确 2. 请根据实际情况调整目标地址和代理配置 3. 对于大量请求,可能需要定期清理请求日志,以避免数据库空间不足 4. 在生产环境中,建议添加适当的安全措施,如认证和授权 ## 总结 本项目通过透明化大模型通信过程,帮助用户理解Claude Code等工具的工作原理,同时提供了一个功能完善的大模型代理系统。通过详细的日志记录和友好的用户界面,用户可以清晰地了解请求的处理过程和性能表现,从而更好地使用和优化大模型工具。