typia 7.0.0-dev.20241111 → 7.0.0-dev.20241111-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.
@@ -1,9 +1,9 @@
1
1
  import { ILlmApplication } from "@samchon/openapi";
2
2
  import { Metadata } from "../../schemas/metadata/Metadata";
3
3
  export declare namespace LlmSchemaProgrammer {
4
- const validate: (model: ILlmApplication.Model) => (metadata: Metadata) => string[];
5
4
  const write: <Model extends ILlmApplication.Model>(props: {
6
5
  model: Model;
7
6
  metadata: Metadata;
8
7
  }) => ILlmApplication.ModelSchema[Model];
8
+ const validate: (model: ILlmApplication.Model) => (metadata: Metadata) => string[];
9
9
  }
@@ -10,30 +10,33 @@ var __values = (this && this.__values) || function(o) {
10
10
  };
11
11
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
12
  };
13
- var __read = (this && this.__read) || function (o, n) {
14
- var m = typeof Symbol === "function" && o[Symbol.iterator];
15
- if (!m) return o;
16
- var i = m.call(o), r, ar = [], e;
17
- try {
18
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
- }
20
- catch (error) { e = { error: error }; }
21
- finally {
22
- try {
23
- if (r && !r.done && (m = i["return"])) m.call(i);
24
- }
25
- finally { if (e) throw e.error; }
26
- }
27
- return ar;
28
- };
29
13
  Object.defineProperty(exports, "__esModule", { value: true });
30
14
  exports.LlmSchemaProgrammer = void 0;
31
15
  var HttpLlmConverter_1 = require("@samchon/openapi/lib/converters/HttpLlmConverter");
32
- var OpenApiV3Converter_1 = require("@samchon/openapi/lib/converters/OpenApiV3Converter");
33
16
  var AtomicPredicator_1 = require("../helpers/AtomicPredicator");
17
+ var json_schema_bigint_1 = require("../internal/json_schema_bigint");
18
+ var json_schema_boolean_1 = require("../internal/json_schema_boolean");
19
+ var json_schema_native_1 = require("../internal/json_schema_native");
20
+ var json_schema_number_1 = require("../internal/json_schema_number");
21
+ var json_schema_string_1 = require("../internal/json_schema_string");
34
22
  var JsonSchemasProgrammer_1 = require("../json/JsonSchemasProgrammer");
35
23
  var LlmSchemaProgrammer;
36
24
  (function (LlmSchemaProgrammer) {
25
+ LlmSchemaProgrammer.write = function (props) {
26
+ var collection = JsonSchemasProgrammer_1.JsonSchemasProgrammer.write({
27
+ version: "3.1",
28
+ metadatas: [props.metadata],
29
+ });
30
+ var schema = HttpLlmConverter_1.HttpLlmConverter.schema({
31
+ model: props.model,
32
+ components: collection.components,
33
+ schema: collection.schemas[0],
34
+ recursive: 3,
35
+ });
36
+ if (schema === null)
37
+ throw new Error("Failed to convert JSON schema to LLM schema.");
38
+ return schema;
39
+ };
37
40
  LlmSchemaProgrammer.validate = function (model) {
38
41
  return function (metadata) {
39
42
  var e_1, _a;
@@ -67,17 +70,8 @@ var LlmSchemaProgrammer;
67
70
  }
68
71
  finally { if (e_1) throw e_1.error; }
69
72
  }
70
- if (model === "gemini") {
71
- try {
72
- var _d = __read(JsonSchemasProgrammer_1.JsonSchemasProgrammer.write({
73
- version: "3.0",
74
- metadatas: [metadata],
75
- }).schemas, 1), schema = _d[0];
76
- if (OpenApiV3Converter_1.OpenApiV3Converter.TypeChecker.isOneOf(schema))
77
- output.push("Gemini model does not support the union type.");
78
- }
79
- catch (_e) { }
80
- }
73
+ if (model === "gemini" && size(metadata) > 1)
74
+ output.push("Gemini model does not support the union type.");
81
75
  // if (
82
76
  // metadata.aliases.some((a) => a.type.recursive) ||
83
77
  // metadata.arrays.some((a) => a.type.recursive) ||
@@ -88,20 +82,39 @@ var LlmSchemaProgrammer;
88
82
  return output;
89
83
  };
90
84
  };
