PHP8.3 对接通义千问怎么存储 AI 对话记录

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
站长杂谈 41 浏览 0 回复
通义千问API无状态,对话记录不会自动保存;PHP 8.3中需在应用层主动实现存储:一、本地UTF-8文本追加写入;二、插入MySQL/PostgreSQL结构化入库;三、生成标准JSON文件供离线分析或RAG接入。

php8.3 对接通义千问怎么存储 ai 对话记录

PHP 8.3 对接通义千问时,对话记录不会自动保存——API 调用本身是无状态的,每次请求只返回结果,不落库、不同步、不归档。要实现可靠存储,需在你的 PHP 应用层主动设计写入逻辑,结合业务场景选择轻量存档或结构化入库。

一、最简方式:写入本地 UTF-8 文本文件

适合开发调试、临时留痕、无需检索的单次会话归档。

  • 调用 API 得到响应后,拼装时间戳、用户输入、AI 输出为结构化文本,例如:
    [2026-10-01 17:05:22] 用户:如何用 PHP 连接 MySQL?
    [2026-10-01 17:05:24] 千问:使用 PDO 或 mysqli 扩展……
  • 用 file_put_contents($path, $content, FILE_APPEND | LOCK_EX) 追加写入,确保多进程安全;
  • 文件名建议含日期和会话标识,如 qwen_log_20261001.txt;
  • 务必指定 mb_internal_encoding('UTF-8') 并用 mb_convert_encoding() 统一编码,避免中文乱码。

二、推荐方式:插入 MySQL / PostgreSQL 数据表

适合生产环境,支持按用户、会话 ID、关键词检索,可关联业务数据(如订单号、客服工单)。

千问文生图
千问文生图

阿里云千问文生图模型(Qwen-Image)技能,支持图像生成。当用户要求AI生成图片、画图、文生图、text-to-image,或提到千问、阿里云生图时使用。支持中英文提示词,可指定画面尺寸、风格参数等。

下载
  • 建表字段建议至少包含:
    id(自增主键)、session_id(UUID 或业务流水号)、role('user'/'assistant')、content(TEXT)、created_at(DATETIME,默认 CURRENT_TIMESTAMP);
  • 一次对话含多轮交互,每条消息单独 insert 一行,保持原子性;
  • PHP 中使用 PDO 预处理语句插入,防止 SQL 注入:
    $stmt = $pdo->prepare("INSERT INTO qwen_logs (session_id, role, content, created_at) VALUES (?, ?, ?, NOW())");
    $stmt->execute([$sessionId, 'user', $userInput]);
  • 若需全文检索,MySQL 可为 content 字段添加 FULLTEXT 索引,PostgreSQL 可用 tsvector。

三、进阶方式:写入 JSON 文件 + 定期导入知识库

适合需要导出备份、做离线分析,或对接内部 RAG 系统的团队。

立即学习“PHP免费学习笔记(深入)”;

  • 将单次完整对话(含多轮 message 数组)组装为标准 JSON:
    ["messages" => [["role"=>"user","content"=>"…"],["role"=>"assistant","content"=>"…"]], "timestamp" => "2026-10-01T17:05:22+08:00"];
  • 用 json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) 格式化输出;
  • 保存为 qwen_session_{uniqid()}.json,每日归档进 /storage/qwen/20261001/ 目录;
  • 后续可用 Python 脚本批量解析这些 JSON,导入 Elasticsearch 或向量化存入 Chroma。

四、注意避开几个坑

  • 不要依赖 $_SESSION 存储对话历史——PHP session 默认不持久,重启服务或超时即丢失;
  • 不要把 API 响应直接 echo 给前端后再靠 JS 复制保存——不可靠、易截断、无时间戳;
  • 避免在循环中频繁 fopen/fwrite 文本文件——改用缓冲写入或日志组件(如 Monolog);
  • 若使用百炼平台的流式接口(stream=true),需在回调函数中分段接收并拼接 content,再统一写入,否则可能漏掉中间片段。
评论0
回复 · 0
还没有回复
微信客服 微信客服 QQ官方交流群 QQ官方交流群