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.
Files changed (28) hide show
  1. package/README.md +3 -3
  2. package/lib/executable/TypiaSetupWizard.js +1 -1
  3. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  4. package/lib/index.mjs.map +1 -1
  5. package/lib/internal/_llmApplicationFinalize.d.ts +1 -1
  6. package/lib/internal/_llmApplicationFinalize.js +14 -6
  7. package/lib/internal/_llmApplicationFinalize.js.map +1 -1
  8. package/lib/llm.d.ts +4 -3
  9. package/lib/programmers/internal/json_schema_native.js +1 -0
  10. package/lib/programmers/internal/json_schema_native.js.map +1 -1
  11. package/lib/programmers/internal/json_schema_object.js +1 -1
  12. package/lib/programmers/internal/json_schema_object.js.map +1 -1
  13. package/lib/programmers/llm/LlmApplicationProgrammer.js +149 -104
  14. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
  15. package/lib/programmers/llm/LlmSchemaProgrammer.d.ts +7 -2
  16. package/lib/programmers/llm/LlmSchemaProgrammer.js +42 -12
  17. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  18. package/lib/transformers/features/llm/LlmSchemaTransformer.js +13 -2
  19. package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
  20. package/package.json +37 -36
  21. package/src/executable/TypiaSetupWizard.ts +1 -1
  22. package/src/internal/_llmApplicationFinalize.ts +25 -6
  23. package/src/llm.ts +6 -6
  24. package/src/programmers/internal/json_schema_native.ts +1 -0
  25. package/src/programmers/internal/json_schema_object.ts +1 -1
  26. package/src/programmers/llm/LlmApplicationProgrammer.ts +175 -155
  27. package/src/programmers/llm/LlmSchemaProgrammer.ts +88 -17
  28. 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 HttpLlmConverter_1 = require("@samchon/openapi/lib/converters/HttpLlmConverter");
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 schema = HttpLlmConverter_1.HttpLlmConverter.schema({
20
- model: props.model,
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
- recursive: 3,
31
+ $defs,
24
32
  });
25
33
  if (schema === null)
26
34
  throw new Error("Failed to convert JSON schema to LLM schema.");
27
- return schema;
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":"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"}
1
+ {"version":3,"file":"LlmSchemaProgrammer.js","sourceRoot":"","sources":["../../../src/programmers/llm/LlmSchemaProgrammer.ts"],"names":[],"mappings":"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"}
@@ -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 schema = LlmSchemaProgrammer_1.LlmSchemaProgrammer.write({
61
+ const out = LlmSchemaProgrammer_1.LlmSchemaProgrammer.write({
61
62
  model,
62
63
  metadata: result.data,
63
64
  });
64
- return LiteralFactory_1.LiteralFactory.write(schema);
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":"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"}
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.20241115",
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.20241112",
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
- separate: options?.separate ?? null,
10
- recursive: app.model === "chatgpt" ? undefined : (3 as any),
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.separate,
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 = "3.1",
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
- T,
173
- Model extends ILlmApplication.Model = "3.1",
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
@@ -21,6 +21,7 @@ export const json_schema_native = (props: {
21
21
  props.components.schemas[props.native.name] ??= {
22
22
  type: "object",
23
23
  properties: {},
24
+ required: [],
24
25
  };
25
26
  }
26
27
  return json_schema_plugin({
@@ -102,7 +102,7 @@ const create_object_schema = (props: {
102
102
  return {
103
103
  type: "object",
104
104
  properties,
105
- required: required.length ? required : undefined,
105
+ required,
106
106
  title: (() => {
107
107
  const info: IJsDocTagInfo | undefined = props.object.type.jsDocTags.find(
108
108
  (tag) => tag.name === "title",