91
- LlmSchemaProgrammer.write = function (props) {
92
- var collection = JsonSchemasProgrammer_1.JsonSchemasProgrammer.write({
93
- version: "3.1",
94
- metadatas: [props.metadata],
95
- });
96
- var schema = HttpLlmConverter_1.HttpLlmConverter.schema({
97
- model: props.model,
98
- components: collection.components,
99
- schema: collection.schemas[0],
100
- recursive: 3,
101
- });
102
- if (schema === null)
103
- throw new Error("Failed to convert JSON schema to LLM schema.");
104
- return schema;
105
- };
106
85
  })(LlmSchemaProgrammer || (exports.LlmSchemaProgrammer = LlmSchemaProgrammer = {}));
86
+ var size = function (metadata) {
87
+ return (metadata.escaped ? size(metadata.escaped.returns) : 0) +
88
+ metadata.aliases.length +
89
+ metadata.objects.length +
90
+ metadata.arrays.length +
91
+ metadata.tuples.length +
92
+ (metadata.maps.length ? 1 : 0) +
93
+ (metadata.sets.length ? 1 : 0) +
94
+ metadata.atomics
95
+ .map(function (a) {
96
+ return a.type === "boolean"
97
+ ? (0, json_schema_boolean_1.json_schema_boolean)(a).length
98
+ : a.type === "bigint"
99
+ ? (0, json_schema_bigint_1.json_schema_bigint)(a).length
100
+ : a.type === "number"
101
+ ? (0, json_schema_number_1.json_schema_number)(a).length
102
+ : (0, json_schema_string_1.json_schema_string)(a).length;
103
+ })
104
+ .reduce(function (a, b) { return a + b; }, 0) +
105
+ metadata.constants.filter(function (c) { return metadata.atomics.some(function (a) { return a.type === c.type; }) === false; }).length +
106
+ metadata.templates.length +
107
+ metadata.natives
108
+ .filter(function (n) {
109
+ return metadata.atomics.some(function (a) { return a.type === n.name; }) === false &&
110
+ metadata.constants.some(function (c) { return c.type === n.name; }) === false;
111
+ })
112
+ .map(function (n) {
113
+ return (0, json_schema_native_1.json_schema_native)({
114
+ components: {},
115
+ native: n,
116
+ }).length;
117
+ })
118
+ .reduce(function (a, b) { return a + b; }, 0);
119
+ };
107
120
  //# 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typia",
3
- "version": "7.0.0-dev.20241111",
3
+ "version": "7.0.0-dev.20241111-2",
4
4
  "description": "Superfast runtime validators with only one line",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -68,7 +68,7 @@
68
68
  },
69
69
  "homepage": "https://typia.io",
