typia 7.0.0-dev.20241115 → 7.0.0-dev.20241123
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/README.md +3 -3
- package/lib/executable/TypiaSetupWizard.js +1 -1
- package/lib/executable/TypiaSetupWizard.js.map +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/internal/_llmApplicationFinalize.d.ts +1 -1
- package/lib/internal/_llmApplicationFinalize.js +14 -6
- package/lib/internal/_llmApplicationFinalize.js.map +1 -1
- package/lib/llm.d.ts +4 -3
- package/lib/programmers/internal/json_schema_native.js +1 -0
- package/lib/programmers/internal/json_schema_native.js.map +1 -1
- package/lib/programmers/internal/json_schema_object.js +1 -1
- package/lib/programmers/internal/json_schema_object.js.map +1 -1
- package/lib/programmers/llm/LlmApplicationProgrammer.js +149 -104
- package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
- package/lib/programmers/llm/LlmSchemaProgrammer.d.ts +7 -2
- package/lib/programmers/llm/LlmSchemaProgrammer.js +42 -12
- package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
- package/lib/transformers/features/llm/LlmSchemaTransformer.js +13 -2
- package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
- package/package.json +37 -36
- package/src/executable/TypiaSetupWizard.ts +1 -1
- package/src/internal/_llmApplicationFinalize.ts +25 -6
- package/src/llm.ts +6 -6
- package/src/programmers/internal/json_schema_native.ts +1 -0
- package/src/programmers/internal/json_schema_object.ts +1 -1
- package/src/programmers/llm/LlmApplicationProgrammer.ts +175 -155
- package/src/programmers/llm/LlmSchemaProgrammer.ts +88 -17
- package/src/transformers/features/llm/LlmSchemaTransformer.ts +40 -6
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LlmSchemaProgrammer = void 0;
|
|
4
|
-
const
|
|
4
|
+
const ChatGptConverter_1 = require("@samchon/openapi/lib/converters/ChatGptConverter");
|
|
5
|
+
const GeminiConverter_1 = require("@samchon/openapi/lib/converters/GeminiConverter");
|
|
6
|
+
const LlmConverterV3_2 = require("@samchon/openapi/lib/converters/LlmConverterV3");
|
|
7
|
+
const LlmConverterV3_1_1 = require("@samchon/openapi/lib/converters/LlmConverterV3_1");
|
|
5
8
|
const AtomicPredicator_1 = require("../helpers/AtomicPredicator");
|
|
6
9
|
const json_schema_bigint_1 = require("../internal/json_schema_bigint");
|
|
7
10
|
const json_schema_boolean_1 = require("../internal/json_schema_boolean");
|
|
@@ -16,21 +19,32 @@ var LlmSchemaProgrammer;
|
|
|
16
19
|
version: "3.1",
|
|
17
20
|
metadatas: [props.metadata],
|
|
18
21
|
});
|
|
19
|
-
const
|
|
20
|
-
|
|
22
|
+
const $defs = {};
|
|
23
|
+
const schema = CASTERS[props.model]({
|
|
24
|
+
options: {
|
|
25
|
+
recursive: 3,
|
|
26
|
+
reference: false,
|
|
27
|
+
constraint: false,
|
|
28
|
+
},
|
|
21
29
|
components: collection.components,
|
|
22
30
|
schema: collection.schemas[0],
|
|
23
|
-
|
|
31
|
+
$defs,
|
|
24
32
|
});
|
|
25
33
|
if (schema === null)
|
|
26
34
|
throw new Error("Failed to convert JSON schema to LLM schema.");
|
|
27
|
-
return
|
|
35
|
+
return {
|
|
36
|
+
model: props.model,
|
|
37
|
+
$defs,
|
|
38
|
+
schema,
|
|
39
|
+
};
|
|
28
40
|
};
|
|
29
41
|
LlmSchemaProgrammer.validate = (model) => (metadata) => {
|
|
30
42
|
const output = [];
|
|
31
43
|
if (metadata.atomics.some((a) => a.type === "bigint") ||
|
|
32
44
|
metadata.constants.some((c) => c.type === "bigint"))
|
|
33
45
|
output.push("LLM schema does not support bigint type.");
|
|
46
|
+
if (metadata.objects.some((o) => o.type.properties.some((p) => p.key.isSoleLiteral() === false && p.value.size() !== 0)))
|
|
47
|
+
output.push("LLM schema does not support dynamic property in object.");
|
|
34
48
|
if (metadata.tuples.some((t) => t.type.elements.some((e) => e.isRequired() === false)) ||
|
|
35
49
|
metadata.arrays.some((a) => a.type.value.isRequired() === false))
|
|
36
50
|
output.push("LLM schema does not support undefined type in array.");
|
|
@@ -46,13 +60,6 @@ var LlmSchemaProgrammer;
|
|
|
46
60
|
output.push(`LLM schema does not support ${native.name} type.`);
|
|
47
61
|
if (model === "gemini" && size(metadata) > 1)
|
|
48
62
|
output.push("Gemini model does not support the union type.");
|
|
49
|
-
// if (
|
|
50
|
-
// metadata.aliases.some((a) => a.type.recursive) ||
|
|
51
|
-
// metadata.arrays.some((a) => a.type.recursive) ||
|
|
52
|
-
// metadata.objects.some((o) => o.type.recursive) ||
|
|
53
|
-
// metadata.tuples.some((t) => t.type.recursive)
|
|
54
|
-
// )
|
|
55
|
-
// output.push("LLM schema does not support recursive type.");
|
|
56
63
|
return output;
|
|
57
64
|
};
|
|
58
65
|
})(LlmSchemaProgrammer || (exports.LlmSchemaProgrammer = LlmSchemaProgrammer = {}));
|
|
@@ -82,4 +89,27 @@ const size = (metadata) => (metadata.escaped ? size(metadata.escaped.returns) :
|
|
|
82
89
|
native: n,
|
|
83
90
|
}).length)
|
|
84
91
|
.reduce((a, b) => a + b, 0);
|
|
92
|
+
const CASTERS = {
|
|
93
|
+
"3.0": (props) => LlmConverterV3_2.LlmConverterV3.schema({
|
|
94
|
+
components: props.components,
|
|
95
|
+
schema: props.schema,
|
|
96
|
+
recursive: props.options.recursive,
|
|
97
|
+
}),
|
|
98
|
+
"3.1": (props) => LlmConverterV3_1_1.LlmConverterV3_1.schema({
|
|
99
|
+
components: props.components,
|
|
100
|
+
schema: props.schema,
|
|
101
|
+
recursive: props.options.recursive,
|
|
102
|
+
}),
|
|
103
|
+
chatgpt: (props) => ChatGptConverter_1.ChatGptConverter.schema({
|
|
104
|
+
components: props.components,
|
|
105
|
+
schema: props.schema,
|
|
106
|
+
$defs: props.$defs,
|
|
107
|
+
options: props.options,
|
|
108
|
+
}),
|
|
109
|
+
gemini: (props) => GeminiConverter_1.GeminiConverter.schema({
|
|
110
|
+
components: props.components,
|
|
111
|
+
schema: props.schema,
|
|
112
|
+
recursive: props.options.recursive,
|
|
113
|
+
}),
|
|
114
|
+
};
|
|
85
115
|
//# sourceMappingURL=LlmSchemaProgrammer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LlmSchemaProgrammer.js","sourceRoot":"","sources":["../../../src/programmers/llm/LlmSchemaProgrammer.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"LlmSchemaProgrammer.js","sourceRoot":"","sources":["../../../src/programmers/llm/LlmSchemaProgrammer.ts"],"names":[],"mappings":";;;AAMA,uFAAoF;AACpF,qFAAkF;AAClF,mFAAgF;AAChF,uFAAoF;AAKpF,kEAA+D;AAC/D,uEAAoE;AACpE,yEAAsE;AACtE,uEAAoE;AACpE,uEAAoE;AACpE,uEAAoE;AACpE,yEAAsE;AAEtE,IAAiB,mBAAmB,CA+EnC;AA/ED,WAAiB,mBAAmB;IAMrB,yBAAK,GAAG,CAAsC,KAG1D,EAAkB,EAAE;QACnB,MAAM,UAAU,GACd,6CAAqB,CAAC,KAAK,CAAC;YAC1B,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC5B,CAAC,CAAC;QAEL,MAAM,KAAK,GAAmC,EAAE,CAAC;QACjD,MAAM,MAAM,GAA8C,OAAO,CAC/D,KAAK,CAAC,KAAK,CACZ,CAAC;YACA,OAAO,EAAE;gBACP,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,KAAK;aAE2C;YAC9D,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAE;YAC9B,KAAK;SACN,CAA8C,CAAC;QAChD,IAAI,MAAM,KAAK,IAAI;YACjB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK;YACL,MAAM;SACP,CAAC;IACJ,CAAC,CAAC;IAEW,4BAAQ,GACnB,CAAC,KAA4B,EAAE,EAAE,CACjC,CAAC,QAAkB,EAAY,EAAE;QAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IACE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;YACjD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;YAEnD,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC1D,IACE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAC/D,CACF;YAED,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACzE,IACE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,KAAK,CAAC,CACtD;YACD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,KAAK,CAAC;YAEhE,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACtE,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM;YACtB,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACvD,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM;YACtB,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACvD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO;YACnC,IACE,mCAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK;gBAC9C,MAAM,CAAC,IAAI,KAAK,MAAM;gBACtB,MAAM,CAAC,IAAI,KAAK,MAAM;gBACtB,MAAM,CAAC,IAAI,KAAK,MAAM;gBAEtB,MAAM,CAAC,IAAI,CAAC,+BAA+B,MAAM,CAAC,IAAI,QAAQ,CAAC,CAAC;QACpE,IAAI,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACN,CAAC,EA/EgB,mBAAmB,mCAAnB,mBAAmB,QA+EnC;AAED,MAAM,IAAI,GAAG,CAAC,QAAkB,EAAU,EAAE,CAC1C,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,CAAC,MAAM;IACvB,QAAQ,CAAC,OAAO,CAAC,MAAM;IACvB,QAAQ,CAAC,MAAM,CAAC,MAAM;IACtB,QAAQ,CAAC,MAAM,CAAC,MAAM;IACtB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,QAAQ,CAAC,OAAO;SACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,CAAC,IAAI,KAAK,SAAS;QAClB,CAAC,CAAC,IAAA,yCAAmB,EAAC,CAAC,CAAC,CAAC,MAAM;QAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ;YACnB,CAAC,CAAC,IAAA,uCAAkB,EAAC,CAAC,CAAC,CAAC,MAAM;YAC9B,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ;gBACnB,CAAC,CAAC,IAAA,uCAAkB,EAAC,CAAC,CAAC,CAAC,MAAM;gBAC9B,CAAC,CAAC,IAAA,uCAAkB,EAAC,CAAC,CAAC,CAAC,MAAM,CACrC;SACA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,MAAM,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CACjE,CAAC,MAAM;IACR,QAAQ,CAAC,SAAS,CAAC,MAAM;IACzB,QAAQ,CAAC,OAAO;SACb,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK;QACzD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAC9D;SACA,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,IAAA,uCAAkB,EAAC;QACjB,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,CAAC;KACV,CAAC,CAAC,MAAM,CACZ;SACA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhC,MAAM,OAAO,GAAG;IACd,KAAK,EAAE,CAAC,KAIP,EAAE,EAAE,CACH,+BAAc,CAAC,MAAM,CAAC;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;KACnC,CAAC;IACJ,KAAK,EAAE,CAAC,KAIP,EAAE,EAAE,CACH,mCAAgB,CAAC,MAAM,CAAC;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;KACnC,CAAC;IACJ,OAAO,EAAE,CAAC,KAKT,EAAE,EAAE,CACH,mCAAgB,CAAC,MAAM,CAAC;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;IACJ,MAAM,EAAE,CAAC,KAIR,EAAE,EAAE,CACH,iCAAe,CAAC,MAAM,CAAC;QACrB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;KACnC,CAAC;CACL,CAAC"}
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.LlmSchemaTransformer = void 0;
|
|
7
7
|
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const IdentifierFactory_1 = require("../../../factories/IdentifierFactory");
|
|
8
9
|
const LiteralFactory_1 = require("../../../factories/LiteralFactory");
|
|
9
10
|
const MetadataCollection_1 = require("../../../factories/MetadataCollection");
|
|
10
11
|
const MetadataFactory_1 = require("../../../factories/MetadataFactory");
|
|
@@ -57,11 +58,21 @@ var LlmSchemaTransformer;
|
|
|
57
58
|
errors: result.errors,
|
|
58
59
|
});
|
|
59
60
|
// GENERATE LLM SCHEMA
|
|
60
|
-
const
|
|
61
|
+
const out = LlmSchemaProgrammer_1.LlmSchemaProgrammer.write({
|
|
61
62
|
model,
|
|
62
63
|
metadata: result.data,
|
|
63
64
|
});
|
|
64
|
-
|
|
65
|
+
if (Object.keys(out.$defs).length === 0)
|
|
66
|
+
return LiteralFactory_1.LiteralFactory.write(out.schema);
|
|
67
|
+
return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createArrowFunction(undefined, undefined, [
|
|
68
|
+
IdentifierFactory_1.IdentifierFactory.parameter("$defs", typescript_1.default.factory.createTypeReferenceNode("Record<string, unknown>"), undefined),
|
|
69
|
+
], undefined, undefined, typescript_1.default.factory.createBlock([
|
|
70
|
+
typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("Object.assign"), undefined, [
|
|
71
|
+
typescript_1.default.factory.createIdentifier("$defs"),
|
|
72
|
+
LiteralFactory_1.LiteralFactory.write(out.$defs),
|
|
73
|
+
])),
|
|
74
|
+
typescript_1.default.factory.createReturnStatement(LiteralFactory_1.LiteralFactory.write(out.schema)),
|
|
75
|
+
], true)), undefined, [props.expression.arguments[0]]);
|
|
65
76
|
};
|
|
66
77
|
const get_parameter = (props) => (node) => {
|
|
67
78
|
if (!node)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LlmSchemaTransformer.js","sourceRoot":"","sources":["../../../../src/transformers/features/llm/LlmSchemaTransformer.ts"],"names":[],"mappings":";;;;;;AACA,4DAA4B;AAE5B,sEAAmE;AACnE,8EAA2E;AAC3E,wEAAqE;AAIrE,sFAAmF;AAKnF,6DAA0D;AAE1D,IAAiB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"LlmSchemaTransformer.js","sourceRoot":"","sources":["../../../../src/transformers/features/llm/LlmSchemaTransformer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typia",
|
|
3
|
-
"version": "7.0.0-dev.
|
|
3
|
+
"version": "7.0.0-dev.20241123",
|
|
4
4
|
"description": "Superfast runtime validators with only one line",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -35,40 +35,6 @@
|
|
|
35
35
|
"type": "git",
|
|
36
36
|
"url": "https://github.com/samchon/typia"
|
|
37
37
|
},
|
|
38
|
-
"keywords": [
|
|
39
|
-
"fast",
|
|
40
|
-
"json",
|
|
41
|
-
"stringify",
|
|
42
|
-
"typescript",
|
|
43
|
-
"transform",
|
|
44
|
-
"ajv",
|
|
45
|
-
"io-ts",
|
|
46
|
-
"zod",
|
|
47
|
-
"schema",
|
|
48
|
-
"json-schema",
|
|
49
|
-
"generator",
|
|
50
|
-
"assert",
|
|
51
|
-
"clone",
|
|
52
|
-
"is",
|
|
53
|
-
"validate",
|
|
54
|
-
"equal",
|
|
55
|
-
"runtime",
|
|
56
|
-
"type",
|
|
57
|
-
"typebox",
|
|
58
|
-
"checker",
|
|
59
|
-
"validator",
|
|
60
|
-
"safe",
|
|
61
|
-
"parse",
|
|
62
|
-
"prune",
|
|
63
|
-
"random",
|
|
64
|
-
"protobuf",
|
|
65
|
-
"llm",
|
|
66
|
-
"llm-function-calling",
|
|
67
|
-
"openai",
|
|
68
|
-
"chatgpt",
|
|
69
|
-
"llama",
|
|
70
|
-
"gemini"
|
|
71
|
-
],
|
|
72
38
|
"author": "Jeongho Nam",
|
|
73
39
|
"license": "MIT",
|
|
74
40
|
"bugs": {
|
|
@@ -76,7 +42,7 @@
|
|
|
76
42
|
},
|
|
77
43
|
"homepage": "https://typia.io",
|
|
78
44
|
"dependencies": {
|
|
79
|
-
"@samchon/openapi": "2.0.0-dev.
|
|
45
|
+
"@samchon/openapi": "^2.0.0-dev.20241123-3",
|
|
80
46
|
"commander": "^10.0.0",
|
|
81
47
|
"comment-json": "^4.2.3",
|
|
82
48
|
"inquirer": "^8.2.5",
|
|
@@ -114,5 +80,40 @@
|
|
|
114
80
|
"package.json",
|
|
115
81
|
"lib",
|
|
116
82
|
"src"
|
|
83
|
+
],
|
|
84
|
+
"keywords": [
|
|
85
|
+
"fast",
|
|
86
|
+
"json",
|
|
87
|
+
"stringify",
|
|
88
|
+
"typescript",
|
|
89
|
+
"transform",
|
|
90
|
+
"ajv",
|
|
91
|
+
"io-ts",
|
|
92
|
+
"zod",
|
|
93
|
+
"schema",
|
|
94
|
+
"json-schema",
|
|
95
|
+
"generator",
|
|
96
|
+
"assert",
|
|
97
|
+
"clone",
|
|
98
|
+
"is",
|
|
99
|
+
"validate",
|
|
100
|
+
"equal",
|
|
101
|
+
"runtime",
|
|
102
|
+
"type",
|
|
103
|
+
"typebox",
|
|
104
|
+
"checker",
|
|
105
|
+
"validator",
|
|
106
|
+
"safe",
|
|
107
|
+
"parse",
|
|
108
|
+
"prune",
|
|
109
|
+
"random",
|
|
110
|
+
"protobuf",
|
|
111
|
+
"llm",
|
|
112
|
+
"llm-function-calling",
|
|
113
|
+
"openai",
|
|
114
|
+
"chatgpt",
|
|
115
|
+
"llama",
|
|
116
|
+
"gemini",
|
|
117
|
+
"claude"
|
|
117
118
|
]
|
|
118
119
|
}
|
|
@@ -158,7 +158,7 @@ export namespace TypiaSetupWizard {
|
|
|
158
158
|
"npm" | "pnpm" | "yarn" | "bun" | null
|
|
159
159
|
> => {
|
|
160
160
|
const result: DetectResult | null = await detect({ cwd: process.cwd() });
|
|
161
|
-
if (result?.name === "npm") return null; // NPM case is still selectable
|
|
161
|
+
if (result?.name === "npm" || result?.name === "deno") return null; // NPM case is still selectable
|
|
162
162
|
return result?.name ?? null;
|
|
163
163
|
};
|
|
164
164
|
|
|
@@ -3,17 +3,36 @@ import { HttpLlmConverter } from "@samchon/openapi/lib/converters/HttpLlmConvert
|
|
|
3
3
|
|
|
4
4
|
export const _llmApplicationFinalize = <Model extends ILlmApplication.Model>(
|
|
5
5
|
app: ILlmApplication<Model>,
|
|
6
|
-
options?: ILlmApplication.IOptions<Model
|
|
6
|
+
options?: Partial<ILlmApplication.IOptions<Model>>,
|
|
7
7
|
): void => {
|
|
8
|
-
app.options =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
app.options = (
|
|
9
|
+
isChatGptOptions(app, options)
|
|
10
|
+
? ({
|
|
11
|
+
separate: options?.separate ?? null,
|
|
12
|
+
reference: options?.reference ?? false,
|
|
13
|
+
constraint: options?.constraint ?? false,
|
|
14
|
+
} satisfies ILlmApplication.IOptions<"chatgpt">)
|
|
15
|
+
: ({
|
|
16
|
+
separate: (options?.separate ??
|
|
17
|
+
null) as ILlmApplication.ICommonOptions<
|
|
18
|
+
Exclude<Model, "chatgpt">
|
|
19
|
+
>["separate"],
|
|
20
|
+
recursive:
|
|
21
|
+
(options as ILlmApplication.IOptions<"3.0"> | undefined)
|
|
22
|
+
?.recursive ?? 3,
|
|
23
|
+
} satisfies ILlmApplication.ICommonOptions<Exclude<Model, "chatgpt">>)
|
|
24
|
+
) as ILlmApplication.IOptions<Model>;
|
|
12
25
|
if (app.options.separate === null) return;
|
|
13
26
|
for (const func of app.functions)
|
|
14
27
|
func.separated = HttpLlmConverter.separateParameters({
|
|
15
28
|
model: app.model,
|
|
16
29
|
parameters: func.parameters,
|
|
17
|
-
predicate: app.options
|
|
30
|
+
predicate: app.options
|
|
31
|
+
.separate as ILlmApplication.IOptions<Model>["separate"] as any,
|
|
18
32
|
});
|
|
19
33
|
};
|
|
34
|
+
|
|
35
|
+
const isChatGptOptions = <Model extends ILlmApplication.Model>(
|
|
36
|
+
app: ILlmApplication<Model>,
|
|
37
|
+
_options: unknown,
|
|
38
|
+
): _options is ILlmApplication.IOptions<"chatgpt"> => app.model === "chatgpt";
|
package/src/llm.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ILlmApplication } from "@samchon/openapi";
|
|
1
|
+
import { IChatGptSchema, ILlmApplication } from "@samchon/openapi";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* > You must configure the generic argument `App`.
|
|
@@ -82,7 +82,7 @@ export function application(
|
|
|
82
82
|
*/
|
|
83
83
|
export function application<
|
|
84
84
|
App extends object,
|
|
85
|
-
Model extends ILlmApplication.Model
|
|
85
|
+
Model extends ILlmApplication.Model,
|
|
86
86
|
>(
|
|
87
87
|
options?: Partial<Omit<ILlmApplication.IOptions<Model>, "recursive">>,
|
|
88
88
|
): ILlmApplication<Model>;
|
|
@@ -164,14 +164,14 @@ export function schema(): never;
|
|
|
164
164
|
*
|
|
165
165
|
* @template T Target type
|
|
166
166
|
* @template Model LLM schema model
|
|
167
|
+
* @param $defs Definitions of named schemas if the model is `chatgpt`
|
|
167
168
|
* @returns LLM schema
|
|
168
169
|
* @reference https://platform.openai.com/docs/guides/function-calling
|
|
169
170
|
* @author Jeongho Nam - https://github.com/samchon
|
|
170
171
|
*/
|
|
171
|
-
export function schema<
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
>(): ILlmApplication.ModelSchema[Model];
|
|
172
|
+
export function schema<T, Model extends ILlmApplication.Model>(
|
|
173
|
+
...$defs: Model extends "chatgpt" ? [Record<string, IChatGptSchema>] : []
|
|
174
|
+
): ILlmApplication.ModelSchema[Model];
|
|
175
175
|
|
|
176
176
|
/**
|
|
177
177
|
* @internal
|
|
@@ -102,7 +102,7 @@ const create_object_schema = (props: {
|
|
|
102
102
|
return {
|
|
103
103
|
type: "object",
|
|
104
104
|
properties,
|
|
105
|
-
required
|
|
105
|
+
required,
|
|
106
106
|
title: (() => {
|
|
107
107
|
const info: IJsDocTagInfo | undefined = props.object.type.jsDocTags.find(
|
|
108
108
|
(tag) => tag.name === "title",
|