@gendive/chatllm 0.15.0 → 0.15.2
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/react/index.d.mts +6 -2
- package/dist/react/index.d.ts +6 -2
- package/dist/react/index.js +61 -16
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +61 -16
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react/index.mjs
CHANGED
|
@@ -919,21 +919,53 @@ var useSkills = (options) => {
|
|
|
919
919
|
);
|
|
920
920
|
if (autoSkills.length === 0) return "";
|
|
921
921
|
const skillDescriptions = autoSkills.map(([name, config]) => {
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
922
|
+
let desc = `### ${name}
|
|
923
|
+
${config.description}`;
|
|
924
|
+
if (config.parameters?.properties) {
|
|
925
|
+
desc += "\n\uD30C\uB77C\uBBF8\uD130:";
|
|
926
|
+
const props = config.parameters.properties;
|
|
927
|
+
const requiredList = config.parameters.required || [];
|
|
928
|
+
Object.entries(props).forEach(([key, prop]) => {
|
|
929
|
+
const isRequired = requiredList.includes(key);
|
|
930
|
+
const tag = isRequired ? "(\uD544\uC218)" : "(\uC120\uD0DD)";
|
|
931
|
+
let line = `
|
|
932
|
+
- ${key} ${tag}: ${prop.description || prop.type}`;
|
|
933
|
+
if (prop.enum) {
|
|
934
|
+
line += ` [\uAC00\uB2A5\uD55C \uAC12: ${prop.enum.join(", ")}]`;
|
|
935
|
+
}
|
|
936
|
+
desc += line;
|
|
937
|
+
});
|
|
938
|
+
const exampleParams = {};
|
|
939
|
+
Object.entries(props).forEach(([key, prop]) => {
|
|
940
|
+
if (prop.enum) {
|
|
941
|
+
exampleParams[key] = prop.enum[0];
|
|
942
|
+
} else if (prop.description) {
|
|
943
|
+
exampleParams[key] = `${prop.description}`;
|
|
944
|
+
} else {
|
|
945
|
+
exampleParams[key] = key;
|
|
946
|
+
}
|
|
947
|
+
});
|
|
948
|
+
desc += `
|
|
949
|
+
\uC608\uC2DC: <skill_use name="${name}">${JSON.stringify(exampleParams)}</skill_use>`;
|
|
950
|
+
}
|
|
951
|
+
return desc;
|
|
952
|
+
}).join("\n\n");
|
|
953
|
+
return `## \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uB3C4\uAD6C
|
|
926
954
|
|
|
927
|
-
\
|
|
928
|
-
|
|
955
|
+
\uC544\uB798 \uB3C4\uAD6C\uB97C \uC801\uADF9\uC801\uC73C\uB85C \uC0AC\uC6A9\uD558\uC138\uC694. \uC0AC\uC6A9\uC790\uC758 \uC694\uCCAD\uC5D0 \uB9DE\uB294 \uB3C4\uAD6C\uAC00 \uC788\uC73C\uBA74 \uBC18\uB4DC\uC2DC \uD638\uCD9C\uD574\uC57C \uD569\uB2C8\uB2E4.
|
|
956
|
+
|
|
957
|
+
\uD638\uCD9C \uD615\uC2DD:
|
|
958
|
+
<skill_use name="\uB3C4\uAD6C\uC774\uB984">{"\uD30C\uB77C\uBBF8\uD130": "\uAC12"}</skill_use>
|
|
929
959
|
|
|
930
960
|
${skillDescriptions}
|
|
931
961
|
|
|
932
|
-
|
|
933
|
-
- \
|
|
934
|
-
- \
|
|
935
|
-
- \
|
|
936
|
-
- \
|
|
962
|
+
**\uADDC\uCE59:**
|
|
963
|
+
- \uC774\uBBF8\uC9C0 \uC0DD\uC131/\uADF8\uB9BC/\uC77C\uB7EC\uC2A4\uD2B8 \uC694\uCCAD \u2192 \uBC18\uB4DC\uC2DC generate_image \uB3C4\uAD6C \uD638\uCD9C
|
|
964
|
+
- \uCD5C\uC2E0 \uC815\uBCF4/\uAC80\uC0C9/\uB274\uC2A4 \uC694\uCCAD \u2192 \uBC18\uB4DC\uC2DC web_search \uB3C4\uAD6C \uD638\uCD9C
|
|
965
|
+
- \uB3C4\uAD6C \uD638\uCD9C \uC2DC \uC9E7\uC740 \uC548\uB0B4 \uBA54\uC2DC\uC9C0\uB97C \uBA3C\uC800 \uC791\uC131\uD558\uACE0, \uADF8 \uB4A4\uC5D0 skill_use \uD0DC\uADF8\uB97C \uD3EC\uD568\uD558\uC138\uC694
|
|
966
|
+
- \uD55C \uBC88\uC5D0 \uD558\uB098\uC758 \uB3C4\uAD6C\uB9CC \uD638\uCD9C\uD558\uC138\uC694
|
|
967
|
+
- \uB3C4\uAD6C \uC5C6\uC774 \uD14D\uC2A4\uD2B8\uB85C\uB9CC \uB2F5\uBCC0\uD558\uC9C0 \uB9C8\uC138\uC694 (\uD574\uB2F9 \uB3C4\uAD6C\uAC00 \uC788\uB294 \uACBD\uC6B0)
|
|
968
|
+
- \uB3C4\uAD6C\uAC00 \uC2E4\uD589\uB418\uBA74 \uACB0\uACFC\uAC00 \uC790\uB3D9\uC73C\uB85C \uC804\uB2EC\uB429\uB2C8\uB2E4`;
|
|
937
969
|
}, [resolvedSkills]);
|
|
938
970
|
const handleSkillCall = useCallback3(
|
|
939
971
|
async (content, callbacks) => {
|
|
@@ -1161,8 +1193,9 @@ var convertToolsToSkills = (tools, onToolCall) => {
|
|
|
1161
1193
|
for (const tool of tools) {
|
|
1162
1194
|
skillMap[tool.name] = {
|
|
1163
1195
|
description: tool.description,
|
|
1164
|
-
trigger: "
|
|
1165
|
-
label: tool.name,
|
|
1196
|
+
trigger: "both",
|
|
1197
|
+
label: tool.label || tool.name,
|
|
1198
|
+
icon: tool.icon,
|
|
1166
1199
|
parameters: {
|
|
1167
1200
|
type: "object",
|
|
1168
1201
|
properties: Object.fromEntries(
|
|
@@ -2878,11 +2911,23 @@ ${currentSession.contextSummary}` },
|
|
|
2878
2911
|
*/
|
|
2879
2912
|
manualSkills,
|
|
2880
2913
|
/**
|
|
2881
|
-
* @description manual
|
|
2882
|
-
* @Todo vibecode -
|
|
2914
|
+
* @description manual 스킬/도구 선택 핸들러
|
|
2915
|
+
* @Todo vibecode - 도구 스킬은 selectedAction으로 변환, 일반 스킬은 즉시 실행
|
|
2883
2916
|
*/
|
|
2884
2917
|
executeManualSkill: (skillName) => {
|
|
2885
|
-
|
|
2918
|
+
const isToolSkill = tools?.some((t) => t.name === skillName);
|
|
2919
|
+
if (isToolSkill) {
|
|
2920
|
+
const toolConfig = tools.find((t) => t.name === skillName);
|
|
2921
|
+
setSelectedAction({
|
|
2922
|
+
id: `tool_${skillName}`,
|
|
2923
|
+
label: toolConfig.label || toolConfig.name,
|
|
2924
|
+
icon: toolConfig.icon || "sparkling",
|
|
2925
|
+
description: toolConfig.description,
|
|
2926
|
+
systemPrompt: `\uC0AC\uC6A9\uC790\uAC00 "${toolConfig.label || skillName}" \uB3C4\uAD6C\uB97C \uC0AC\uC6A9\uD558\uB824\uACE0 \uD569\uB2C8\uB2E4. \uC0AC\uC6A9\uC790\uC758 \uBA54\uC2DC\uC9C0\uB97C \uBC14\uD0D5\uC73C\uB85C \uBC18\uB4DC\uC2DC <skill_use name="${skillName}"> \uD0DC\uADF8\uB97C \uC0AC\uC6A9\uD558\uC5EC \uC774 \uB3C4\uAD6C\uB97C \uD638\uCD9C\uD558\uC138\uC694. \uB3C4\uAD6C\uB97C \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uACE0 \uD14D\uC2A4\uD2B8\uB85C\uB9CC \uB2F5\uBCC0\uD558\uC9C0 \uB9C8\uC138\uC694.`
|
|
2927
|
+
});
|
|
2928
|
+
} else {
|
|
2929
|
+
executeManualSkill(skillName, { query: input });
|
|
2930
|
+
}
|
|
2886
2931
|
}
|
|
2887
2932
|
};
|
|
2888
2933
|
};
|