yxl
2025-02-19 3dc17dbcb1fb1d64c469deed1518d1817846b452
src/views/chartView/index.vue
@@ -108,12 +108,6 @@
        this.setRagMoreList(res);
      }
    });
    // axios.get("http://192.168.11.89:12315/Markdown.md").then((response) => {
    //     if (response.status == 200) {
    //       console.log(response);
    //       this.setMarkDownInfo(response.data);
    //     }
    //   });
  },
  methods: {
    createSocket() {
@@ -149,7 +143,7 @@
      const item = {
        sourceType: "Tileset",
        name: "MilitaryFacilities",
        url: "/data-api/gisserver/c3dserver/sedb_DESKTOP-15DOTHJ_SEM4550/tileset.json",
        url: config.modelUrl,
      };
      setTimeout(() => {
        mapServer.addServer(item);
@@ -251,53 +245,33 @@
      this.$store.state.setListColor = [];
      this.$store.state.showLenged = false;
      this.$store.state.showRelationBox = false;
      // const formData = new FormData();
      // formData.append("message", res);
      // formData.append("lib_id", "No1");
      // formData.append("session_id", this.uuid.toString());
      const formData = {
        message: res,
        message: res.replace(/\s+/g, ""),
        lib_id: "No1",
        session_id: this.uuid.toString(),
      };
      if (formData.message.indexOf("@map") > -1) {
        var obj = {
          ai: "",
          create_time: msgData.getDate1(),
          human: res,
          sessionid: this.uuid,
          update_time: "",
          userid: 0,
        };
        getAgentThistorySave(obj).then((response) => {
          if (response.code == 200) {
            obj.id = response.id;
            this.obj = obj;
          }
      var obj = {
        ai: "",
        create_time: msgData.getDate1(),
        human: res,
        sessionid: this.uuid,
        update_time: "",
        userid: 0,
      };
      getAgentThistorySave(obj).then((response) => {
        if (response.code == 200) {
          obj.id = response.id;
          this.obj = obj;
        }
        if (formData.message.indexOf("@map") > -1) {
          this.setAgentIntention(obj, formData);
        });
      } else {
        this.setRagAgentIntention(formData);
      }
      // var obj = {
      //   ai: "",
      //   create_time: msgData.getDate1(),
      //   human: res,
      //   sessionid: this.uuid,
      //   update_time: "",
      //   userid: 0,
      // };
      // getAgentThistorySave(obj).then((response) => {
      //   if (response.code == 200) {
      //     obj.id = response.id;
      //     this.obj = obj;
      //   }
      //   this.setAgentIntention(obj, formData);
      // });
        } else {
          this.setRagAgentIntention(obj, formData);
        }
      });
    },
    //地图相关问答
    async setAgentIntention(obj, formData) {
      console.log("obj", formData);
      if (formData.message.indexOf("@map") > -1) {
@@ -396,7 +370,7 @@
      //   });
    },
    //普通对话问答
    async setRagAgentIntention(formData) {
    async setRagAgentIntention(obj, formData) {
      try {
        // 发送请求
        const params = new URLSearchParams(formData);
@@ -424,25 +398,97 @@
        // 将流中的字节数据解码为文本字符串
        const textDecoder = new TextDecoder();
        let result = true;
        let thinkMsg = false;
        let sqlValue = "";
        let afterText = "";
        while (result) {
          // done表示流是否已经完成读取  value包含读取到的数据块
          const { done, value } = await reader.read();
          if (done) {
            result = false;
            this.setUpdateHistoryInFor(obj, sqlValue);
            console.log(sqlValue, "sqlValue-----");
            break;
          }
          console.log(textDecoder.decode(value), "分段返回的数据");
          sqlValue += textDecoder.decode(value);
          var rolMsg = [
            {
              type: "stream",
              val: marked(sqlValue),
            },
          ];
          this.refashMsg(rolMsg);
          let resText = textDecoder.decode(value);
          //包含<think>停止输出
          //包含</think>继续输出
          console.log(resText, "返回的数据");
          if (resText.indexOf("<think>") > -1) {
            resText = resText.replace(/<think>/, "");
            thinkMsg = true;
            sqlValue += resText;
            var rolMsg = [
              {
                type: "stream",
                thinkMsg: thinkMsg,
                val: marked(sqlValue),
              },
            ];
            this.refashMsg(rolMsg);
          } else if (resText.indexOf("</think>") > -1) {
            let position = resText.indexOf("</think>");
            //</think>之前的内容
            const beforeText = resText.substring(0, position);
            //刷新
            sqlValue += beforeText;
            var rolMsg = [
              {
                type: "stream",
                thinkMsg: thinkMsg,
                val: marked(sqlValue),
              },
            ];
            this.refashMsg(rolMsg);
            thinkMsg = false;
            // </think>之后的内容
            const afterT = resText.substring(position + "</think>".length);
            //刷新
            if (afterT) {
              afterText += afterT;
              var rolMsg = [
                {
                  type: "stream",
                  thinkMsg: true,
                  val: marked(sqlValue),
                },
                {
                  type: "stream",
                  thinkMsg: false,
                  val: marked(afterText),
                },
              ];
              this.refashMsg(rolMsg);
            }
          } else {
            if (thinkMsg) {
              sqlValue += resText;
              var rolMsg = [
                {
                  type: "stream",
                  thinkMsg: thinkMsg,
                  val: marked(sqlValue),
                },
              ];
              this.refashMsg(rolMsg);
            } else {
              afterText += resText;
              var rolMsg = [
                {
                  type: "stream",
                  thinkMsg: true,
                  val: marked(sqlValue),
                },
                {
                  type: "stream",
                  thinkMsg: false,
                  val: marked(afterText),
                },
              ];
              this.refashMsg(rolMsg);
            }
          }
        }
        // console.log(sqlValue, "输出所有返回数据");
      } catch (err) {
        var rolMsg = [
          {
@@ -453,20 +499,7 @@
        this.refashMsg(rolMsg);
      }
    },
    async streamChatResponse(formData) {
      try {
        const response = await getRagAgentIntention(formData);
        return response; // 返回流响应
      } catch (error) {
        var rolMsg = [
          {
            type: "text",
            val: "未查询到相关信息。",
          },
        ];
        this.refashMsg(rolMsg);
      }
    },
    setMapfunc(res, obj) {
      this.$store.state.showLenged = false;
      switch (res.func) {
@@ -636,6 +669,18 @@
          this.setUpdateHistoryInFor(obj, res.msg);
          this.refashMsg(roleMsg.list);
          break;
        case "getTAIWAN":
          mapSetFunc.init(res);
          console.log("res.data.targetinfo", res);
          const resInfo = res.data
            .map((item) => `| ${item.name} | ${item.targetinfo} |`)
            .join("\n");
          var attr = `| 名称 | 属性信息 |\n|------|------|\n` + resInfo;
          console.log("aaa", attr);
          var roleMsg = msgData.getMdData("markdown", attr);
          this.setUpdateHistoryInFor(obj, res.msg);
          this.refashMsg(roleMsg.list);
          break;
        case "attackentity":
          mapSetFunc.init(res);
          this.setUpdateHistoryInFor(obj, res.msg);