70
70
  "dependencies": {
71
- "@samchon/openapi": "2.0.0-dev.20241111",
71
+ "@samchon/openapi": "2.0.0-dev.20241111-3",
72
72
  "commander": "^10.0.0",
73
73
  "comment-json": "^4.2.3",
74
74
  "inquirer": "^8.2.5",
@@ -1,14 +1,39 @@
1
1
  import { ILlmApplication } from "@samchon/openapi";
2
2
  import { HttpLlmConverter } from "@samchon/openapi/lib/converters/HttpLlmConverter";
3
- import { OpenApiV3Converter } from "@samchon/openapi/lib/converters/OpenApiV3Converter";
4
3
 
5
4
  import { IJsonSchemaCollection } from "../../schemas/json/IJsonSchemaCollection";
6
5
  import { Metadata } from "../../schemas/metadata/Metadata";
7
6
 
8
7
  import { AtomicPredicator } from "../helpers/AtomicPredicator";
8
+ import { json_schema_bigint } from "../internal/json_schema_bigint";
9
+ import { json_schema_boolean } from "../internal/json_schema_boolean";
10
+ import { json_schema_native } from "../internal/json_schema_native";
11
+ import { json_schema_number } from "../internal/json_schema_number";
12
+ import { json_schema_string } from "../internal/json_schema_string";
9
13
  import { JsonSchemasProgrammer } from "../json/JsonSchemasProgrammer";
10
14
 
11
15
  export namespace LlmSchemaProgrammer {
16
+ export const write = <Model extends ILlmApplication.Model>(props: {
17
+ model: Model;
18
+ metadata: Metadata;
19
+ }): ILlmApplication.ModelSchema[Model] => {
20
+ const collection: IJsonSchemaCollection<"3.1"> =
21
+ JsonSchemasProgrammer.write({
22
+ version: "3.1",
23
+ metadatas: [props.metadata],
24
+ });
25
+ const schema: ILlmApplication.ModelSchema[Model] | null =
26
+ HttpLlmConverter.schema({
27
+ model: props.model,
28
+ components: collection.components,
29
+ schema: collection.schemas[0]!,
30
+ recursive: 3,
31
+ });
32
+ if (schema === null)
33
+ throw new Error("Failed to convert JSON schema to LLM schema.");
34
+ return schema;
35
+ };
36
+
12
37
  export const validate =
13
38
  (model: ILlmApplication.Model) =>
14
39
  (metadata: Metadata): string[] => {
@@ -37,18 +62,8 @@ export namespace LlmSchemaProgrammer {
37
62
  native.name !== "File"
38
63
  )
39
64
  output.push(`LLM schema does not support ${native.name} type.`);
40
- if (model === "gemini") {
41
- try {
42
- const {
43
- schemas: [schema],
44
- } = JsonSchemasProgrammer.write({
45
- version: "3.0",
46
- metadatas: [metadata],
47
- });
48
- if (OpenApiV3Converter.TypeChecker.isOneOf(schema!))
49
- output.push("Gemini model does not support the union type.");
50
- } catch {}
51
- }
65
+ if (model === "gemini" && size(metadata) > 1)
66
+ output.push("Gemini model does not support the union type.");
52
67
  // if (
53
68
  // metadata.aliases.some((a) => a.type.recursive) ||
54
69
  // metadata.arrays.some((a) => a.type.recursive) ||
@@ -58,25 +73,42 @@ export namespace LlmSchemaProgrammer {
58
73
  // output.push("LLM schema does not support recursive type.");
59
74
  return output;
60
75
  };
61
-
62
- export const write = <Model extends ILlmApplication.Model>(props: {
63
- model: Model;
64
- metadata: Metadata;
65
- }): ILlmApplication.ModelSchema[Model] => {
66
- const collection: IJsonSchemaCollection<"3.1"> =
67
- JsonSchemasProgrammer.write({
68
- version: "3.1",
69
- metadatas: [props.metadata],
70
- });
71
- const schema: ILlmApplication.ModelSchema[Model] | null =
72
- HttpLlmConverter.schema({
73
- model: props.model,
74
- components: collection.components,
75
- schema: collection.schemas[0]!,
76
- recursive: 3,
77
- });
78
- if (schema === null)
79
- throw new Error("Failed to convert JSON schema to LLM schema.");
80
- return schema;
81
- };
82
76
  }
77
+
78
+ const size = (metadata: Metadata): number =>
79
+ (metadata.escaped ? size(metadata.escaped.returns) : 0) +
80
+ metadata.aliases.length +
81
+ metadata.objects.length +
82
+ metadata.arrays.length +
83
+ metadata.tuples.length +
84
+ (metadata.maps.length ? 1 : 0) +
85
+ (metadata.sets.length ? 1 : 0) +
86
+ metadata.atomics
87
+ .map((a) =>
88
+ a.type === "boolean"
89
+ ? json_schema_boolean(a).length
90
+ : a.type === "bigint"
91
+ ? json_schema_bigint(a).length
92
+ : a.type === "number"
93
+ ? json_schema_number(a).length
94
+ : json_schema_string(a).length,
95
+ )
96
+ .reduce((a, b) => a + b, 0) +
97
+ metadata.constants.filter(
98
+ (c) => metadata.atomics.some((a) => a.type === c.type) === false,
99
+ ).length +
100
+ metadata.templates.length +
101
+ metadata.natives
102
+ .filter(
103
+ (n) =>
104
+ metadata.atomics.some((a) => a.type === n.name) === false &&
105
+ metadata.constants.some((c) => c.type === n.name) === false,
106
+ )
107
+ .map(
108
+ (n) =>
109
+ json_schema_native({
110
+ components: {},
111
+ native: n,
112
+ }).length,
113
+ )
114
+ .reduce((a, b) => a + b, 0);