ai.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. "use strict";
  2. const common_vendor = require("../../common/vendor.js");
  3. const util_request = require("../../util/request.js");
  4. const pages_api_config = require("./config.js");
  5. function generateAIPlan(data) {
  6. return util_request.request({
  7. url: `/api/ai/travel/generate`,
  8. method: "POST",
  9. data,
  10. header: {
  11. "Content-Type": "application/json"
  12. }
  13. });
  14. }
  15. function saveAIPlan(data) {
  16. return util_request.request({
  17. url: `/api/ai/travel/plans`,
  18. method: "POST",
  19. data,
  20. header: {
  21. "Content-Type": "application/json"
  22. }
  23. });
  24. }
  25. const startAISession = async () => {
  26. var _a;
  27. try {
  28. const response = await common_vendor.index.request({
  29. url: `${pages_api_config.baseUrl}/api/ai/travel/start`,
  30. method: "POST",
  31. header: {
  32. "Content-Type": "application/json"
  33. }
  34. });
  35. if (response.statusCode === 200) {
  36. return response.data;
  37. } else {
  38. throw new Error(((_a = response.data) == null ? void 0 : _a.msg) || "创建会话失败");
  39. }
  40. } catch (error) {
  41. common_vendor.index.__f__("error", "at pages/api/ai.js:70", "创建会话失败:", error);
  42. throw error;
  43. }
  44. };
  45. const chatWithAI = async (sessionId, message) => {
  46. var _a;
  47. try {
  48. common_vendor.index.__f__("log", "at pages/api/ai.js:78", "准备发送聊天请求:", {
  49. url: `${pages_api_config.baseUrl}/api/ai/travel/chat`,
  50. sessionId,
  51. message
  52. });
  53. const isLogMessage = message.startsWith("[LOG_TO_CONSOLE]");
  54. if (isLogMessage) {
  55. common_vendor.index.__f__("log", "at pages/api/ai.js:87", "发送带日志标记的消息到服务器");
  56. }
  57. const response = await common_vendor.index.request({
  58. url: `${pages_api_config.baseUrl}/api/ai/travel/chat`,
  59. method: "POST",
  60. header: {
  61. "Content-Type": "application/json",
  62. "sessionId": sessionId,
  63. // 添加特殊标记,让后端知道要输出日志
  64. "X-Log-To-Console": "true"
  65. },
  66. data: {
  67. message,
  68. // 添加日志标志到数据中
  69. logToConsole: true
  70. }
  71. });
  72. common_vendor.index.__f__("log", "at pages/api/ai.js:106", "服务器响应状态码:", response.statusCode);
  73. if (response.statusCode === 200) {
  74. return response.data;
  75. } else {
  76. throw new Error(((_a = response.data) == null ? void 0 : _a.msg) || `请求失败: ${response.statusCode}`);
  77. }
  78. } catch (error) {
  79. common_vendor.index.__f__("error", "at pages/api/ai.js:114", "发送消息失败:", error);
  80. throw error;
  81. }
  82. };
  83. function getSSEUrl(sessionId) {
  84. return `${pages_api_config.baseUrl}/api/ai/travel/stream?sessionId=${sessionId}`;
  85. }
  86. async function getLastAIReply(sessionId) {
  87. try {
  88. common_vendor.index.__f__("log", "at pages/api/ai.js:147", "获取最新AI回复:", sessionId);
  89. const response = await common_vendor.index.request({
  90. url: `${pages_api_config.baseUrl}/api/ai/travel/status`,
  91. method: "GET",
  92. header: {
  93. "Content-Type": "application/json",
  94. "sessionId": sessionId
  95. },
  96. // 设置超时时间为5秒
  97. timeout: 5e3
  98. });
  99. common_vendor.index.__f__("log", "at pages/api/ai.js:161", "检查状态响应:", response);
  100. if (response.statusCode === 404) {
  101. common_vendor.index.__f__("log", "at pages/api/ai.js:165", "状态检查接口不存在,视为无新消息");
  102. return {
  103. code: 200,
  104. reply: null,
  105. msg: "无新消息"
  106. };
  107. }
  108. let reply = null;
  109. if (response.data) {
  110. if (response.data.reply) {
  111. reply = response.data.reply;
  112. } else if (response.data.data && response.data.data.reply) {
  113. reply = response.data.data.reply;
  114. } else if (response.data.content) {
  115. reply = response.data.content;
  116. } else if (response.data.msg && response.data.msg.length > 20) {
  117. reply = response.data.msg;
  118. }
  119. }
  120. return {
  121. code: response.data.code || 200,
  122. reply,
  123. msg: response.data.msg || "无新消息",
  124. hasNewMessage: response.data.hasNewMessage || false
  125. };
  126. } catch (error) {
  127. common_vendor.index.__f__("error", "at pages/api/ai.js:195", "获取最新回复失败:", error);
  128. return {
  129. code: 200,
  130. reply: null,
  131. msg: "检查新消息超时",
  132. hasNewMessage: false
  133. };
  134. }
  135. }
  136. async function fetchServerResponse(sessionId) {
  137. try {
  138. common_vendor.index.__f__("log", "at pages/api/ai.js:208", "获取服务器响应:", sessionId);
  139. const response = await common_vendor.index.request({
  140. url: `${pages_api_config.baseUrl}/api/ai/travel/chat`,
  141. method: "POST",
  142. header: {
  143. "Content-Type": "application/json",
  144. "sessionId": sessionId
  145. },
  146. data: {
  147. message: "显示服务器响应",
  148. command: "fetchServerResponse"
  149. }
  150. });
  151. common_vendor.index.__f__("log", "at pages/api/ai.js:224", "服务器响应:", response);
  152. return {
  153. code: response.data.code || 200,
  154. data: response.data,
  155. statusCode: response.statusCode,
  156. msg: response.data.msg || "获取服务器响应成功"
  157. };
  158. } catch (error) {
  159. common_vendor.index.__f__("error", "at pages/api/ai.js:233", "获取服务器响应失败:", error);
  160. throw error;
  161. }
  162. }
  163. exports.chatWithAI = chatWithAI;
  164. exports.fetchServerResponse = fetchServerResponse;
  165. exports.generateAIPlan = generateAIPlan;
  166. exports.getLastAIReply = getLastAIReply;
  167. exports.getSSEUrl = getSSEUrl;
  168. exports.saveAIPlan = saveAIPlan;
  169. exports.startAISession = startAISession;
  170. //# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/api/ai.js.map