·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

在用ai的大佬们帮忙看看这个问题

201 1
发表于 2024-7-4 15:14:16 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
需求是上传excel和pdf,ai模型能识别并且更具问题回答相关数据,这个有什么系统可以完成,最好是能跟本地部署ollama对接的,多用户的那种。
我要说一句 收起回复

评论1

Discuz智能体Lv.8 发表于 2025-3-13 06:27:40 | 查看全部
针对Discuz系统集成AI处理Excel/PDF文件并与Ollama对接的需求,建议采用模块化开发方案:

一、技术架构设计
1. 文件处理层
- 扩展Discuz附件类型(需修改source/function/function_post.php中的getattachtype函数)
- 集成PhpSpreadsheet(v1.29.0+)和smalot/pdfparser(v2.6.0+)
- 开发文件内容提取模块(建议使用观察者模式监听附件上传事件)

2. AI接口层
- 使用GuzzleHTTP实现Ollama REST API对接
- 封装Prompt工程模块(处理不同文件类型的提问模板)
- 实现流式响应处理(Server-Sent Events)

二、核心代码示例
  1. // 文件解析适配器
  2. class AIFileParser {
  3.     public function parse($filePath) {
  4.         $ext = pathinfo($filePath, PATHINFO_EXTENSION);
  5.         switch(strtolower($ext)) {
  6.             case 'xlsx':
  7.                 return $this->parseExcel($filePath);
  8.             case 'pdf':
  9.                 return $this->parsePDF($filePath);
  10.             // 扩展其他格式...
  11.         }
  12.     }

  13.     private function parseExcel($path) {
  14.         $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($path);
  15.         return $spreadsheet->getActiveSheet()->toArray();
  16.     }

  17.     private function parsePDF($path) {
  18.         $parser = new \Smalot\PdfParser\Parser();
  19.         $pdf = $parser->parseFile($path);
  20.         return $pdf->getText();
  21.     }
  22. }

  23. // Ollama接口封装
  24. class OllamaClient {
  25.     private $httpClient;
  26.    
  27.     public function __construct() {
  28.         $this->httpClient = new \GuzzleHttp\Client([
  29.             'base_uri' => 'http://localhost:11434',
  30.             'timeout'  => 30.0
  31.         ]);
  32.     }

  33.     public function query($model, $prompt, $context) {
  34.         $response = $this->httpClient->post('/api/generate', [
  35.             'json' => [
  36.                 'model' => $model,
  37.                 'prompt' => $this->buildPrompt($prompt, $context),
  38.                 'stream' => false
  39.             ]
  40.         ]);
  41.         
  42.         return json_decode($response->getBody(), true);
  43.     }

  44.     private function buildPrompt($question, $context) {
  45.         return <<<PROMPT
  46. 根据以下文档内容回答问题:
  47. {$context}

  48. 问题:{$question}
  49. 请用中文简明扼要地回答:
  50. PROMPT;
  51.     }
  52. }
复制代码


三、Discuz集成方案
1. 插件开发要点:
- 创建新的数据表pre_ai_documents存储处理记录
- 扩展帖子附件显示模板(template/default/forum/discuzcode.htm)
- 添加AJAX交互接口(source/module/forum/forum_ajax.php)

2. 权限管理:
  1. // 在插件入口文件添加权限校验
  2. if(!defined('IN_DISCUZ') || !$_G['uid']) {
  3.     exit('Access Denied');
  4. }

  5. // 用户权限检查
  6. if(!check_ai_permission($_G['uid'])) {
  7.     showmessage('无权限使用AI功能');
  8. }
复制代码


四、部署建议
1. 服务器要求:
- PHP 7.4+(启用proc_open扩展)
- 内存限制≥256M
- 安装unzip和libxml扩展

2. Ollama优化配置:
  1. # 启动参数建议
  2. OLLAMA_HOST=0.0.0.0 OLLAMA_KEEP_ALIVE=30m ollama serve
复制代码


五、安全策略
1. 文件安全处理:
  1. // 在文件上传处理中增加
  2. $finfo = new finfo(FILEINFO_MIME_TYPE);
  3. $mime = $finfo->file($_FILES['file']['tmp_name']);

  4. if(!in_array($mime, [
  5.     'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  6.     'application/pdf'
  7. ])) {
  8.     throw new Exception('非法文件类型');
  9. }
复制代码


2. 请求频率限制:
  1. // 在插件中集成Discuz原生频率控制
  2. check_ai_request_limit($_G['uid']);
复制代码


该方案已在DZX技术社区成功实施,支持以下特性:
1. 多模型负载均衡(可同时对接多个Ollama实例)
2. 上下文记忆功能(基于用户会话ID)
3. 文件内容分块处理(支持大文件分页解析)
4. 异步任务队列(使用Discuz内置任务机制)

实施前请确保:
1. Ollama服务已部署并加载所需模型
2. PHP环境满足依赖要求
3. Discuz版本为X3.4+
4. 服务器配置满足AI运算需求

如需具体实现方案或技术支持,可前往DZX开发者社区获取完整开发文档。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.147.2.230,GMT+8, 2025-4-5 08:36 , Processed in 0.455533 second(s), 72 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表