ninegrid2 6.502.0 → 6.503.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/aiContainer.js +24 -26
- package/dist/bundle.cjs.js +23 -26
- package/dist/bundle.esm.js +23 -26
- package/package.json +1 -1
- package/src/ai/aiContainer.js +24 -26
package/dist/ai/aiContainer.js
CHANGED
|
@@ -62,32 +62,24 @@ class aiContainer extends HTMLElement
|
|
|
62
62
|
|
|
63
63
|
console.log(this.#target, this.#target.tagName);
|
|
64
64
|
|
|
65
|
-
this.#target.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
if (this.#target.tagName === "NINE-GRID") {
|
|
66
|
+
this.#target.columns.info().forEach(info => {
|
|
67
|
+
colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return colInfo;
|
|
70
72
|
};
|
|
71
73
|
|
|
72
74
|
#generateQdrantFilter = async (userInput) => {
|
|
73
75
|
|
|
74
|
-
//console.log(document.querySelector("nine-grid").body.querySelector(`thead [data-col="6"]`));
|
|
75
|
-
//console.log(document.querySelector("nine-grid").columns.info());
|
|
76
|
-
|
|
77
|
-
let colInfo = "";
|
|
78
|
-
document.querySelector("nine-grid").columns.info().forEach(info => {
|
|
79
|
-
colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
//console.log(colInfo);
|
|
83
|
-
|
|
84
76
|
// Qdrant 필터로 변환하기 위한 프롬프트 엔지니어링
|
|
85
77
|
// 중요: 실제 컬렉션의 payload 필드와 그 데이터 타입을 정확히 알려줘야 Gemini가 올바른 필터를 생성합니다.
|
|
86
78
|
const prompt = `
|
|
87
79
|
자연어 쿼리를 Qdrant 필터 JSON 객체로 변환하는 AI 비서입니다.
|
|
88
80
|
|
|
89
81
|
Qdrant 컬렉션에서 사용 가능한 메타데이터 필드와 유형은 다음과 같습니다.:
|
|
90
|
-
${
|
|
82
|
+
${this.#getColumnInfo()}
|
|
91
83
|
|
|
92
84
|
필터 생성 규칙:
|
|
93
85
|
1. 위에 제공된 필드만 사용하십시오. 새로운 필드를 만들지 마십시오.
|
|
@@ -129,17 +121,17 @@ class aiContainer extends HTMLElement
|
|
|
129
121
|
}
|
|
130
122
|
//filterString = filterString.replaceAll('"value"', '"text"')
|
|
131
123
|
console.log("Generated Filter String:", filterString);
|
|
132
|
-
|
|
124
|
+
filterString = "a" + filterString;
|
|
133
125
|
// Gemini가 JSON 모드나 Structured Output을 지원하지 않는 경우, 직접 파싱 시도
|
|
134
126
|
// 안정적인 JSON 파싱을 위해 'JSON Mode' 또는 Function Calling 사용을 강력히 권장
|
|
135
127
|
// LangChain의 SelfQueryRetriever를 사용하면 이 부분을 자동화할 수 있습니다.
|
|
136
|
-
try {
|
|
128
|
+
//try {
|
|
137
129
|
return JSON.parse(filterString);
|
|
138
|
-
} catch (parseError) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
130
|
+
//} catch (parseError) {
|
|
131
|
+
// console.error("Failed to parse filter string as JSON:", parseError);
|
|
132
|
+
// console.error("String that failed to parse:", filterString);
|
|
133
|
+
// return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
|
|
134
|
+
//}
|
|
143
135
|
|
|
144
136
|
} catch (error) {
|
|
145
137
|
console.error("Error generating Qdrant filter with Gemini:", error);
|
|
@@ -148,15 +140,15 @@ class aiContainer extends HTMLElement
|
|
|
148
140
|
}
|
|
149
141
|
|
|
150
142
|
#q1 = () => {
|
|
151
|
-
this.#
|
|
143
|
+
this.#generateQdrantFilter();
|
|
152
144
|
};
|
|
153
145
|
|
|
154
146
|
#q2 = () => {
|
|
155
|
-
this.#
|
|
147
|
+
this.#generateQdrantFilter();
|
|
156
148
|
};
|
|
157
149
|
|
|
158
150
|
#q3 = () => {
|
|
159
|
-
this.#
|
|
151
|
+
this.#generateQdrantFilter();
|
|
160
152
|
};
|
|
161
153
|
|
|
162
154
|
#init = (info) => {
|
|
@@ -174,6 +166,12 @@ this.#getColumnInfo();
|
|
|
174
166
|
#keydownHandler = (e) => {
|
|
175
167
|
if (e.key !== "Enter") return;
|
|
176
168
|
|
|
169
|
+
if (this.#target.tagName === "NINE-GRID") {
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
throw new Error("지원하지 않는 그리드 입니다.");
|
|
173
|
+
}
|
|
174
|
+
|
|
177
175
|
e.preventDefault();
|
|
178
176
|
|
|
179
177
|
const question = e.target.value.trim();
|
package/dist/bundle.cjs.js
CHANGED
|
@@ -27916,32 +27916,24 @@ class aiContainer extends HTMLElement
|
|
|
27916
27916
|
|
|
27917
27917
|
console.log(this.#target, this.#target.tagName);
|
|
27918
27918
|
|
|
27919
|
-
this.#target.
|
|
27920
|
-
|
|
27921
|
-
|
|
27922
|
-
|
|
27923
|
-
|
|
27919
|
+
if (this.#target.tagName === "NINE-GRID") {
|
|
27920
|
+
this.#target.columns.info().forEach(info => {
|
|
27921
|
+
colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
|
|
27922
|
+
});
|
|
27923
|
+
}
|
|
27924
|
+
|
|
27925
|
+
return colInfo;
|
|
27924
27926
|
};
|
|
27925
27927
|
|
|
27926
27928
|
#generateQdrantFilter = async (userInput) => {
|
|
27927
27929
|
|
|
27928
|
-
//console.log(document.querySelector("nine-grid").body.querySelector(`thead [data-col="6"]`));
|
|
27929
|
-
//console.log(document.querySelector("nine-grid").columns.info());
|
|
27930
|
-
|
|
27931
|
-
let colInfo = "";
|
|
27932
|
-
document.querySelector("nine-grid").columns.info().forEach(info => {
|
|
27933
|
-
colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
|
|
27934
|
-
});
|
|
27935
|
-
|
|
27936
|
-
//console.log(colInfo);
|
|
27937
|
-
|
|
27938
27930
|
// Qdrant 필터로 변환하기 위한 프롬프트 엔지니어링
|
|
27939
27931
|
// 중요: 실제 컬렉션의 payload 필드와 그 데이터 타입을 정확히 알려줘야 Gemini가 올바른 필터를 생성합니다.
|
|
27940
27932
|
const prompt = `
|
|
27941
27933
|
자연어 쿼리를 Qdrant 필터 JSON 객체로 변환하는 AI 비서입니다.
|
|
27942
27934
|
|
|
27943
27935
|
Qdrant 컬렉션에서 사용 가능한 메타데이터 필드와 유형은 다음과 같습니다.:
|
|
27944
|
-
${
|
|
27936
|
+
${this.#getColumnInfo()}
|
|
27945
27937
|
|
|
27946
27938
|
필터 생성 규칙:
|
|
27947
27939
|
1. 위에 제공된 필드만 사용하십시오. 새로운 필드를 만들지 마십시오.
|
|
@@ -27983,17 +27975,17 @@ class aiContainer extends HTMLElement
|
|
|
27983
27975
|
}
|
|
27984
27976
|
//filterString = filterString.replaceAll('"value"', '"text"')
|
|
27985
27977
|
console.log("Generated Filter String:", filterString);
|
|
27986
|
-
|
|
27978
|
+
filterString = "a" + filterString;
|
|
27987
27979
|
// Gemini가 JSON 모드나 Structured Output을 지원하지 않는 경우, 직접 파싱 시도
|
|
27988
27980
|
// 안정적인 JSON 파싱을 위해 'JSON Mode' 또는 Function Calling 사용을 강력히 권장
|
|
27989
27981
|
// LangChain의 SelfQueryRetriever를 사용하면 이 부분을 자동화할 수 있습니다.
|
|
27990
|
-
try {
|
|
27982
|
+
//try {
|
|
27991
27983
|
return JSON.parse(filterString);
|
|
27992
|
-
} catch (parseError) {
|
|
27993
|
-
|
|
27994
|
-
|
|
27995
|
-
|
|
27996
|
-
}
|
|
27984
|
+
//} catch (parseError) {
|
|
27985
|
+
// console.error("Failed to parse filter string as JSON:", parseError);
|
|
27986
|
+
// console.error("String that failed to parse:", filterString);
|
|
27987
|
+
// return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
|
|
27988
|
+
//}
|
|
27997
27989
|
|
|
27998
27990
|
} catch (error) {
|
|
27999
27991
|
console.error("Error generating Qdrant filter with Gemini:", error);
|
|
@@ -28002,15 +27994,15 @@ class aiContainer extends HTMLElement
|
|
|
28002
27994
|
}
|
|
28003
27995
|
|
|
28004
27996
|
#q1 = () => {
|
|
28005
|
-
this.#
|
|
27997
|
+
this.#generateQdrantFilter();
|
|
28006
27998
|
};
|
|
28007
27999
|
|
|
28008
28000
|
#q2 = () => {
|
|
28009
|
-
this.#
|
|
28001
|
+
this.#generateQdrantFilter();
|
|
28010
28002
|
};
|
|
28011
28003
|
|
|
28012
28004
|
#q3 = () => {
|
|
28013
|
-
this.#
|
|
28005
|
+
this.#generateQdrantFilter();
|
|
28014
28006
|
};
|
|
28015
28007
|
|
|
28016
28008
|
#init = (info) => {
|
|
@@ -28028,6 +28020,11 @@ this.#getColumnInfo();
|
|
|
28028
28020
|
#keydownHandler = (e) => {
|
|
28029
28021
|
if (e.key !== "Enter") return;
|
|
28030
28022
|
|
|
28023
|
+
if (this.#target.tagName === "NINE-GRID") ;
|
|
28024
|
+
else {
|
|
28025
|
+
throw new Error("지원하지 않는 그리드 입니다.");
|
|
28026
|
+
}
|
|
28027
|
+
|
|
28031
28028
|
e.preventDefault();
|
|
28032
28029
|
|
|
28033
28030
|
const question = e.target.value.trim();
|
package/dist/bundle.esm.js
CHANGED
|
@@ -27914,32 +27914,24 @@ class aiContainer extends HTMLElement
|
|
|
27914
27914
|
|
|
27915
27915
|
console.log(this.#target, this.#target.tagName);
|
|
27916
27916
|
|
|
27917
|
-
this.#target.
|
|
27918
|
-
|
|
27919
|
-
|
|
27920
|
-
|
|
27921
|
-
|
|
27917
|
+
if (this.#target.tagName === "NINE-GRID") {
|
|
27918
|
+
this.#target.columns.info().forEach(info => {
|
|
27919
|
+
colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
|
|
27920
|
+
});
|
|
27921
|
+
}
|
|
27922
|
+
|
|
27923
|
+
return colInfo;
|
|
27922
27924
|
};
|
|
27923
27925
|
|
|
27924
27926
|
#generateQdrantFilter = async (userInput) => {
|
|
27925
27927
|
|
|
27926
|
-
//console.log(document.querySelector("nine-grid").body.querySelector(`thead [data-col="6"]`));
|
|
27927
|
-
//console.log(document.querySelector("nine-grid").columns.info());
|
|
27928
|
-
|
|
27929
|
-
let colInfo = "";
|
|
27930
|
-
document.querySelector("nine-grid").columns.info().forEach(info => {
|
|
27931
|
-
colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
|
|
27932
|
-
});
|
|
27933
|
-
|
|
27934
|
-
//console.log(colInfo);
|
|
27935
|
-
|
|
27936
27928
|
// Qdrant 필터로 변환하기 위한 프롬프트 엔지니어링
|
|
27937
27929
|
// 중요: 실제 컬렉션의 payload 필드와 그 데이터 타입을 정확히 알려줘야 Gemini가 올바른 필터를 생성합니다.
|
|
27938
27930
|
const prompt = `
|
|
27939
27931
|
자연어 쿼리를 Qdrant 필터 JSON 객체로 변환하는 AI 비서입니다.
|
|
27940
27932
|
|
|
27941
27933
|
Qdrant 컬렉션에서 사용 가능한 메타데이터 필드와 유형은 다음과 같습니다.:
|
|
27942
|
-
${
|
|
27934
|
+
${this.#getColumnInfo()}
|
|
27943
27935
|
|
|
27944
27936
|
필터 생성 규칙:
|
|
27945
27937
|
1. 위에 제공된 필드만 사용하십시오. 새로운 필드를 만들지 마십시오.
|
|
@@ -27981,17 +27973,17 @@ class aiContainer extends HTMLElement
|
|
|
27981
27973
|
}
|
|
27982
27974
|
//filterString = filterString.replaceAll('"value"', '"text"')
|
|
27983
27975
|
console.log("Generated Filter String:", filterString);
|
|
27984
|
-
|
|
27976
|
+
filterString = "a" + filterString;
|
|
27985
27977
|
// Gemini가 JSON 모드나 Structured Output을 지원하지 않는 경우, 직접 파싱 시도
|
|
27986
27978
|
// 안정적인 JSON 파싱을 위해 'JSON Mode' 또는 Function Calling 사용을 강력히 권장
|
|
27987
27979
|
// LangChain의 SelfQueryRetriever를 사용하면 이 부분을 자동화할 수 있습니다.
|
|
27988
|
-
try {
|
|
27980
|
+
//try {
|
|
27989
27981
|
return JSON.parse(filterString);
|
|
27990
|
-
} catch (parseError) {
|
|
27991
|
-
|
|
27992
|
-
|
|
27993
|
-
|
|
27994
|
-
}
|
|
27982
|
+
//} catch (parseError) {
|
|
27983
|
+
// console.error("Failed to parse filter string as JSON:", parseError);
|
|
27984
|
+
// console.error("String that failed to parse:", filterString);
|
|
27985
|
+
// return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
|
|
27986
|
+
//}
|
|
27995
27987
|
|
|
27996
27988
|
} catch (error) {
|
|
27997
27989
|
console.error("Error generating Qdrant filter with Gemini:", error);
|
|
@@ -28000,15 +27992,15 @@ class aiContainer extends HTMLElement
|
|
|
28000
27992
|
}
|
|
28001
27993
|
|
|
28002
27994
|
#q1 = () => {
|
|
28003
|
-
this.#
|
|
27995
|
+
this.#generateQdrantFilter();
|
|
28004
27996
|
};
|
|
28005
27997
|
|
|
28006
27998
|
#q2 = () => {
|
|
28007
|
-
this.#
|
|
27999
|
+
this.#generateQdrantFilter();
|
|
28008
28000
|
};
|
|
28009
28001
|
|
|
28010
28002
|
#q3 = () => {
|
|
28011
|
-
this.#
|
|
28003
|
+
this.#generateQdrantFilter();
|
|
28012
28004
|
};
|
|
28013
28005
|
|
|
28014
28006
|
#init = (info) => {
|
|
@@ -28026,6 +28018,11 @@ this.#getColumnInfo();
|
|
|
28026
28018
|
#keydownHandler = (e) => {
|
|
28027
28019
|
if (e.key !== "Enter") return;
|
|
28028
28020
|
|
|
28021
|
+
if (this.#target.tagName === "NINE-GRID") ;
|
|
28022
|
+
else {
|
|
28023
|
+
throw new Error("지원하지 않는 그리드 입니다.");
|
|
28024
|
+
}
|
|
28025
|
+
|
|
28029
28026
|
e.preventDefault();
|
|
28030
28027
|
|
|
28031
28028
|
const question = e.target.value.trim();
|
package/package.json
CHANGED
package/src/ai/aiContainer.js
CHANGED
|
@@ -62,32 +62,24 @@ class aiContainer extends HTMLElement
|
|
|
62
62
|
|
|
63
63
|
console.log(this.#target, this.#target.tagName);
|
|
64
64
|
|
|
65
|
-
this.#target.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
if (this.#target.tagName === "NINE-GRID") {
|
|
66
|
+
this.#target.columns.info().forEach(info => {
|
|
67
|
+
colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return colInfo;
|
|
70
72
|
};
|
|
71
73
|
|
|
72
74
|
#generateQdrantFilter = async (userInput) => {
|
|
73
75
|
|
|
74
|
-
//console.log(document.querySelector("nine-grid").body.querySelector(`thead [data-col="6"]`));
|
|
75
|
-
//console.log(document.querySelector("nine-grid").columns.info());
|
|
76
|
-
|
|
77
|
-
let colInfo = "";
|
|
78
|
-
document.querySelector("nine-grid").columns.info().forEach(info => {
|
|
79
|
-
colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
//console.log(colInfo);
|
|
83
|
-
|
|
84
76
|
// Qdrant 필터로 변환하기 위한 프롬프트 엔지니어링
|
|
85
77
|
// 중요: 실제 컬렉션의 payload 필드와 그 데이터 타입을 정확히 알려줘야 Gemini가 올바른 필터를 생성합니다.
|
|
86
78
|
const prompt = `
|
|
87
79
|
자연어 쿼리를 Qdrant 필터 JSON 객체로 변환하는 AI 비서입니다.
|
|
88
80
|
|
|
89
81
|
Qdrant 컬렉션에서 사용 가능한 메타데이터 필드와 유형은 다음과 같습니다.:
|
|
90
|
-
${
|
|
82
|
+
${this.#getColumnInfo()}
|
|
91
83
|
|
|
92
84
|
필터 생성 규칙:
|
|
93
85
|
1. 위에 제공된 필드만 사용하십시오. 새로운 필드를 만들지 마십시오.
|
|
@@ -129,17 +121,17 @@ class aiContainer extends HTMLElement
|
|
|
129
121
|
}
|
|
130
122
|
//filterString = filterString.replaceAll('"value"', '"text"')
|
|
131
123
|
console.log("Generated Filter String:", filterString);
|
|
132
|
-
|
|
124
|
+
filterString = "a" + filterString;
|
|
133
125
|
// Gemini가 JSON 모드나 Structured Output을 지원하지 않는 경우, 직접 파싱 시도
|
|
134
126
|
// 안정적인 JSON 파싱을 위해 'JSON Mode' 또는 Function Calling 사용을 강력히 권장
|
|
135
127
|
// LangChain의 SelfQueryRetriever를 사용하면 이 부분을 자동화할 수 있습니다.
|
|
136
|
-
try {
|
|
128
|
+
//try {
|
|
137
129
|
return JSON.parse(filterString);
|
|
138
|
-
} catch (parseError) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
130
|
+
//} catch (parseError) {
|
|
131
|
+
// console.error("Failed to parse filter string as JSON:", parseError);
|
|
132
|
+
// console.error("String that failed to parse:", filterString);
|
|
133
|
+
// return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
|
|
134
|
+
//}
|
|
143
135
|
|
|
144
136
|
} catch (error) {
|
|
145
137
|
console.error("Error generating Qdrant filter with Gemini:", error);
|
|
@@ -148,15 +140,15 @@ class aiContainer extends HTMLElement
|
|
|
148
140
|
}
|
|
149
141
|
|
|
150
142
|
#q1 = () => {
|
|
151
|
-
this.#
|
|
143
|
+
this.#generateQdrantFilter();
|
|
152
144
|
};
|
|
153
145
|
|
|
154
146
|
#q2 = () => {
|
|
155
|
-
this.#
|
|
147
|
+
this.#generateQdrantFilter();
|
|
156
148
|
};
|
|
157
149
|
|
|
158
150
|
#q3 = () => {
|
|
159
|
-
this.#
|
|
151
|
+
this.#generateQdrantFilter();
|
|
160
152
|
};
|
|
161
153
|
|
|
162
154
|
#init = (info) => {
|
|
@@ -174,6 +166,12 @@ this.#getColumnInfo();
|
|
|
174
166
|
#keydownHandler = (e) => {
|
|
175
167
|
if (e.key !== "Enter") return;
|
|
176
168
|
|
|
169
|
+
if (this.#target.tagName === "NINE-GRID") {
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
throw new Error("지원하지 않는 그리드 입니다.");
|
|
173
|
+
}
|
|
174
|
+
|
|
177
175
|
e.preventDefault();
|
|
178
176
|
|
|
179
177
|
const question = e.target.value.trim();
|