# AI论文PHP源码版 **Repository Path**: libai-network_admin/ai-paper ## Basic Information - **Project Name**: AI论文PHP源码版 - **Description**: 简易的AI论文程序 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2025-08-13 - **Last Updated**: 2026-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目说明 AI 论文系统是一个基于 PHP 的文档生成工具,支持通过可配置的 Prompt 模板调用大模型接口生成内容,并用 PhpOffice/PhpWord 动态生成 Word 文档(.docx)。内置模板管理、模型管理、备份/恢复、导入/导出与生成日志统计等功能。 **程序未使用数据库和框架 只是一个简单的DEMO程序 可以根据自己想法二开** — 当前文档更新日期:2025-08-11 ## 技术栈与运行环境 - 语言与运行时:PHP 7.4+(建议 8.x) - 依赖管理:Composer - 主要依赖:phpoffice/phpword (^0.18.3) - 必需扩展:ext-xml、ext-zip、ext-mbstring(建议) - 文件写权限:需对下列文件/目录具写权限 - config.php(后台可更新) - templates.json、templates_backup/(模板持久化与备份) - generate_log.txt(生成日志) ## 目录结构(核心) - index.php:前台生成入口表单 - generate.php:生成逻辑,调用大模型 API 并生成 .docx - TemplateManager.php:模板 CRUD、备份/导入/导出 - ModelManager.php:模型 CRUD、备份/导入/导出(新增) - ConfigManager.php:安全更新 config.php,并发锁与备份 - config.php:运行配置(API、站点信息、后台账号、模型配置) - templates.json:模板配置数据文件 - models.json:模型配置数据文件(新增) - templates_backup/:模板配置自动备份目录 - models_backup/:模型配置自动备份目录(新增) - admin/:后台管理(登录、配置、模板、模型、统计) - login.php / logout.php:会话登录、退出 - admin.php:API 密钥与地址配置 - kcsys.php:站点标题与版权信息配置 - templates.php / template_edit.php / template_preview.php:模板管理、编辑与预览 - template_api.php:模板导入导出与备份恢复 API(仅登录后) - models.php / model_edit.php:模型管理、编辑(新增) - model_api.php:模型导入导出与备份恢复 API(新增) - js/template_editor.js:模板管理页面交互脚本 - js/model_manager.js:模型管理页面交互脚本(新增) - vendor/:Composer 依赖 - error/api/index.php:API 调用失败的错误页 ## 快速开始 1) 安装依赖(需已安装 Composer): ```powershell cd e:\wwwroot\127.0.012 composer install ``` 2) 配置 Web Server 指向该目录(Windows IIS、Apache 或 Nginx + PHP-FPM)。 3) 设置写权限:确保应用池用户/WWW 用户可写 config.php、templates.json、templates_backup、generate_log.txt。 4) 访问: - 前台:/index.php - 后台登录:/admin/login.php(默认 admin/admin,建议立即修改) ## 配置说明(config.php) config.php 返回 PHP 数组,关键项: - api_url:大模型聊天补全 API 地址(与 generate.php 兼容 OpenAI Chat Completions 格式) - api_key:API 密钥(用于 Authorization: Bearer) - admin_user / admin_pass:后台登录账号密码 - site_title:站点标题(前台与后台显示) - footer_copyright:页脚版权 - model_config_enabled:是否启用动态模型配置(新增) - default_api_url / default_api_key:默认API配置(新增) 后台可分别在「API 配置」与「网站设置」页面修改,底层通过 ConfigManager 加锁写入并自动在 config_backup/ 目录创建备份。 安全提示:请不要将真实密钥提交到代码仓库;生产环境建议改为从环境变量注入或使用只读挂载文件,并限制文件访问权限。 ## 前台流程(index.php -> generate.php) 1) 用户在 index.php 填写: - 论文题目 title(必填) - 论文要求 requirements(必填) - 章节数量 chapters(必填,>0) - 模型 model(下拉,动态加载自模型管理) - 模板 template(来自模板管理中已启用的模板) 2) 提交至 generate.php 后: - 依据选择的模板 ID 读取模板,拼装 Prompt,将 $title/$requirements/$chapters 替换为用户输入 - 依据选择的模型获取对应的API配置(模型专用配置优先于全局配置) - 按 OpenAI Chat Completions 结构请求对应的api_url(POST JSON) - 解析 result.choices[0].message.content - 对生成结果做简单清洗(去除 ###、**、-,处理段落空行) - 使用 PhpOffice/PhpWord 动态生成 Word 文档: - 页面边距(mm)按 1 mm ≈ 2.83 point 转换 - 标题与正文的字体、字号、行距取自模板 font_settings - 通过下载响应返回 .docx 文件 - 在 generate_log.txt 追加日志记录:`时间|标题|模型显示名|模板名(模板ID)` 3) API 调用失败会跳转到 error/api/ 错误页。 ## 模型系统 模型持久化在 models.json,ModelManager 负责: - getAllModels / getActiveModels / getModelById - addModel / updateModel / deleteModel(软删除 is_active=false) / restoreModel - createBackup / getBackups / restoreFromBackup - exportModels / importModels(导入前会自动备份现有模型) 模型数据结构(JSON)示例字段: - id:模型唯一 ID(新增自动生成为 model_XXX) - name:模型名称(用于API调用) - display_name:显示名称(前台显示) - value:模型值(传递给API的model参数) - api_url:专用API地址(可选,为空使用全局配置) - api_key:专用API密钥(可选,为空使用全局配置) - description:模型说明 - status:模型状态(active、inactive、maintenance) - sort_order:排序权重(数字越小越靠前) - created_at, updated_at:时间戳 - is_active:是否启用 API配置优先级: - 模型专用配置 > 全局默认配置 - 支持每个模型使用不同的API地址和密钥 后台页面说明: - 模型列表(admin/models.php):支持新建、编辑、删除/恢复、状态管理、备份/恢复、导入/导出 - 模型编辑(admin/model_edit.php):配置模型基本信息、API设置、状态管理 - 模型管理 API(admin/model_api.php):模型 CRUD、导入导出与备份恢复接口 ## 模板系统 模板持久化在 templates.json,TemplateManager 负责: - getAllTemplates / getActiveTemplates / getTemplateById - addTemplate / updateTemplate / deleteTemplate(软删除 is_active=false) / restoreTemplate - createBackup / getBackups / restoreFromBackup - exportTemplates / importTemplates(导入前会自动备份现有模板) 模板数据结构(JSON)示例字段: - id:模板唯一 ID(新增自动生成为 template_XXX) - name:模板名称 - type:模板类型(如 undergraduate_proposal、graduate_thesis、custom) - description:说明 - prompt:Prompt 模板文本,支持占位符 $title / $requirements / $chapters - page_settings:{ size, margin_top, margin_bottom, margin_left, margin_right }(单位:mm) - font_settings:{ title_font, title_size, content_font, content_size, line_spacing } - created_at, updated_at:时间戳 - is_active:是否启用 占位符说明: - $title —— 用户输入的论文题目 - $requirements —— 用户输入的论文要求 - $chapters —— 用户选择的章节数量 后台页面说明: - 模板列表(admin/templates.php):支持新建、编辑、删除/恢复、预览、备份/恢复、导入/导出 - 模板编辑(admin/template_edit.php):分标签配置基本信息、页面设置、字体设置与 Prompt;右侧支持即时预览替换效果 - 模板预览(admin/template_preview.php):以示例数据渲染占位符,高亮显示占位符,并模拟页面样式 ## 后台与接口 登录与会话: - /admin/login.php 使用 config.php 的 admin_user/admin_pass 校验 - 登录成功后设置 `$_SESSION['loggedin']=true`,所有后台页与接口均需会话 配置管理: - /admin/admin.php:更新 api_url、api_key - /admin/kcsys.php:更新 site_title、footer_copyright - /admin/models.php:模型管理(新增) - 通过 ConfigManager 加锁写入并在 config_backup/ 中落盘备份 统计: - /admin/stats.php 按 generate_log.txt 统计当日生成次数,并列出「时间/标题/模型」 - 日志格式与 generate.php 记录一致,但统计仅取前三列 模型管理 API(仅登录后,可参考 js/model_manager.js 的调用): - GET admin/model_api.php?action=export - 响应:直接下载 models_yyyy-mm-dd_HH-MM-SS.json - POST admin/model_api.php(Content-Type: application/x-www-form-urlencoded) - action=import&data=:导入模型(覆盖),返回 {success, message} - action=restore_backup&backup_file=<文件名>:从备份恢复,返回 {success, message} - GET admin/model_api.php?action=get_model&id=<模型ID> - 返回 {success, data} - GET admin/model_api.php?action=get_active_models - 返回 {success, data:[{id,name,display_name,value,description}]} - POST admin/model_api.php - action=test_api&api_url=<>&api_key=<>&model_value=<>:测试API连接,返回 {success, message} 模板管理 API(仅登录后,可参考 js/template_editor.js 的调用): - GET admin/template_api.php?action=export - 响应:直接下载 templates_yyyy-mm-dd_HH-MM-SS.json - POST admin/template_api.php(Content-Type: application/x-www-form-urlencoded) - action=import&data=:导入模板(覆盖),返回 {success, message} - action=restore_backup&backup_file=<文件名>:从备份恢复,返回 {success, message} - GET admin/template_api.php?action=get_template&id=<模板ID> - 返回 {success, data} - GET admin/template_api.php?action=get_active_templates - 返回 {success, data:[{id,name,type,description}]} - GET admin/template_api.php?action=preview&id=<模板ID> - 返回 {success, data:{template, preview_prompt}} ## 权限与安全 - 强烈建议修改默认后台账号/密码 - 保护 API Key:不要将生产密钥提交至仓库,限制 config.php 的读写权限 - 会话安全:所有后台与 API 接口均检查 `$_SESSION['loggedin']` - 输入过滤:前台对表单字段做基本校验与 htmlspecialchars 处理;仍建议在网关层加 WAF/限速 - 文件权限:确保仅应用需要的最小写权限;备份目录不可对公网暴露 ## 常见问题与排查 1) 生成的 .docx 打不开或内容为空 - 检查 PHP 扩展 ext-zip、ext-xml 是否启用 - 检查 `vendor` 是否安装,且未报错 - 查看 error_log 与 error/api 页面是否被触发 2) API 请求失败 - 确认 api_url 可访问、api_key 正确 - 目标服务是否兼容 OpenAI Chat Completions 格式(messages/choices[0].message.content) - 服务器出网、防火墙与 SNI/证书设置 3) 中文字体不生效 - 生成的 Word 显示取决于客户端字体可用性(宋体、黑体等需在客户端存在) 4) 模板导入报错 - 确保 JSON 格式正确,且包含顶层 `templates` 数组 - 先创建备份再导入,便于回滚 ## 已知事项 - admin/admin.php 中存在一次无用赋值 `$config = $new_config;`($new_config 未定义)。该行对功能无影响,但建议移除以避免困惑。 - 日志格式为四列,但统计页仅读取前三列属预期行为。 ## 变更与发布建议 - 模板或配置更新后无需重启服务 - 重要更新前请先使用模板「创建备份」按钮备份,再导入新模板 - 变更 API 地址/Key 后建议做一次连通性测试(在前台提交一次最小请求) ## 开发指引(扩展点) - 新增模型选项:通过后台模型管理添加,前台自动显示 - 新增占位符:扩展 generate.php 的占位符替换逻辑与模板编辑页说明 - 增强排版:可在 PhpWord 中添加段落缩进、目录、页眉页脚等 - 接口抽象:如需支持流式或不同厂商 API,可封装统一的 Client 适配层 - 模型配置扩展:支持温度、最大令牌数等模型参数配置 ## 许可证与致谢 - 使用 PhpOffice/PhpWord(MIT License),感谢其优秀的开源工作 ## 附录:快速检查清单 - [ ] Composer 依赖安装完成(vendor 存在) - [ ] PHP 扩展 zip、xml 启用 - [ ] config.php、templates.json、models.json 可写;templates_backup/、models_backup/、generate_log.txt 可写 - [ ] 后台默认账号已修改 - [ ] 使用模板管理页创建一次备份 - [ ] 使用模型管理页创建一次备份 - [ ] 通过前台完成一次测试生成并下载 .docx ## 预览 ![输入图片说明](25c307f1175c01f20070fad7dbe2a8d.png) ![输入图片说明](5ca624d64b691307beccda20608945c.png) ![输入图片说明](8974197b1cb6f4b913cf3004f4bc1d5.png) ![输入图片说明](060849f034d0b8bc1f3594618cdd7a0.png) ![输入图片说明](e58aa9e895b5bc12b4699776f28a3f3.png) ![输入图片说明](b21e47b3520cec98e3933bced097cf1.png) ## 其它 更多其它细节请看代码,如果对代码有疑问的,请加我微信chenxu_1208