@shenghuabi/openai 1.0.3 → 1.0.5
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/chat/options.define.d.ts +18 -18
- package/define/index.js +11 -11
- package/define/index.js.map +2 -2
- package/define/index.mjs +12 -14
- package/define/index.mjs.map +2 -2
- package/index.js +11 -11
- package/index.js.map +2 -2
- package/index.mjs +12 -14
- package/index.mjs.map +2 -2
- package/package.json +3 -3
package/chat/options.define.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export declare const ChatItemDefine: v.SchemaWithPipe<readonly [v.IntersectSchem
|
|
|
25
25
|
readonly frequency_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。">]>;
|
|
26
26
|
readonly presence_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。">]>;
|
|
27
27
|
readonly seed: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>]>, undefined>, v.DescriptionAction<number | undefined, "若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。">]>;
|
|
28
|
-
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").
|
|
28
|
+
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").DefineTypeAction<string[] | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string[] | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
|
|
29
29
|
}, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
30
30
|
max_tokens: number;
|
|
31
31
|
top_p: number;
|
|
@@ -139,7 +139,7 @@ export declare const VendorOptionsDefine: v.SchemaWithPipe<readonly [v.OptionalS
|
|
|
139
139
|
readonly frequency_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。">]>;
|
|
140
140
|
readonly presence_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。">]>;
|
|
141
141
|
readonly seed: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>]>, undefined>, v.DescriptionAction<number | undefined, "若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。">]>;
|
|
142
|
-
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").
|
|
142
|
+
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").DefineTypeAction<string[] | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string[] | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
|
|
143
143
|
}, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
144
144
|
max_tokens: number;
|
|
145
145
|
top_p: number;
|
|
@@ -253,7 +253,7 @@ export declare const VendorOptionsDefine: v.SchemaWithPipe<readonly [v.OptionalS
|
|
|
253
253
|
stop?: string[] | undefined;
|
|
254
254
|
}) | undefined;
|
|
255
255
|
};
|
|
256
|
-
} | undefined, "## 通用参数\n- `extraOptions`字段用于覆盖默认字段\n```json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n```\n">, import("@piying/valibot-visit").
|
|
256
|
+
} | undefined, "## 通用参数\n- `extraOptions`字段用于覆盖默认字段\n```json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n```\n">, import("@piying/valibot-visit").DefineTypeAction<{
|
|
257
257
|
[x: string]: {
|
|
258
258
|
extraOptions?: ({
|
|
259
259
|
name: string;
|
|
@@ -273,7 +273,7 @@ export declare const VendorOptionsDefine: v.SchemaWithPipe<readonly [v.OptionalS
|
|
|
273
273
|
stop?: string[] | undefined;
|
|
274
274
|
}) | undefined;
|
|
275
275
|
};
|
|
276
|
-
} | undefined
|
|
276
|
+
} | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
277
277
|
[x: string]: {
|
|
278
278
|
extraOptions?: ({
|
|
279
279
|
name: string;
|
|
@@ -340,7 +340,7 @@ export declare const ChatParamsItemDefine: v.SchemaWithPipe<readonly [v.Intersec
|
|
|
340
340
|
readonly frequency_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。">]>;
|
|
341
341
|
readonly presence_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。">]>;
|
|
342
342
|
readonly seed: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>]>, undefined>, v.DescriptionAction<number | undefined, "若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。">]>;
|
|
343
|
-
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").
|
|
343
|
+
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").DefineTypeAction<string[] | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string[] | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
|
|
344
344
|
}, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
345
345
|
max_tokens: number;
|
|
346
346
|
top_p: number;
|
|
@@ -454,7 +454,7 @@ export declare const ChatParamsItemDefine: v.SchemaWithPipe<readonly [v.Intersec
|
|
|
454
454
|
readonly frequency_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。">]>;
|
|
455
455
|
readonly presence_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。">]>;
|
|
456
456
|
readonly seed: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>]>, undefined>, v.DescriptionAction<number | undefined, "若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。">]>;
|
|
457
|
-
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").
|
|
457
|
+
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").DefineTypeAction<string[] | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string[] | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
|
|
458
458
|
}, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
459
459
|
max_tokens: number;
|
|
460
460
|
top_p: number;
|
|
@@ -568,7 +568,7 @@ export declare const ChatParamsItemDefine: v.SchemaWithPipe<readonly [v.Intersec
|
|
|
568
568
|
stop?: string[] | undefined;
|
|
569
569
|
}) | undefined;
|
|
570
570
|
};
|
|
571
|
-
} | undefined, "## 通用参数\n- `extraOptions`字段用于覆盖默认字段\n```json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n```\n">, import("@piying/valibot-visit").
|
|
571
|
+
} | undefined, "## 通用参数\n- `extraOptions`字段用于覆盖默认字段\n```json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n```\n">, import("@piying/valibot-visit").DefineTypeAction<{
|
|
572
572
|
[x: string]: {
|
|
573
573
|
extraOptions?: ({
|
|
574
574
|
name: string;
|
|
@@ -588,7 +588,7 @@ export declare const ChatParamsItemDefine: v.SchemaWithPipe<readonly [v.Intersec
|
|
|
588
588
|
stop?: string[] | undefined;
|
|
589
589
|
}) | undefined;
|
|
590
590
|
};
|
|
591
|
-
} | undefined
|
|
591
|
+
} | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
592
592
|
[x: string]: {
|
|
593
593
|
extraOptions?: ({
|
|
594
594
|
name: string;
|
|
@@ -732,7 +732,7 @@ export declare const ChatParamsListDefine: v.SchemaWithPipe<readonly [v.ArraySch
|
|
|
732
732
|
readonly frequency_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。">]>;
|
|
733
733
|
readonly presence_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。">]>;
|
|
734
734
|
readonly seed: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>]>, undefined>, v.DescriptionAction<number | undefined, "若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。">]>;
|
|
735
|
-
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").
|
|
735
|
+
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").DefineTypeAction<string[] | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string[] | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
|
|
736
736
|
}, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
737
737
|
max_tokens: number;
|
|
738
738
|
top_p: number;
|
|
@@ -846,7 +846,7 @@ export declare const ChatParamsListDefine: v.SchemaWithPipe<readonly [v.ArraySch
|
|
|
846
846
|
readonly frequency_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。">]>;
|
|
847
847
|
readonly presence_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。">]>;
|
|
848
848
|
readonly seed: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>]>, undefined>, v.DescriptionAction<number | undefined, "若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。">]>;
|
|
849
|
-
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").
|
|
849
|
+
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").DefineTypeAction<string[] | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string[] | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
|
|
850
850
|
}, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
851
851
|
max_tokens: number;
|
|
852
852
|
top_p: number;
|
|
@@ -960,7 +960,7 @@ export declare const ChatParamsListDefine: v.SchemaWithPipe<readonly [v.ArraySch
|
|
|
960
960
|
stop?: string[] | undefined;
|
|
961
961
|
}) | undefined;
|
|
962
962
|
};
|
|
963
|
-
} | undefined, "## 通用参数\n- `extraOptions`字段用于覆盖默认字段\n```json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n```\n">, import("@piying/valibot-visit").
|
|
963
|
+
} | undefined, "## 通用参数\n- `extraOptions`字段用于覆盖默认字段\n```json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n```\n">, import("@piying/valibot-visit").DefineTypeAction<{
|
|
964
964
|
[x: string]: {
|
|
965
965
|
extraOptions?: ({
|
|
966
966
|
name: string;
|
|
@@ -980,7 +980,7 @@ export declare const ChatParamsListDefine: v.SchemaWithPipe<readonly [v.ArraySch
|
|
|
980
980
|
stop?: string[] | undefined;
|
|
981
981
|
}) | undefined;
|
|
982
982
|
};
|
|
983
|
-
} | undefined
|
|
983
|
+
} | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
984
984
|
[x: string]: {
|
|
985
985
|
extraOptions?: ({
|
|
986
986
|
name: string;
|
|
@@ -1097,7 +1097,7 @@ export declare const ChatParamsListDefine: v.SchemaWithPipe<readonly [v.ArraySch
|
|
|
1097
1097
|
}) | undefined;
|
|
1098
1098
|
};
|
|
1099
1099
|
} | undefined;
|
|
1100
|
-
}, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>, undefined>, import("@piying/valibot-visit").
|
|
1100
|
+
}, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>, undefined>, import("@piying/valibot-visit").DefineTypeAction<({
|
|
1101
1101
|
name: string;
|
|
1102
1102
|
vendor: "deepseek" | "openai" | "360" | "azure" | "moonshot" | "baichuan" | "minimax" | "mistralai" | "groq" | "lingyiwanwu" | "stepfun" | "together.ai" | "volcengine" | "novita" | "siliconflow" | "tongyi" | "zhipu" | "spark" | "hunyuan" | "gemini" | "claude";
|
|
1103
1103
|
} & {
|
|
@@ -1135,7 +1135,7 @@ export declare const ChatParamsListDefine: v.SchemaWithPipe<readonly [v.ArraySch
|
|
|
1135
1135
|
}) | undefined;
|
|
1136
1136
|
};
|
|
1137
1137
|
} | undefined;
|
|
1138
|
-
})[]
|
|
1138
|
+
})[]>, v.DescriptionAction<({
|
|
1139
1139
|
name: string;
|
|
1140
1140
|
vendor: "deepseek" | "openai" | "360" | "azure" | "moonshot" | "baichuan" | "minimax" | "mistralai" | "groq" | "lingyiwanwu" | "stepfun" | "together.ai" | "volcengine" | "novita" | "siliconflow" | "tongyi" | "zhipu" | "spark" | "hunyuan" | "gemini" | "claude";
|
|
1141
1141
|
} & {
|
|
@@ -1267,7 +1267,7 @@ export declare const InputChatOptionsDefine: v.SchemaWithPipe<readonly [v.Inters
|
|
|
1267
1267
|
readonly frequency_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。">]>;
|
|
1268
1268
|
readonly presence_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。">]>;
|
|
1269
1269
|
readonly seed: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>]>, undefined>, v.DescriptionAction<number | undefined, "若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。">]>;
|
|
1270
|
-
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").
|
|
1270
|
+
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").DefineTypeAction<string[] | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string[] | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
|
|
1271
1271
|
}, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
1272
1272
|
max_tokens: number;
|
|
1273
1273
|
top_p: number;
|
|
@@ -1349,7 +1349,7 @@ export declare const InputChatOptionsDefine: v.SchemaWithPipe<readonly [v.Inters
|
|
|
1349
1349
|
readonly frequency_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。">]>;
|
|
1350
1350
|
readonly presence_penalty: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -2, undefined>, v.MaxValueAction<number, 2, undefined>]>, undefined>, v.DescriptionAction<number | undefined, "数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。">]>;
|
|
1351
1351
|
readonly seed: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>]>, undefined>, v.DescriptionAction<number | undefined, "若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。">]>;
|
|
1352
|
-
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").
|
|
1352
|
+
readonly stop: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>, undefined>, v.MaxLengthAction<string[], 4, undefined>]>, undefined>, v.DescriptionAction<string[] | undefined, "最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。">, import("@piying/valibot-visit").GroupControlAction<string[] | undefined>, import("@piying/valibot-visit").DefineTypeAction<string[] | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string[] | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
|
|
1353
1353
|
}, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
1354
1354
|
max_tokens: number;
|
|
1355
1355
|
top_p: number;
|
|
@@ -1463,7 +1463,7 @@ export declare const InputChatOptionsDefine: v.SchemaWithPipe<readonly [v.Inters
|
|
|
1463
1463
|
stop?: string[] | undefined;
|
|
1464
1464
|
}) | undefined;
|
|
1465
1465
|
};
|
|
1466
|
-
} | undefined, "## 通用参数\n- `extraOptions`字段用于覆盖默认字段\n```json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n```\n">, import("@piying/valibot-visit").
|
|
1466
|
+
} | undefined, "## 通用参数\n- `extraOptions`字段用于覆盖默认字段\n```json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n```\n">, import("@piying/valibot-visit").DefineTypeAction<{
|
|
1467
1467
|
[x: string]: {
|
|
1468
1468
|
extraOptions?: ({
|
|
1469
1469
|
name: string;
|
|
@@ -1483,7 +1483,7 @@ export declare const InputChatOptionsDefine: v.SchemaWithPipe<readonly [v.Inters
|
|
|
1483
1483
|
stop?: string[] | undefined;
|
|
1484
1484
|
}) | undefined;
|
|
1485
1485
|
};
|
|
1486
|
-
} | undefined
|
|
1486
|
+
} | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
1487
1487
|
[x: string]: {
|
|
1488
1488
|
extraOptions?: ({
|
|
1489
1489
|
name: string;
|
package/define/index.js
CHANGED
|
@@ -236,7 +236,7 @@ var vendorOptionsDescribe = `## 通用参数
|
|
|
236
236
|
{"厂商名(与vendor字段相同)":{ "extraOptions":{"temperature":0.1,"topP":0.8,"maxTokens":8192,"baseURL":"http://127.0.0.1:11434/v1","apiKey":" "} }
|
|
237
237
|
\`\`\`
|
|
238
238
|
`;
|
|
239
|
-
var InputWrapper = (0, import_valibot_visit.metadataPipe)(
|
|
239
|
+
var InputWrapper = (0, import_valibot_visit.metadataPipe)(import_view_angular_core.actions.wrappers.set(["tooltip", "form-field"]));
|
|
240
240
|
var ChatItemDefine = v2.pipe(
|
|
241
241
|
v2.intersect([
|
|
242
242
|
v2.pipe(
|
|
@@ -258,12 +258,12 @@ var ChatItemDefine = v2.pipe(
|
|
|
258
258
|
].filter(Boolean).join("\n")
|
|
259
259
|
}))
|
|
260
260
|
}),
|
|
261
|
-
|
|
261
|
+
import_view_angular_core.actions.inputs.patch({
|
|
262
262
|
options: VendorList
|
|
263
263
|
})
|
|
264
264
|
)
|
|
265
265
|
}),
|
|
266
|
-
|
|
266
|
+
import_view_angular_core.actions.class.component("flex *:flex-1 gap-2 items-center")
|
|
267
267
|
),
|
|
268
268
|
v2.pipe(
|
|
269
269
|
v2.object({
|
|
@@ -282,7 +282,7 @@ var ChatItemDefine = v2.pipe(
|
|
|
282
282
|
...InputWrapper
|
|
283
283
|
)
|
|
284
284
|
}),
|
|
285
|
-
|
|
285
|
+
import_view_angular_core.actions.class.component("flex *:flex-1 gap-2 items-center")
|
|
286
286
|
),
|
|
287
287
|
v2.object({
|
|
288
288
|
apiKey: v2.pipe(
|
|
@@ -337,7 +337,7 @@ var ChatItemDefine = v2.pipe(
|
|
|
337
337
|
),
|
|
338
338
|
(0, import_view_angular_core.asControl)(),
|
|
339
339
|
(0, import_view_angular_core.setComponent)("chip-input-list"),
|
|
340
|
-
|
|
340
|
+
import_view_angular_core.actions.inputs.patch({
|
|
341
341
|
addOnBlur: true
|
|
342
342
|
}),
|
|
343
343
|
...InputWrapper
|
|
@@ -361,10 +361,10 @@ var ChatItemDefine = v2.pipe(
|
|
|
361
361
|
// ),
|
|
362
362
|
// ),
|
|
363
363
|
}),
|
|
364
|
-
|
|
364
|
+
import_view_angular_core.actions.class.component("grid gap-2")
|
|
365
365
|
)
|
|
366
366
|
]),
|
|
367
|
-
|
|
367
|
+
import_view_angular_core.actions.class.component("grid gap-2"),
|
|
368
368
|
(0, import_valibot_visit.asVirtualGroup)()
|
|
369
369
|
);
|
|
370
370
|
var VendorOptionsDefine = v2.pipe(
|
|
@@ -381,14 +381,14 @@ var VendorOptionsDefine = v2.pipe(
|
|
|
381
381
|
)
|
|
382
382
|
})
|
|
383
383
|
]),
|
|
384
|
-
|
|
384
|
+
import_view_angular_core.actions.class.component("grid gap-2"),
|
|
385
385
|
(0, import_valibot_visit.asVirtualGroup)()
|
|
386
386
|
)
|
|
387
387
|
)
|
|
388
388
|
),
|
|
389
389
|
v2.description(vendorOptionsDescribe),
|
|
390
390
|
(0, import_view_angular_core.setComponent)("rest-chip-group"),
|
|
391
|
-
|
|
391
|
+
import_view_angular_core.actions.inputs.patch({
|
|
392
392
|
optionalkeyList: VendorList.map((item) => item.value),
|
|
393
393
|
placeholder: "请设置额外配置"
|
|
394
394
|
}),
|
|
@@ -400,13 +400,13 @@ var ChatParamsItemDefine = v2.pipe(
|
|
|
400
400
|
v2.object({ vendorOptions: VendorOptionsDefine })
|
|
401
401
|
]),
|
|
402
402
|
(0, import_valibot_visit.asVirtualGroup)(),
|
|
403
|
-
|
|
403
|
+
import_view_angular_core.actions.class.component("grid gap-2")
|
|
404
404
|
);
|
|
405
405
|
var ChatParamsListDefine = v2.pipe(
|
|
406
406
|
v2.array(ChatParamsItemDefine),
|
|
407
407
|
(0, import_view_angular_core.setComponent)("label-chip-array"),
|
|
408
408
|
v2.description("对话模型列表,目前用于切换使用"),
|
|
409
|
-
|
|
409
|
+
import_view_angular_core.actions.inputs.patch({
|
|
410
410
|
displayKey: "name",
|
|
411
411
|
placeholder: "请添加配置"
|
|
412
412
|
})
|
package/define/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/openai/define/index.ts", "../../../packages/openai/chat/message.define.ts", "../../../packages/openai/chat/options.define.ts"],
|
|
4
|
-
"sourcesContent": ["export * from '../chat/message.define';\nexport * from '../chat/options.define';\n", "import * as v from 'valibot';\nexport const ChatCompletionContentPartStr = v.object({\n text: v.string(),\n type: v.optional(v.literal('text'), 'text'),\n});\nexport type ChatCompletionContentPartStrType = v.InferOutput<\n typeof ChatCompletionContentPartStr\n>;\n\nexport const ChatCompletionContentPartImage = v.object({\n image_url: v.object({\n url: v.string(),\n detail: v.optional(v.picklist(['auto', 'low', 'high'])),\n }),\n type: v.optional(v.literal('image_url'), 'image_url'),\n});\nexport type ChatCompletionContentPartImageType = v.InferOutput<\n typeof ChatCompletionContentPartImage\n>;\nexport const ChatCompletionContentPart = v.array(\n v.union([ChatCompletionContentPartStr, ChatCompletionContentPartImage]),\n);\nexport const SystemChatCompletionContent = v.array(\n ChatCompletionContentPartStr,\n);\nexport const UserChatCompletionContent = ChatCompletionContentPart;\nexport type UserChatCompletionContentType = v.InferOutput<\n typeof UserChatCompletionContent\n>;\nexport const AssistantChatCompletionContent = v.array(\n ChatCompletionContentPartStr,\n);\nexport const SystemChatMessage = v.object({\n role: v.optional(v.literal('system'), 'system'),\n content: SystemChatCompletionContent,\n});\nexport type SystemChatMessageType = v.InferOutput<typeof SystemChatMessage>;\nexport const UserChatMessage = v.object({\n role: v.optional(v.literal('user'), 'user'),\n content: UserChatCompletionContent,\n});\nexport type UserChatMessageType = v.InferOutput<typeof UserChatMessage>;\n\nexport const AssistantChatMessage = v.object({\n role: v.optional(v.literal('assistant'), 'assistant'),\n content: AssistantChatCompletionContent,\n thinkContent: v.optional(v.string()),\n});\n\nexport type AssistantChatMessageType = v.InferOutput<\n typeof AssistantChatMessage\n>;\n\nexport const ChatMessageItemDefine = v.union([\n SystemChatMessage,\n UserChatMessage,\n AssistantChatMessage,\n]);\nexport type ChatMessageItemType = v.InferOutput<typeof ChatMessageItemDefine>;\nexport const ChatMessageListDefine = v.array(ChatMessageItemDefine);\n\nexport type ChatMessageListOutputType = v.InferOutput<\n typeof ChatMessageListDefine\n>;\nexport type ChatMessageListInputType = v.InferOutput<\n typeof ChatMessageListDefine\n>;\n", "import {\n asControl,\n componentClass,\n patchInputs,\n patchWrappers,\n setComponent,\n} from '@piying/view-angular-core';\nimport * as v from 'valibot';\nimport {\n asVirtualGroup,\n metadataPipe,\n omitIntersect,\n} from '@piying/valibot-visit';\nconst VendorList = [\n {\n value: 'openai',\n label: 'openai',\n options: {\n baseURL: '',\n modelList: [],\n description: '如果是openai兼容的厂商,需要设置baseURL',\n },\n },\n {\n value: '360',\n label: '360',\n options: { baseURL: 'https://ai.360.cn', modelList: [] },\n },\n {\n value: 'azure',\n label: 'azure',\n options: { baseURL: '', modelList: [] },\n },\n {\n value: 'moonshot',\n label: 'moonshot',\n options: { baseURL: 'https://api.moonshot.cn', modelList: [] },\n },\n {\n value: 'baichuan',\n label: 'baichuan',\n options: { baseURL: 'https://api.baichuan-ai.com', modelList: [] },\n },\n {\n value: 'minimax',\n label: 'minimax',\n options: { baseURL: 'https://api.minimax.chat', modelList: [] },\n },\n {\n value: 'mistralai',\n label: 'mistralai',\n options: { baseURL: 'https://api.mistral.ai', modelList: [] },\n },\n {\n value: 'groq',\n label: 'groq',\n options: { baseURL: 'https://api.groq.com/openai', modelList: [] },\n },\n {\n value: 'lingyiwanwu',\n label: 'lingyiwanwu',\n options: { baseURL: 'https://api.lingyiwanwu.com', modelList: [] },\n },\n {\n value: 'stepfun',\n label: 'stepfun',\n options: { baseURL: 'https://api.stepfun.com', modelList: [] },\n },\n {\n value: 'deepseek',\n label: 'deepseek',\n options: { baseURL: 'https://api.deepseek.com', modelList: [] },\n },\n {\n value: 'together.ai',\n label: 'together.ai',\n options: { baseURL: 'https://api.together.xyz', modelList: [] },\n },\n {\n value: 'volcengine',\n label: 'volcengine',\n options: {\n baseURL: 'https://ark.cn-beijing.volces.com/api/v3',\n modelList: [],\n },\n },\n {\n value: 'novita',\n label: 'novita',\n options: { baseURL: 'https://api.novita.ai/v3/openai', modelList: [] },\n },\n {\n value: 'siliconflow',\n label: 'siliconflow',\n options: { baseURL: 'https://api.siliconflow.cn', modelList: [] },\n },\n {\n value: 'tongyi',\n label: 'tongyi',\n options: {\n baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n modelList: [],\n },\n },\n {\n value: 'zhipu',\n label: 'zhipu',\n options: {\n baseURL: 'https://open.bigmodel.cn/api/paas/v4',\n modelList: [],\n },\n },\n {\n value: 'spark',\n label: 'spark',\n options: {\n baseURL: 'https://spark-api-open.xf-yun.com/v1',\n modelList: [],\n },\n },\n {\n value: 'hunyuan',\n label: 'hunyuan',\n options: {\n baseURL: 'https://api.hunyuan.cloud.tencent.com/v1',\n modelList: [],\n },\n },\n\n {\n value: 'gemini',\n label: 'gemini',\n options: {\n baseURL: '',\n modelList: [],\n description: '非openai兼容,手动适配,如果有问题欢迎报告',\n },\n },\n {\n value: 'claude',\n label: 'claude',\n options: {\n baseURL: '',\n modelList: [],\n description: '非openai兼容,手动适配,如果有问题欢迎报告',\n },\n },\n] as const;\nconst vendorOptionsDescribe = `## 通用参数\n- \\`extraOptions\\`字段用于覆盖默认字段\n\\`\\`\\`json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n\\`\\`\\`\n`;\nconst InputWrapper = metadataPipe(patchWrappers(['tooltip', 'form-field']));\n\nexport const ChatItemDefine = v.pipe(\n v.intersect([\n v.pipe(\n v.object({\n name: v.pipe(v.string(), v.title('配置名')),\n vendor: v.pipe(\n v.optional(\n v.picklist(VendorList.map((item) => item.value)),\n 'openai',\n ),\n v.description('大语言模型提供的厂商'),\n v.title('对话厂商'),\n v.metadata({\n enumOptions: VendorList.map((item) => ({\n label: item.label,\n description: [\n (item.options as any).description\n ? (item.options as any).description\n : '',\n item.options.baseURL ? `链接: ${item.options.baseURL}` : '',\n ]\n .filter(Boolean)\n .join('\\n'),\n })),\n }),\n patchInputs({\n options: VendorList,\n }),\n ),\n }),\n componentClass('flex *:flex-1 gap-2 items-center'),\n ),\n v.pipe(\n v.object({\n baseURL: v.pipe(\n v.optional(v.string(), 'http://127.0.0.1:11434/v1'),\n v.title('地址'),\n v.description('openai兼容接口'),\n ...InputWrapper,\n ),\n model: v.pipe(\n v.optional(v.string(), `qwen3:8b`),\n v.title('模型'),\n v.description(\n '## 模型名\\n### ollama模型推荐\\n- `qwen3:8b`\\n- `qwen3:14b`,`deepseek-r1:7b`,`deepseek-r1:14b`\\n### 图片对话模型\\n- `minicpm-v:8b`',\n ),\n ...InputWrapper,\n ),\n }),\n componentClass('flex *:flex-1 gap-2 items-center'),\n ),\n v.object({\n apiKey: v.pipe(\n v.optional(v.string()),\n v.description('本地部署默认可以不填'),\n ),\n }),\n v.pipe(\n v.object({\n max_tokens: v.pipe(v.optional(v.number(), 8192)),\n top_p: v.pipe(\n v.optional(v.number(), 0.8),\n v.minValue(0),\n v.maxValue(10),\n v.description(`核采样(nucleus sampling)是温度采样的另一种替代方法,模型会考虑累积概率质量达到 top_p 的 token。例如,当 top_p 设为 0.1 时,仅考虑累积概率前 10% 的 token。\n\n我们通常建议调整 top_p 或温度参数,但不要同时调整两者。`),\n ...InputWrapper,\n ),\n temperature: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(0), v.maxValue(2)), 0.1),\n v.description(\n '采样温度应设置在0到2之间。较高的值(如0.8)会使输出更随机,而较低的值(如0.2)则会使输出更集中且确定。我们通常建议仅调整此参数或top_p,而不同时调整两者。',\n ),\n ...InputWrapper,\n ),\n frequency_penalty: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(-2), v.maxValue(2))),\n v.description(\n '取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。',\n ),\n ...InputWrapper,\n ),\n presence_penalty: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(-2), v.maxValue(2))),\n v.description(\n '数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。',\n ),\n ...InputWrapper,\n ),\n seed: v.pipe(\n v.optional(v.pipe(v.number())),\n v.description(\n '若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。',\n ),\n ...InputWrapper,\n ),\n stop: v.pipe(\n v.optional(v.pipe(v.array(v.pipe(v.string())), v.maxLength(4))),\n v.description(\n '最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。',\n ),\n asControl(),\n setComponent('chip-input-list'),\n patchInputs({\n addOnBlur: true,\n }),\n ...InputWrapper,\n ),\n // top_logprobs: v.pipe(\n // v.optional(v.pipe(v.number(), v.minValue(0), v.maxValue(20))),\n // v.description(\n // '一个介于0和20之间的整数,用于指定在每个标记位置返回的最可能的标记数量,每个标记均关联对应的对数概率。若使用此参数,则必须将logprobs设置为true。',\n // ),\n // ),\n\n // verbosity: v.pipe(\n // v.optional(v.picklist(['low', 'medium', 'high'])),\n // v.description(\n // `控制模型回复的详细程度。数值越低,回复越简洁;数值越高,回复越详细。当前支持的取值为低、中和高。`,\n // ),\n // ),\n // reasoning_effort: v.pipe(\n // v.optional(v.picklist(['minimal', 'low', 'medium', 'high'])),\n // v.description(\n // `控制模型回复的详细程度。数值越低,回复越简洁;数值越高,回复越详细。当前支持的取值为低、中和高。`,\n // ),\n // ),\n }),\n componentClass('grid gap-2'),\n ),\n ]),\n componentClass('grid gap-2'),\n asVirtualGroup(),\n);\n\nexport const VendorOptionsDefine = v.pipe(\n v.optional(\n v.record(\n v.string(),\n v.pipe(\n v.intersect([\n v.object({\n /** @internal */\n extraOptions: v.pipe(\n v.optional(omitIntersect(ChatItemDefine, ['name', 'vendor'])),\n v.description(`附加配置`),\n ),\n }),\n ]),\n componentClass('grid gap-2'),\n asVirtualGroup(),\n ),\n ),\n ),\n v.description(vendorOptionsDescribe),\n setComponent('rest-chip-group'),\n patchInputs({\n optionalkeyList: VendorList.map((item) => item.value),\n placeholder: '请设置额外配置',\n }),\n v.title('厂商额外配置'),\n);\nexport const ChatParamsItemDefine = v.pipe(\n v.intersect([\n ChatItemDefine,\n v.object({ vendorOptions: VendorOptionsDefine }),\n ]),\n asVirtualGroup(),\n componentClass('grid gap-2'),\n);\n\nexport const ChatParamsListDefine = v.pipe(\n v.array(ChatParamsItemDefine),\n setComponent('label-chip-array'),\n v.description('对话模型列表,目前用于切换使用'),\n patchInputs({\n displayKey: 'name',\n placeholder: '请添加配置',\n }),\n);\nexport type ChatModelOptions = v.InferOutput<typeof ChatParamsItemDefine>;\nexport type ChatModelOptionsInput = v.InferInput<typeof ChatParamsItemDefine>;\n\nexport const InputChatOptionsDefine = omitIntersect(ChatParamsItemDefine, [\n 'name',\n]);\nexport type CreateChatModelOptions = v.InferInput<\n typeof InputChatOptionsDefine\n>;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,QAAmB;AACZ,IAAM,+BAAiC,SAAO;AAAA,EACnD,MAAQ,SAAO;AAAA,EACf,MAAQ,WAAW,UAAQ,MAAM,GAAG,MAAM;AAC5C,CAAC;AAKM,IAAM,iCAAmC,SAAO;AAAA,EACrD,WAAa,SAAO;AAAA,IAClB,KAAO,SAAO;AAAA,IACd,QAAU,WAAW,WAAS,CAAC,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA,EACxD,CAAC;AAAA,EACD,MAAQ,WAAW,UAAQ,WAAW,GAAG,WAAW;AACtD,CAAC;AAIM,IAAM,4BAA8B;AAAA,EACvC,QAAM,CAAC,8BAA8B,8BAA8B,CAAC;AACxE;AACO,IAAM,8BAAgC;AAAA,EAC3C;AACF;AACO,IAAM,4BAA4B;AAIlC,IAAM,iCAAmC;AAAA,EAC9C;AACF;AACO,IAAM,oBAAsB,SAAO;AAAA,EACxC,MAAQ,WAAW,UAAQ,QAAQ,GAAG,QAAQ;AAAA,EAC9C,SAAS;AACX,CAAC;AAEM,IAAM,kBAAoB,SAAO;AAAA,EACtC,MAAQ,WAAW,UAAQ,MAAM,GAAG,MAAM;AAAA,EAC1C,SAAS;AACX,CAAC;AAGM,IAAM,uBAAyB,SAAO;AAAA,EAC3C,MAAQ,WAAW,UAAQ,WAAW,GAAG,WAAW;AAAA,EACpD,SAAS;AAAA,EACT,cAAgB,WAAW,SAAO,CAAC;AACrC,CAAC;AAMM,IAAM,wBAA0B,QAAM;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,wBAA0B,QAAM,qBAAqB;;;AC3DlE,+
|
|
4
|
+
"sourcesContent": ["export * from '../chat/message.define';\nexport * from '../chat/options.define';\n", "import * as v from 'valibot';\nexport const ChatCompletionContentPartStr = v.object({\n text: v.string(),\n type: v.optional(v.literal('text'), 'text'),\n});\nexport type ChatCompletionContentPartStrType = v.InferOutput<\n typeof ChatCompletionContentPartStr\n>;\n\nexport const ChatCompletionContentPartImage = v.object({\n image_url: v.object({\n url: v.string(),\n detail: v.optional(v.picklist(['auto', 'low', 'high'])),\n }),\n type: v.optional(v.literal('image_url'), 'image_url'),\n});\nexport type ChatCompletionContentPartImageType = v.InferOutput<\n typeof ChatCompletionContentPartImage\n>;\nexport const ChatCompletionContentPart = v.array(\n v.union([ChatCompletionContentPartStr, ChatCompletionContentPartImage]),\n);\nexport const SystemChatCompletionContent = v.array(\n ChatCompletionContentPartStr,\n);\nexport const UserChatCompletionContent = ChatCompletionContentPart;\nexport type UserChatCompletionContentType = v.InferOutput<\n typeof UserChatCompletionContent\n>;\nexport const AssistantChatCompletionContent = v.array(\n ChatCompletionContentPartStr,\n);\nexport const SystemChatMessage = v.object({\n role: v.optional(v.literal('system'), 'system'),\n content: SystemChatCompletionContent,\n});\nexport type SystemChatMessageType = v.InferOutput<typeof SystemChatMessage>;\nexport const UserChatMessage = v.object({\n role: v.optional(v.literal('user'), 'user'),\n content: UserChatCompletionContent,\n});\nexport type UserChatMessageType = v.InferOutput<typeof UserChatMessage>;\n\nexport const AssistantChatMessage = v.object({\n role: v.optional(v.literal('assistant'), 'assistant'),\n content: AssistantChatCompletionContent,\n thinkContent: v.optional(v.string()),\n});\n\nexport type AssistantChatMessageType = v.InferOutput<\n typeof AssistantChatMessage\n>;\n\nexport const ChatMessageItemDefine = v.union([\n SystemChatMessage,\n UserChatMessage,\n AssistantChatMessage,\n]);\nexport type ChatMessageItemType = v.InferOutput<typeof ChatMessageItemDefine>;\nexport const ChatMessageListDefine = v.array(ChatMessageItemDefine);\n\nexport type ChatMessageListOutputType = v.InferOutput<\n typeof ChatMessageListDefine\n>;\nexport type ChatMessageListInputType = v.InferOutput<\n typeof ChatMessageListDefine\n>;\n", "import {\n asControl,\n actions,\n setComponent,\n} from '@piying/view-angular-core';\nimport * as v from 'valibot';\nimport {\n asVirtualGroup,\n metadataPipe,\n omitIntersect,\n} from '@piying/valibot-visit';\nconst VendorList = [\n {\n value: 'openai',\n label: 'openai',\n options: {\n baseURL: '',\n modelList: [],\n description: '如果是openai兼容的厂商,需要设置baseURL',\n },\n },\n {\n value: '360',\n label: '360',\n options: { baseURL: 'https://ai.360.cn', modelList: [] },\n },\n {\n value: 'azure',\n label: 'azure',\n options: { baseURL: '', modelList: [] },\n },\n {\n value: 'moonshot',\n label: 'moonshot',\n options: { baseURL: 'https://api.moonshot.cn', modelList: [] },\n },\n {\n value: 'baichuan',\n label: 'baichuan',\n options: { baseURL: 'https://api.baichuan-ai.com', modelList: [] },\n },\n {\n value: 'minimax',\n label: 'minimax',\n options: { baseURL: 'https://api.minimax.chat', modelList: [] },\n },\n {\n value: 'mistralai',\n label: 'mistralai',\n options: { baseURL: 'https://api.mistral.ai', modelList: [] },\n },\n {\n value: 'groq',\n label: 'groq',\n options: { baseURL: 'https://api.groq.com/openai', modelList: [] },\n },\n {\n value: 'lingyiwanwu',\n label: 'lingyiwanwu',\n options: { baseURL: 'https://api.lingyiwanwu.com', modelList: [] },\n },\n {\n value: 'stepfun',\n label: 'stepfun',\n options: { baseURL: 'https://api.stepfun.com', modelList: [] },\n },\n {\n value: 'deepseek',\n label: 'deepseek',\n options: { baseURL: 'https://api.deepseek.com', modelList: [] },\n },\n {\n value: 'together.ai',\n label: 'together.ai',\n options: { baseURL: 'https://api.together.xyz', modelList: [] },\n },\n {\n value: 'volcengine',\n label: 'volcengine',\n options: {\n baseURL: 'https://ark.cn-beijing.volces.com/api/v3',\n modelList: [],\n },\n },\n {\n value: 'novita',\n label: 'novita',\n options: { baseURL: 'https://api.novita.ai/v3/openai', modelList: [] },\n },\n {\n value: 'siliconflow',\n label: 'siliconflow',\n options: { baseURL: 'https://api.siliconflow.cn', modelList: [] },\n },\n {\n value: 'tongyi',\n label: 'tongyi',\n options: {\n baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n modelList: [],\n },\n },\n {\n value: 'zhipu',\n label: 'zhipu',\n options: {\n baseURL: 'https://open.bigmodel.cn/api/paas/v4',\n modelList: [],\n },\n },\n {\n value: 'spark',\n label: 'spark',\n options: {\n baseURL: 'https://spark-api-open.xf-yun.com/v1',\n modelList: [],\n },\n },\n {\n value: 'hunyuan',\n label: 'hunyuan',\n options: {\n baseURL: 'https://api.hunyuan.cloud.tencent.com/v1',\n modelList: [],\n },\n },\n\n {\n value: 'gemini',\n label: 'gemini',\n options: {\n baseURL: '',\n modelList: [],\n description: '非openai兼容,手动适配,如果有问题欢迎报告',\n },\n },\n {\n value: 'claude',\n label: 'claude',\n options: {\n baseURL: '',\n modelList: [],\n description: '非openai兼容,手动适配,如果有问题欢迎报告',\n },\n },\n] as const;\nconst vendorOptionsDescribe = `## 通用参数\n- \\`extraOptions\\`字段用于覆盖默认字段\n\\`\\`\\`json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n\\`\\`\\`\n`;\nconst InputWrapper = metadataPipe(actions.wrappers.set(['tooltip', 'form-field']));\n\nexport const ChatItemDefine = v.pipe(\n v.intersect([\n v.pipe(\n v.object({\n name: v.pipe(v.string(), v.title('配置名')),\n vendor: v.pipe(\n v.optional(\n v.picklist(VendorList.map((item) => item.value)),\n 'openai',\n ),\n v.description('大语言模型提供的厂商'),\n v.title('对话厂商'),\n v.metadata({\n enumOptions: VendorList.map((item) => ({\n label: item.label,\n description: [\n (item.options as any).description\n ? (item.options as any).description\n : '',\n item.options.baseURL ? `链接: ${item.options.baseURL}` : '',\n ]\n .filter(Boolean)\n .join('\\n'),\n })),\n }),\n actions.inputs.patch({\n options: VendorList,\n }),\n ),\n }),\n actions.class.component('flex *:flex-1 gap-2 items-center'),\n ),\n v.pipe(\n v.object({\n baseURL: v.pipe(\n v.optional(v.string(), 'http://127.0.0.1:11434/v1'),\n v.title('地址'),\n v.description('openai兼容接口'),\n ...InputWrapper,\n ),\n model: v.pipe(\n v.optional(v.string(), `qwen3:8b`),\n v.title('模型'),\n v.description(\n '## 模型名\\n### ollama模型推荐\\n- `qwen3:8b`\\n- `qwen3:14b`,`deepseek-r1:7b`,`deepseek-r1:14b`\\n### 图片对话模型\\n- `minicpm-v:8b`',\n ),\n ...InputWrapper,\n ),\n }),\n actions.class.component('flex *:flex-1 gap-2 items-center'),\n ),\n v.object({\n apiKey: v.pipe(\n v.optional(v.string()),\n v.description('本地部署默认可以不填'),\n ),\n }),\n v.pipe(\n v.object({\n max_tokens: v.pipe(v.optional(v.number(), 8192)),\n top_p: v.pipe(\n v.optional(v.number(), 0.8),\n v.minValue(0),\n v.maxValue(10),\n v.description(`核采样(nucleus sampling)是温度采样的另一种替代方法,模型会考虑累积概率质量达到 top_p 的 token。例如,当 top_p 设为 0.1 时,仅考虑累积概率前 10% 的 token。\n\n我们通常建议调整 top_p 或温度参数,但不要同时调整两者。`),\n ...InputWrapper,\n ),\n temperature: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(0), v.maxValue(2)), 0.1),\n v.description(\n '采样温度应设置在0到2之间。较高的值(如0.8)会使输出更随机,而较低的值(如0.2)则会使输出更集中且确定。我们通常建议仅调整此参数或top_p,而不同时调整两者。',\n ),\n ...InputWrapper,\n ),\n frequency_penalty: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(-2), v.maxValue(2))),\n v.description(\n '取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。',\n ),\n ...InputWrapper,\n ),\n presence_penalty: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(-2), v.maxValue(2))),\n v.description(\n '数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。',\n ),\n ...InputWrapper,\n ),\n seed: v.pipe(\n v.optional(v.pipe(v.number())),\n v.description(\n '若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。',\n ),\n ...InputWrapper,\n ),\n stop: v.pipe(\n v.optional(v.pipe(v.array(v.pipe(v.string())), v.maxLength(4))),\n v.description(\n '最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。',\n ),\n asControl(),\n setComponent('chip-input-list'),\n actions.inputs.patch({\n addOnBlur: true,\n }),\n ...InputWrapper,\n ),\n // top_logprobs: v.pipe(\n // v.optional(v.pipe(v.number(), v.minValue(0), v.maxValue(20))),\n // v.description(\n // '一个介于0和20之间的整数,用于指定在每个标记位置返回的最可能的标记数量,每个标记均关联对应的对数概率。若使用此参数,则必须将logprobs设置为true。',\n // ),\n // ),\n\n // verbosity: v.pipe(\n // v.optional(v.picklist(['low', 'medium', 'high'])),\n // v.description(\n // `控制模型回复的详细程度。数值越低,回复越简洁;数值越高,回复越详细。当前支持的取值为低、中和高。`,\n // ),\n // ),\n // reasoning_effort: v.pipe(\n // v.optional(v.picklist(['minimal', 'low', 'medium', 'high'])),\n // v.description(\n // `控制模型回复的详细程度。数值越低,回复越简洁;数值越高,回复越详细。当前支持的取值为低、中和高。`,\n // ),\n // ),\n }),\n actions.class.component('grid gap-2'),\n ),\n ]),\n actions.class.component('grid gap-2'),\n asVirtualGroup(),\n);\n\nexport const VendorOptionsDefine = v.pipe(\n v.optional(\n v.record(\n v.string(),\n v.pipe(\n v.intersect([\n v.object({\n /** @internal */\n extraOptions: v.pipe(\n v.optional(omitIntersect(ChatItemDefine, ['name', 'vendor'])),\n v.description(`附加配置`),\n ),\n }),\n ]),\n actions.class.component('grid gap-2'),\n asVirtualGroup(),\n ),\n ),\n ),\n v.description(vendorOptionsDescribe),\n setComponent('rest-chip-group'),\n actions.inputs.patch({\n optionalkeyList: VendorList.map((item) => item.value),\n placeholder: '请设置额外配置',\n }),\n v.title('厂商额外配置'),\n);\nexport const ChatParamsItemDefine = v.pipe(\n v.intersect([\n ChatItemDefine,\n v.object({ vendorOptions: VendorOptionsDefine }),\n ]),\n asVirtualGroup(),\n actions.class.component('grid gap-2'),\n);\n\nexport const ChatParamsListDefine = v.pipe(\n v.array(ChatParamsItemDefine),\n setComponent('label-chip-array'),\n v.description('对话模型列表,目前用于切换使用'),\n actions.inputs.patch({\n displayKey: 'name',\n placeholder: '请添加配置',\n }),\n);\nexport type ChatModelOptions = v.InferOutput<typeof ChatParamsItemDefine>;\nexport type ChatModelOptionsInput = v.InferInput<typeof ChatParamsItemDefine>;\n\nexport const InputChatOptionsDefine = omitIntersect(ChatParamsItemDefine, [\n 'name',\n]);\nexport type CreateChatModelOptions = v.InferInput<\n typeof InputChatOptionsDefine\n>;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["v"]
|
|
7
7
|
}
|
package/define/index.mjs
CHANGED
|
@@ -44,9 +44,7 @@ var ChatMessageListDefine = v.array(ChatMessageItemDefine);
|
|
|
44
44
|
// packages/openai/chat/options.define.ts
|
|
45
45
|
import {
|
|
46
46
|
asControl,
|
|
47
|
-
|
|
48
|
-
patchInputs,
|
|
49
|
-
patchWrappers,
|
|
47
|
+
actions,
|
|
50
48
|
setComponent
|
|
51
49
|
} from "@piying/view-angular-core";
|
|
52
50
|
import * as v2 from "valibot";
|
|
@@ -195,7 +193,7 @@ var vendorOptionsDescribe = `## 通用参数
|
|
|
195
193
|
{"厂商名(与vendor字段相同)":{ "extraOptions":{"temperature":0.1,"topP":0.8,"maxTokens":8192,"baseURL":"http://127.0.0.1:11434/v1","apiKey":" "} }
|
|
196
194
|
\`\`\`
|
|
197
195
|
`;
|
|
198
|
-
var InputWrapper = metadataPipe(
|
|
196
|
+
var InputWrapper = metadataPipe(actions.wrappers.set(["tooltip", "form-field"]));
|
|
199
197
|
var ChatItemDefine = v2.pipe(
|
|
200
198
|
v2.intersect([
|
|
201
199
|
v2.pipe(
|
|
@@ -217,12 +215,12 @@ var ChatItemDefine = v2.pipe(
|
|
|
217
215
|
].filter(Boolean).join("\n")
|
|
218
216
|
}))
|
|
219
217
|
}),
|
|
220
|
-
|
|
218
|
+
actions.inputs.patch({
|
|
221
219
|
options: VendorList
|
|
222
220
|
})
|
|
223
221
|
)
|
|
224
222
|
}),
|
|
225
|
-
|
|
223
|
+
actions.class.component("flex *:flex-1 gap-2 items-center")
|
|
226
224
|
),
|
|
227
225
|
v2.pipe(
|
|
228
226
|
v2.object({
|
|
@@ -241,7 +239,7 @@ var ChatItemDefine = v2.pipe(
|
|
|
241
239
|
...InputWrapper
|
|
242
240
|
)
|
|
243
241
|
}),
|
|
244
|
-
|
|
242
|
+
actions.class.component("flex *:flex-1 gap-2 items-center")
|
|
245
243
|
),
|
|
246
244
|
v2.object({
|
|
247
245
|
apiKey: v2.pipe(
|
|
@@ -296,7 +294,7 @@ var ChatItemDefine = v2.pipe(
|
|
|
296
294
|
),
|
|
297
295
|
asControl(),
|
|
298
296
|
setComponent("chip-input-list"),
|
|
299
|
-
|
|
297
|
+
actions.inputs.patch({
|
|
300
298
|
addOnBlur: true
|
|
301
299
|
}),
|
|
302
300
|
...InputWrapper
|
|
@@ -320,10 +318,10 @@ var ChatItemDefine = v2.pipe(
|
|
|
320
318
|
// ),
|
|
321
319
|
// ),
|
|
322
320
|
}),
|
|
323
|
-
|
|
321
|
+
actions.class.component("grid gap-2")
|
|
324
322
|
)
|
|
325
323
|
]),
|
|
326
|
-
|
|
324
|
+
actions.class.component("grid gap-2"),
|
|
327
325
|
asVirtualGroup()
|
|
328
326
|
);
|
|
329
327
|
var VendorOptionsDefine = v2.pipe(
|
|
@@ -340,14 +338,14 @@ var VendorOptionsDefine = v2.pipe(
|
|
|
340
338
|
)
|
|
341
339
|
})
|
|
342
340
|
]),
|
|
343
|
-
|
|
341
|
+
actions.class.component("grid gap-2"),
|
|
344
342
|
asVirtualGroup()
|
|
345
343
|
)
|
|
346
344
|
)
|
|
347
345
|
),
|
|
348
346
|
v2.description(vendorOptionsDescribe),
|
|
349
347
|
setComponent("rest-chip-group"),
|
|
350
|
-
|
|
348
|
+
actions.inputs.patch({
|
|
351
349
|
optionalkeyList: VendorList.map((item) => item.value),
|
|
352
350
|
placeholder: "请设置额外配置"
|
|
353
351
|
}),
|
|
@@ -359,13 +357,13 @@ var ChatParamsItemDefine = v2.pipe(
|
|
|
359
357
|
v2.object({ vendorOptions: VendorOptionsDefine })
|
|
360
358
|
]),
|
|
361
359
|
asVirtualGroup(),
|
|
362
|
-
|
|
360
|
+
actions.class.component("grid gap-2")
|
|
363
361
|
);
|
|
364
362
|
var ChatParamsListDefine = v2.pipe(
|
|
365
363
|
v2.array(ChatParamsItemDefine),
|
|
366
364
|
setComponent("label-chip-array"),
|
|
367
365
|
v2.description("对话模型列表,目前用于切换使用"),
|
|
368
|
-
|
|
366
|
+
actions.inputs.patch({
|
|
369
367
|
displayKey: "name",
|
|
370
368
|
placeholder: "请添加配置"
|
|
371
369
|
})
|
package/define/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/openai/chat/message.define.ts", "../../../packages/openai/chat/options.define.ts"],
|
|
4
|
-
"sourcesContent": ["import * as v from 'valibot';\nexport const ChatCompletionContentPartStr = v.object({\n text: v.string(),\n type: v.optional(v.literal('text'), 'text'),\n});\nexport type ChatCompletionContentPartStrType = v.InferOutput<\n typeof ChatCompletionContentPartStr\n>;\n\nexport const ChatCompletionContentPartImage = v.object({\n image_url: v.object({\n url: v.string(),\n detail: v.optional(v.picklist(['auto', 'low', 'high'])),\n }),\n type: v.optional(v.literal('image_url'), 'image_url'),\n});\nexport type ChatCompletionContentPartImageType = v.InferOutput<\n typeof ChatCompletionContentPartImage\n>;\nexport const ChatCompletionContentPart = v.array(\n v.union([ChatCompletionContentPartStr, ChatCompletionContentPartImage]),\n);\nexport const SystemChatCompletionContent = v.array(\n ChatCompletionContentPartStr,\n);\nexport const UserChatCompletionContent = ChatCompletionContentPart;\nexport type UserChatCompletionContentType = v.InferOutput<\n typeof UserChatCompletionContent\n>;\nexport const AssistantChatCompletionContent = v.array(\n ChatCompletionContentPartStr,\n);\nexport const SystemChatMessage = v.object({\n role: v.optional(v.literal('system'), 'system'),\n content: SystemChatCompletionContent,\n});\nexport type SystemChatMessageType = v.InferOutput<typeof SystemChatMessage>;\nexport const UserChatMessage = v.object({\n role: v.optional(v.literal('user'), 'user'),\n content: UserChatCompletionContent,\n});\nexport type UserChatMessageType = v.InferOutput<typeof UserChatMessage>;\n\nexport const AssistantChatMessage = v.object({\n role: v.optional(v.literal('assistant'), 'assistant'),\n content: AssistantChatCompletionContent,\n thinkContent: v.optional(v.string()),\n});\n\nexport type AssistantChatMessageType = v.InferOutput<\n typeof AssistantChatMessage\n>;\n\nexport const ChatMessageItemDefine = v.union([\n SystemChatMessage,\n UserChatMessage,\n AssistantChatMessage,\n]);\nexport type ChatMessageItemType = v.InferOutput<typeof ChatMessageItemDefine>;\nexport const ChatMessageListDefine = v.array(ChatMessageItemDefine);\n\nexport type ChatMessageListOutputType = v.InferOutput<\n typeof ChatMessageListDefine\n>;\nexport type ChatMessageListInputType = v.InferOutput<\n typeof ChatMessageListDefine\n>;\n", "import {\n asControl,\n componentClass,\n patchInputs,\n patchWrappers,\n setComponent,\n} from '@piying/view-angular-core';\nimport * as v from 'valibot';\nimport {\n asVirtualGroup,\n metadataPipe,\n omitIntersect,\n} from '@piying/valibot-visit';\nconst VendorList = [\n {\n value: 'openai',\n label: 'openai',\n options: {\n baseURL: '',\n modelList: [],\n description: '如果是openai兼容的厂商,需要设置baseURL',\n },\n },\n {\n value: '360',\n label: '360',\n options: { baseURL: 'https://ai.360.cn', modelList: [] },\n },\n {\n value: 'azure',\n label: 'azure',\n options: { baseURL: '', modelList: [] },\n },\n {\n value: 'moonshot',\n label: 'moonshot',\n options: { baseURL: 'https://api.moonshot.cn', modelList: [] },\n },\n {\n value: 'baichuan',\n label: 'baichuan',\n options: { baseURL: 'https://api.baichuan-ai.com', modelList: [] },\n },\n {\n value: 'minimax',\n label: 'minimax',\n options: { baseURL: 'https://api.minimax.chat', modelList: [] },\n },\n {\n value: 'mistralai',\n label: 'mistralai',\n options: { baseURL: 'https://api.mistral.ai', modelList: [] },\n },\n {\n value: 'groq',\n label: 'groq',\n options: { baseURL: 'https://api.groq.com/openai', modelList: [] },\n },\n {\n value: 'lingyiwanwu',\n label: 'lingyiwanwu',\n options: { baseURL: 'https://api.lingyiwanwu.com', modelList: [] },\n },\n {\n value: 'stepfun',\n label: 'stepfun',\n options: { baseURL: 'https://api.stepfun.com', modelList: [] },\n },\n {\n value: 'deepseek',\n label: 'deepseek',\n options: { baseURL: 'https://api.deepseek.com', modelList: [] },\n },\n {\n value: 'together.ai',\n label: 'together.ai',\n options: { baseURL: 'https://api.together.xyz', modelList: [] },\n },\n {\n value: 'volcengine',\n label: 'volcengine',\n options: {\n baseURL: 'https://ark.cn-beijing.volces.com/api/v3',\n modelList: [],\n },\n },\n {\n value: 'novita',\n label: 'novita',\n options: { baseURL: 'https://api.novita.ai/v3/openai', modelList: [] },\n },\n {\n value: 'siliconflow',\n label: 'siliconflow',\n options: { baseURL: 'https://api.siliconflow.cn', modelList: [] },\n },\n {\n value: 'tongyi',\n label: 'tongyi',\n options: {\n baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n modelList: [],\n },\n },\n {\n value: 'zhipu',\n label: 'zhipu',\n options: {\n baseURL: 'https://open.bigmodel.cn/api/paas/v4',\n modelList: [],\n },\n },\n {\n value: 'spark',\n label: 'spark',\n options: {\n baseURL: 'https://spark-api-open.xf-yun.com/v1',\n modelList: [],\n },\n },\n {\n value: 'hunyuan',\n label: 'hunyuan',\n options: {\n baseURL: 'https://api.hunyuan.cloud.tencent.com/v1',\n modelList: [],\n },\n },\n\n {\n value: 'gemini',\n label: 'gemini',\n options: {\n baseURL: '',\n modelList: [],\n description: '非openai兼容,手动适配,如果有问题欢迎报告',\n },\n },\n {\n value: 'claude',\n label: 'claude',\n options: {\n baseURL: '',\n modelList: [],\n description: '非openai兼容,手动适配,如果有问题欢迎报告',\n },\n },\n] as const;\nconst vendorOptionsDescribe = `## 通用参数\n- \\`extraOptions\\`字段用于覆盖默认字段\n\\`\\`\\`json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n\\`\\`\\`\n`;\nconst InputWrapper = metadataPipe(patchWrappers(['tooltip', 'form-field']));\n\nexport const ChatItemDefine = v.pipe(\n v.intersect([\n v.pipe(\n v.object({\n name: v.pipe(v.string(), v.title('配置名')),\n vendor: v.pipe(\n v.optional(\n v.picklist(VendorList.map((item) => item.value)),\n 'openai',\n ),\n v.description('大语言模型提供的厂商'),\n v.title('对话厂商'),\n v.metadata({\n enumOptions: VendorList.map((item) => ({\n label: item.label,\n description: [\n (item.options as any).description\n ? (item.options as any).description\n : '',\n item.options.baseURL ? `链接: ${item.options.baseURL}` : '',\n ]\n .filter(Boolean)\n .join('\\n'),\n })),\n }),\n patchInputs({\n options: VendorList,\n }),\n ),\n }),\n componentClass('flex *:flex-1 gap-2 items-center'),\n ),\n v.pipe(\n v.object({\n baseURL: v.pipe(\n v.optional(v.string(), 'http://127.0.0.1:11434/v1'),\n v.title('地址'),\n v.description('openai兼容接口'),\n ...InputWrapper,\n ),\n model: v.pipe(\n v.optional(v.string(), `qwen3:8b`),\n v.title('模型'),\n v.description(\n '## 模型名\\n### ollama模型推荐\\n- `qwen3:8b`\\n- `qwen3:14b`,`deepseek-r1:7b`,`deepseek-r1:14b`\\n### 图片对话模型\\n- `minicpm-v:8b`',\n ),\n ...InputWrapper,\n ),\n }),\n componentClass('flex *:flex-1 gap-2 items-center'),\n ),\n v.object({\n apiKey: v.pipe(\n v.optional(v.string()),\n v.description('本地部署默认可以不填'),\n ),\n }),\n v.pipe(\n v.object({\n max_tokens: v.pipe(v.optional(v.number(), 8192)),\n top_p: v.pipe(\n v.optional(v.number(), 0.8),\n v.minValue(0),\n v.maxValue(10),\n v.description(`核采样(nucleus sampling)是温度采样的另一种替代方法,模型会考虑累积概率质量达到 top_p 的 token。例如,当 top_p 设为 0.1 时,仅考虑累积概率前 10% 的 token。\n\n我们通常建议调整 top_p 或温度参数,但不要同时调整两者。`),\n ...InputWrapper,\n ),\n temperature: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(0), v.maxValue(2)), 0.1),\n v.description(\n '采样温度应设置在0到2之间。较高的值(如0.8)会使输出更随机,而较低的值(如0.2)则会使输出更集中且确定。我们通常建议仅调整此参数或top_p,而不同时调整两者。',\n ),\n ...InputWrapper,\n ),\n frequency_penalty: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(-2), v.maxValue(2))),\n v.description(\n '取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。',\n ),\n ...InputWrapper,\n ),\n presence_penalty: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(-2), v.maxValue(2))),\n v.description(\n '数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。',\n ),\n ...InputWrapper,\n ),\n seed: v.pipe(\n v.optional(v.pipe(v.number())),\n v.description(\n '若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。',\n ),\n ...InputWrapper,\n ),\n stop: v.pipe(\n v.optional(v.pipe(v.array(v.pipe(v.string())), v.maxLength(4))),\n v.description(\n '最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。',\n ),\n asControl(),\n setComponent('chip-input-list'),\n patchInputs({\n addOnBlur: true,\n }),\n ...InputWrapper,\n ),\n // top_logprobs: v.pipe(\n // v.optional(v.pipe(v.number(), v.minValue(0), v.maxValue(20))),\n // v.description(\n // '一个介于0和20之间的整数,用于指定在每个标记位置返回的最可能的标记数量,每个标记均关联对应的对数概率。若使用此参数,则必须将logprobs设置为true。',\n // ),\n // ),\n\n // verbosity: v.pipe(\n // v.optional(v.picklist(['low', 'medium', 'high'])),\n // v.description(\n // `控制模型回复的详细程度。数值越低,回复越简洁;数值越高,回复越详细。当前支持的取值为低、中和高。`,\n // ),\n // ),\n // reasoning_effort: v.pipe(\n // v.optional(v.picklist(['minimal', 'low', 'medium', 'high'])),\n // v.description(\n // `控制模型回复的详细程度。数值越低,回复越简洁;数值越高,回复越详细。当前支持的取值为低、中和高。`,\n // ),\n // ),\n }),\n componentClass('grid gap-2'),\n ),\n ]),\n componentClass('grid gap-2'),\n asVirtualGroup(),\n);\n\nexport const VendorOptionsDefine = v.pipe(\n v.optional(\n v.record(\n v.string(),\n v.pipe(\n v.intersect([\n v.object({\n /** @internal */\n extraOptions: v.pipe(\n v.optional(omitIntersect(ChatItemDefine, ['name', 'vendor'])),\n v.description(`附加配置`),\n ),\n }),\n ]),\n componentClass('grid gap-2'),\n asVirtualGroup(),\n ),\n ),\n ),\n v.description(vendorOptionsDescribe),\n setComponent('rest-chip-group'),\n patchInputs({\n optionalkeyList: VendorList.map((item) => item.value),\n placeholder: '请设置额外配置',\n }),\n v.title('厂商额外配置'),\n);\nexport const ChatParamsItemDefine = v.pipe(\n v.intersect([\n ChatItemDefine,\n v.object({ vendorOptions: VendorOptionsDefine }),\n ]),\n asVirtualGroup(),\n componentClass('grid gap-2'),\n);\n\nexport const ChatParamsListDefine = v.pipe(\n v.array(ChatParamsItemDefine),\n setComponent('label-chip-array'),\n v.description('对话模型列表,目前用于切换使用'),\n patchInputs({\n displayKey: 'name',\n placeholder: '请添加配置',\n }),\n);\nexport type ChatModelOptions = v.InferOutput<typeof ChatParamsItemDefine>;\nexport type ChatModelOptionsInput = v.InferInput<typeof ChatParamsItemDefine>;\n\nexport const InputChatOptionsDefine = omitIntersect(ChatParamsItemDefine, [\n 'name',\n]);\nexport type CreateChatModelOptions = v.InferInput<\n typeof InputChatOptionsDefine\n>;\n"],
|
|
5
|
-
"mappings": ";AAAA,YAAY,OAAO;AACZ,IAAM,+BAAiC,SAAO;AAAA,EACnD,MAAQ,SAAO;AAAA,EACf,MAAQ,WAAW,UAAQ,MAAM,GAAG,MAAM;AAC5C,CAAC;AAKM,IAAM,iCAAmC,SAAO;AAAA,EACrD,WAAa,SAAO;AAAA,IAClB,KAAO,SAAO;AAAA,IACd,QAAU,WAAW,WAAS,CAAC,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA,EACxD,CAAC;AAAA,EACD,MAAQ,WAAW,UAAQ,WAAW,GAAG,WAAW;AACtD,CAAC;AAIM,IAAM,4BAA8B;AAAA,EACvC,QAAM,CAAC,8BAA8B,8BAA8B,CAAC;AACxE;AACO,IAAM,8BAAgC;AAAA,EAC3C;AACF;AACO,IAAM,4BAA4B;AAIlC,IAAM,iCAAmC;AAAA,EAC9C;AACF;AACO,IAAM,oBAAsB,SAAO;AAAA,EACxC,MAAQ,WAAW,UAAQ,QAAQ,GAAG,QAAQ;AAAA,EAC9C,SAAS;AACX,CAAC;AAEM,IAAM,kBAAoB,SAAO;AAAA,EACtC,MAAQ,WAAW,UAAQ,MAAM,GAAG,MAAM;AAAA,EAC1C,SAAS;AACX,CAAC;AAGM,IAAM,uBAAyB,SAAO;AAAA,EAC3C,MAAQ,WAAW,UAAQ,WAAW,GAAG,WAAW;AAAA,EACpD,SAAS;AAAA,EACT,cAAgB,WAAW,SAAO,CAAC;AACrC,CAAC;AAMM,IAAM,wBAA0B,QAAM;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,wBAA0B,QAAM,qBAAqB;;;AC3DlE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,
|
|
4
|
+
"sourcesContent": ["import * as v from 'valibot';\nexport const ChatCompletionContentPartStr = v.object({\n text: v.string(),\n type: v.optional(v.literal('text'), 'text'),\n});\nexport type ChatCompletionContentPartStrType = v.InferOutput<\n typeof ChatCompletionContentPartStr\n>;\n\nexport const ChatCompletionContentPartImage = v.object({\n image_url: v.object({\n url: v.string(),\n detail: v.optional(v.picklist(['auto', 'low', 'high'])),\n }),\n type: v.optional(v.literal('image_url'), 'image_url'),\n});\nexport type ChatCompletionContentPartImageType = v.InferOutput<\n typeof ChatCompletionContentPartImage\n>;\nexport const ChatCompletionContentPart = v.array(\n v.union([ChatCompletionContentPartStr, ChatCompletionContentPartImage]),\n);\nexport const SystemChatCompletionContent = v.array(\n ChatCompletionContentPartStr,\n);\nexport const UserChatCompletionContent = ChatCompletionContentPart;\nexport type UserChatCompletionContentType = v.InferOutput<\n typeof UserChatCompletionContent\n>;\nexport const AssistantChatCompletionContent = v.array(\n ChatCompletionContentPartStr,\n);\nexport const SystemChatMessage = v.object({\n role: v.optional(v.literal('system'), 'system'),\n content: SystemChatCompletionContent,\n});\nexport type SystemChatMessageType = v.InferOutput<typeof SystemChatMessage>;\nexport const UserChatMessage = v.object({\n role: v.optional(v.literal('user'), 'user'),\n content: UserChatCompletionContent,\n});\nexport type UserChatMessageType = v.InferOutput<typeof UserChatMessage>;\n\nexport const AssistantChatMessage = v.object({\n role: v.optional(v.literal('assistant'), 'assistant'),\n content: AssistantChatCompletionContent,\n thinkContent: v.optional(v.string()),\n});\n\nexport type AssistantChatMessageType = v.InferOutput<\n typeof AssistantChatMessage\n>;\n\nexport const ChatMessageItemDefine = v.union([\n SystemChatMessage,\n UserChatMessage,\n AssistantChatMessage,\n]);\nexport type ChatMessageItemType = v.InferOutput<typeof ChatMessageItemDefine>;\nexport const ChatMessageListDefine = v.array(ChatMessageItemDefine);\n\nexport type ChatMessageListOutputType = v.InferOutput<\n typeof ChatMessageListDefine\n>;\nexport type ChatMessageListInputType = v.InferOutput<\n typeof ChatMessageListDefine\n>;\n", "import {\n asControl,\n actions,\n setComponent,\n} from '@piying/view-angular-core';\nimport * as v from 'valibot';\nimport {\n asVirtualGroup,\n metadataPipe,\n omitIntersect,\n} from '@piying/valibot-visit';\nconst VendorList = [\n {\n value: 'openai',\n label: 'openai',\n options: {\n baseURL: '',\n modelList: [],\n description: '如果是openai兼容的厂商,需要设置baseURL',\n },\n },\n {\n value: '360',\n label: '360',\n options: { baseURL: 'https://ai.360.cn', modelList: [] },\n },\n {\n value: 'azure',\n label: 'azure',\n options: { baseURL: '', modelList: [] },\n },\n {\n value: 'moonshot',\n label: 'moonshot',\n options: { baseURL: 'https://api.moonshot.cn', modelList: [] },\n },\n {\n value: 'baichuan',\n label: 'baichuan',\n options: { baseURL: 'https://api.baichuan-ai.com', modelList: [] },\n },\n {\n value: 'minimax',\n label: 'minimax',\n options: { baseURL: 'https://api.minimax.chat', modelList: [] },\n },\n {\n value: 'mistralai',\n label: 'mistralai',\n options: { baseURL: 'https://api.mistral.ai', modelList: [] },\n },\n {\n value: 'groq',\n label: 'groq',\n options: { baseURL: 'https://api.groq.com/openai', modelList: [] },\n },\n {\n value: 'lingyiwanwu',\n label: 'lingyiwanwu',\n options: { baseURL: 'https://api.lingyiwanwu.com', modelList: [] },\n },\n {\n value: 'stepfun',\n label: 'stepfun',\n options: { baseURL: 'https://api.stepfun.com', modelList: [] },\n },\n {\n value: 'deepseek',\n label: 'deepseek',\n options: { baseURL: 'https://api.deepseek.com', modelList: [] },\n },\n {\n value: 'together.ai',\n label: 'together.ai',\n options: { baseURL: 'https://api.together.xyz', modelList: [] },\n },\n {\n value: 'volcengine',\n label: 'volcengine',\n options: {\n baseURL: 'https://ark.cn-beijing.volces.com/api/v3',\n modelList: [],\n },\n },\n {\n value: 'novita',\n label: 'novita',\n options: { baseURL: 'https://api.novita.ai/v3/openai', modelList: [] },\n },\n {\n value: 'siliconflow',\n label: 'siliconflow',\n options: { baseURL: 'https://api.siliconflow.cn', modelList: [] },\n },\n {\n value: 'tongyi',\n label: 'tongyi',\n options: {\n baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n modelList: [],\n },\n },\n {\n value: 'zhipu',\n label: 'zhipu',\n options: {\n baseURL: 'https://open.bigmodel.cn/api/paas/v4',\n modelList: [],\n },\n },\n {\n value: 'spark',\n label: 'spark',\n options: {\n baseURL: 'https://spark-api-open.xf-yun.com/v1',\n modelList: [],\n },\n },\n {\n value: 'hunyuan',\n label: 'hunyuan',\n options: {\n baseURL: 'https://api.hunyuan.cloud.tencent.com/v1',\n modelList: [],\n },\n },\n\n {\n value: 'gemini',\n label: 'gemini',\n options: {\n baseURL: '',\n modelList: [],\n description: '非openai兼容,手动适配,如果有问题欢迎报告',\n },\n },\n {\n value: 'claude',\n label: 'claude',\n options: {\n baseURL: '',\n modelList: [],\n description: '非openai兼容,手动适配,如果有问题欢迎报告',\n },\n },\n] as const;\nconst vendorOptionsDescribe = `## 通用参数\n- \\`extraOptions\\`字段用于覆盖默认字段\n\\`\\`\\`json\n{\"厂商名(与vendor字段相同)\":{ \"extraOptions\":{\"temperature\":0.1,\"topP\":0.8,\"maxTokens\":8192,\"baseURL\":\"http://127.0.0.1:11434/v1\",\"apiKey\":\" \"} }\n\\`\\`\\`\n`;\nconst InputWrapper = metadataPipe(actions.wrappers.set(['tooltip', 'form-field']));\n\nexport const ChatItemDefine = v.pipe(\n v.intersect([\n v.pipe(\n v.object({\n name: v.pipe(v.string(), v.title('配置名')),\n vendor: v.pipe(\n v.optional(\n v.picklist(VendorList.map((item) => item.value)),\n 'openai',\n ),\n v.description('大语言模型提供的厂商'),\n v.title('对话厂商'),\n v.metadata({\n enumOptions: VendorList.map((item) => ({\n label: item.label,\n description: [\n (item.options as any).description\n ? (item.options as any).description\n : '',\n item.options.baseURL ? `链接: ${item.options.baseURL}` : '',\n ]\n .filter(Boolean)\n .join('\\n'),\n })),\n }),\n actions.inputs.patch({\n options: VendorList,\n }),\n ),\n }),\n actions.class.component('flex *:flex-1 gap-2 items-center'),\n ),\n v.pipe(\n v.object({\n baseURL: v.pipe(\n v.optional(v.string(), 'http://127.0.0.1:11434/v1'),\n v.title('地址'),\n v.description('openai兼容接口'),\n ...InputWrapper,\n ),\n model: v.pipe(\n v.optional(v.string(), `qwen3:8b`),\n v.title('模型'),\n v.description(\n '## 模型名\\n### ollama模型推荐\\n- `qwen3:8b`\\n- `qwen3:14b`,`deepseek-r1:7b`,`deepseek-r1:14b`\\n### 图片对话模型\\n- `minicpm-v:8b`',\n ),\n ...InputWrapper,\n ),\n }),\n actions.class.component('flex *:flex-1 gap-2 items-center'),\n ),\n v.object({\n apiKey: v.pipe(\n v.optional(v.string()),\n v.description('本地部署默认可以不填'),\n ),\n }),\n v.pipe(\n v.object({\n max_tokens: v.pipe(v.optional(v.number(), 8192)),\n top_p: v.pipe(\n v.optional(v.number(), 0.8),\n v.minValue(0),\n v.maxValue(10),\n v.description(`核采样(nucleus sampling)是温度采样的另一种替代方法,模型会考虑累积概率质量达到 top_p 的 token。例如,当 top_p 设为 0.1 时,仅考虑累积概率前 10% 的 token。\n\n我们通常建议调整 top_p 或温度参数,但不要同时调整两者。`),\n ...InputWrapper,\n ),\n temperature: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(0), v.maxValue(2)), 0.1),\n v.description(\n '采样温度应设置在0到2之间。较高的值(如0.8)会使输出更随机,而较低的值(如0.2)则会使输出更集中且确定。我们通常建议仅调整此参数或top_p,而不同时调整两者。',\n ),\n ...InputWrapper,\n ),\n frequency_penalty: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(-2), v.maxValue(2))),\n v.description(\n '取值范围为-2.0至2.0。正值会根据当前文本中已有标记的频率对新标记进行惩罚,从而降低模型逐字重复相同内容的概率。',\n ),\n ...InputWrapper,\n ),\n presence_penalty: v.pipe(\n v.optional(v.pipe(v.number(), v.minValue(-2), v.maxValue(2))),\n v.description(\n '数值介于-2.0至2.0之间。正值会基于新标记是否已在当前文本中出现,对新标记施加惩罚,从而提升模型讨论新话题的可能性。',\n ),\n ...InputWrapper,\n ),\n seed: v.pipe(\n v.optional(v.pipe(v.number())),\n v.description(\n '若已指定,系统将尽力确保采样具有确定性,即使用相同种子和参数的重复请求将返回相同结果。确定性无法保证,请通过 system_fingerprint 响应参数监控后端变化。',\n ),\n ...InputWrapper,\n ),\n stop: v.pipe(\n v.optional(v.pipe(v.array(v.pipe(v.string())), v.maxLength(4))),\n v.description(\n '最多可指定4个停止序列,API将在生成到该序列时停止,返回的文本中不包含该停止序列。',\n ),\n asControl(),\n setComponent('chip-input-list'),\n actions.inputs.patch({\n addOnBlur: true,\n }),\n ...InputWrapper,\n ),\n // top_logprobs: v.pipe(\n // v.optional(v.pipe(v.number(), v.minValue(0), v.maxValue(20))),\n // v.description(\n // '一个介于0和20之间的整数,用于指定在每个标记位置返回的最可能的标记数量,每个标记均关联对应的对数概率。若使用此参数,则必须将logprobs设置为true。',\n // ),\n // ),\n\n // verbosity: v.pipe(\n // v.optional(v.picklist(['low', 'medium', 'high'])),\n // v.description(\n // `控制模型回复的详细程度。数值越低,回复越简洁;数值越高,回复越详细。当前支持的取值为低、中和高。`,\n // ),\n // ),\n // reasoning_effort: v.pipe(\n // v.optional(v.picklist(['minimal', 'low', 'medium', 'high'])),\n // v.description(\n // `控制模型回复的详细程度。数值越低,回复越简洁;数值越高,回复越详细。当前支持的取值为低、中和高。`,\n // ),\n // ),\n }),\n actions.class.component('grid gap-2'),\n ),\n ]),\n actions.class.component('grid gap-2'),\n asVirtualGroup(),\n);\n\nexport const VendorOptionsDefine = v.pipe(\n v.optional(\n v.record(\n v.string(),\n v.pipe(\n v.intersect([\n v.object({\n /** @internal */\n extraOptions: v.pipe(\n v.optional(omitIntersect(ChatItemDefine, ['name', 'vendor'])),\n v.description(`附加配置`),\n ),\n }),\n ]),\n actions.class.component('grid gap-2'),\n asVirtualGroup(),\n ),\n ),\n ),\n v.description(vendorOptionsDescribe),\n setComponent('rest-chip-group'),\n actions.inputs.patch({\n optionalkeyList: VendorList.map((item) => item.value),\n placeholder: '请设置额外配置',\n }),\n v.title('厂商额外配置'),\n);\nexport const ChatParamsItemDefine = v.pipe(\n v.intersect([\n ChatItemDefine,\n v.object({ vendorOptions: VendorOptionsDefine }),\n ]),\n asVirtualGroup(),\n actions.class.component('grid gap-2'),\n);\n\nexport const ChatParamsListDefine = v.pipe(\n v.array(ChatParamsItemDefine),\n setComponent('label-chip-array'),\n v.description('对话模型列表,目前用于切换使用'),\n actions.inputs.patch({\n displayKey: 'name',\n placeholder: '请添加配置',\n }),\n);\nexport type ChatModelOptions = v.InferOutput<typeof ChatParamsItemDefine>;\nexport type ChatModelOptionsInput = v.InferInput<typeof ChatParamsItemDefine>;\n\nexport const InputChatOptionsDefine = omitIntersect(ChatParamsItemDefine, [\n 'name',\n]);\nexport type CreateChatModelOptions = v.InferInput<\n typeof InputChatOptionsDefine\n>;\n"],
|
|
5
|
+
"mappings": ";AAAA,YAAY,OAAO;AACZ,IAAM,+BAAiC,SAAO;AAAA,EACnD,MAAQ,SAAO;AAAA,EACf,MAAQ,WAAW,UAAQ,MAAM,GAAG,MAAM;AAC5C,CAAC;AAKM,IAAM,iCAAmC,SAAO;AAAA,EACrD,WAAa,SAAO;AAAA,IAClB,KAAO,SAAO;AAAA,IACd,QAAU,WAAW,WAAS,CAAC,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA,EACxD,CAAC;AAAA,EACD,MAAQ,WAAW,UAAQ,WAAW,GAAG,WAAW;AACtD,CAAC;AAIM,IAAM,4BAA8B;AAAA,EACvC,QAAM,CAAC,8BAA8B,8BAA8B,CAAC;AACxE;AACO,IAAM,8BAAgC;AAAA,EAC3C;AACF;AACO,IAAM,4BAA4B;AAIlC,IAAM,iCAAmC;AAAA,EAC9C;AACF;AACO,IAAM,oBAAsB,SAAO;AAAA,EACxC,MAAQ,WAAW,UAAQ,QAAQ,GAAG,QAAQ;AAAA,EAC9C,SAAS;AACX,CAAC;AAEM,IAAM,kBAAoB,SAAO;AAAA,EACtC,MAAQ,WAAW,UAAQ,MAAM,GAAG,MAAM;AAAA,EAC1C,SAAS;AACX,CAAC;AAGM,IAAM,uBAAyB,SAAO;AAAA,EAC3C,MAAQ,WAAW,UAAQ,WAAW,GAAG,WAAW;AAAA,EACpD,SAAS;AAAA,EACT,cAAgB,WAAW,SAAO,CAAC;AACrC,CAAC;AAMM,IAAM,wBAA0B,QAAM;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,wBAA0B,QAAM,qBAAqB;;;AC3DlE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,YAAYA,QAAO;AACnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,IAAM,aAAa;AAAA,EACjB;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW,CAAC;AAAA,MACZ,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,qBAAqB,WAAW,CAAC,EAAE;AAAA,EACzD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,IAAI,WAAW,CAAC,EAAE;AAAA,EACxC;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,2BAA2B,WAAW,CAAC,EAAE;AAAA,EAC/D;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,+BAA+B,WAAW,CAAC,EAAE;AAAA,EACnE;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,4BAA4B,WAAW,CAAC,EAAE;AAAA,EAChE;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,0BAA0B,WAAW,CAAC,EAAE;AAAA,EAC9D;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,+BAA+B,WAAW,CAAC,EAAE;AAAA,EACnE;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,+BAA+B,WAAW,CAAC,EAAE;AAAA,EACnE;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,2BAA2B,WAAW,CAAC,EAAE;AAAA,EAC/D;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,4BAA4B,WAAW,CAAC,EAAE;AAAA,EAChE;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,4BAA4B,WAAW,CAAC,EAAE;AAAA,EAChE;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW,CAAC;AAAA,IACd;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,mCAAmC,WAAW,CAAC,EAAE;AAAA,EACvE;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,8BAA8B,WAAW,CAAC,EAAE;AAAA,EAClE;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW,CAAC;AAAA,IACd;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW,CAAC;AAAA,IACd;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW,CAAC;AAAA,IACd;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW,CAAC;AAAA,IACd;AAAA,EACF;AAAA,EAEA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW,CAAC;AAAA,MACZ,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW,CAAC;AAAA,MACZ,aAAa;AAAA,IACf;AAAA,EACF;AACF;AACA,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAM9B,IAAM,eAAe,aAAa,QAAQ,SAAS,IAAI,CAAC,WAAW,YAAY,CAAC,CAAC;AAE1E,IAAM,iBAAmB;AAAA,EAC5B,aAAU;AAAA,IACR;AAAA,MACE,UAAO;AAAA,QACP,MAAQ,QAAO,UAAO,GAAK,SAAM,KAAK,CAAC;AAAA,QACvC,QAAU;AAAA,UACN;AAAA,YACE,YAAS,WAAW,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAAA,YAC/C;AAAA,UACF;AAAA,UACE,eAAY,YAAY;AAAA,UACxB,SAAM,MAAM;AAAA,UACZ,YAAS;AAAA,YACT,aAAa,WAAW,IAAI,CAAC,UAAU;AAAA,cACrC,OAAO,KAAK;AAAA,cACZ,aAAa;AAAA,gBACV,KAAK,QAAgB,cACjB,KAAK,QAAgB,cACtB;AAAA,gBACJ,KAAK,QAAQ,UAAU,OAAO,KAAK,QAAQ,OAAO,KAAK;AAAA,cACzD,EACG,OAAO,OAAO,EACd,KAAK,IAAI;AAAA,YACd,EAAE;AAAA,UACJ,CAAC;AAAA,UACD,QAAQ,OAAO,MAAM;AAAA,YACnB,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,QAAQ,MAAM,UAAU,kCAAkC;AAAA,IAC5D;AAAA,IACE;AAAA,MACE,UAAO;AAAA,QACP,SAAW;AAAA,UACP,YAAW,UAAO,GAAG,2BAA2B;AAAA,UAChD,SAAM,IAAI;AAAA,UACV,eAAY,YAAY;AAAA,UAC1B,GAAG;AAAA,QACL;AAAA,QACA,OAAS;AAAA,UACL,YAAW,UAAO,GAAG,UAAU;AAAA,UAC/B,SAAM,IAAI;AAAA,UACV;AAAA,YACA;AAAA,UACF;AAAA,UACA,GAAG;AAAA,QACL;AAAA,MACF,CAAC;AAAA,MACD,QAAQ,MAAM,UAAU,kCAAkC;AAAA,IAC5D;AAAA,IACE,UAAO;AAAA,MACP,QAAU;AAAA,QACN,YAAW,UAAO,CAAC;AAAA,QACnB,eAAY,YAAY;AAAA,MAC5B;AAAA,IACF,CAAC;AAAA,IACC;AAAA,MACE,UAAO;AAAA,QACP,YAAc,QAAO,YAAW,UAAO,GAAG,IAAI,CAAC;AAAA,QAC/C,OAAS;AAAA,UACL,YAAW,UAAO,GAAG,GAAG;AAAA,UACxB,YAAS,CAAC;AAAA,UACV,YAAS,EAAE;AAAA,UACX,eAAY;AAAA;AAAA,gCAEQ;AAAA,UACtB,GAAG;AAAA,QACL;AAAA,QACA,aAAe;AAAA,UACX,YAAW,QAAO,UAAO,GAAK,YAAS,CAAC,GAAK,YAAS,CAAC,CAAC,GAAG,GAAG;AAAA,UAC9D;AAAA,YACA;AAAA,UACF;AAAA,UACA,GAAG;AAAA,QACL;AAAA,QACA,mBAAqB;AAAA,UACjB,YAAW,QAAO,UAAO,GAAK,YAAS,EAAE,GAAK,YAAS,CAAC,CAAC,CAAC;AAAA,UAC1D;AAAA,YACA;AAAA,UACF;AAAA,UACA,GAAG;AAAA,QACL;AAAA,QACA,kBAAoB;AAAA,UAChB,YAAW,QAAO,UAAO,GAAK,YAAS,EAAE,GAAK,YAAS,CAAC,CAAC,CAAC;AAAA,UAC1D;AAAA,YACA;AAAA,UACF;AAAA,UACA,GAAG;AAAA,QACL;AAAA,QACA,MAAQ;AAAA,UACJ,YAAW,QAAO,UAAO,CAAC,CAAC;AAAA,UAC3B;AAAA,YACA;AAAA,UACF;AAAA,UACA,GAAG;AAAA,QACL;AAAA,QACA,MAAQ;AAAA,UACJ,YAAW,QAAO,SAAQ,QAAO,UAAO,CAAC,CAAC,GAAK,aAAU,CAAC,CAAC,CAAC;AAAA,UAC5D;AAAA,YACA;AAAA,UACF;AAAA,UACA,UAAU;AAAA,UACV,aAAa,iBAAiB;AAAA,UAC9B,QAAQ,OAAO,MAAM;AAAA,YACnB,WAAW;AAAA,UACb,CAAC;AAAA,UACD,GAAG;AAAA,QACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAoBF,CAAC;AAAA,MACD,QAAQ,MAAM,UAAU,YAAY;AAAA,IACtC;AAAA,EACF,CAAC;AAAA,EACD,QAAQ,MAAM,UAAU,YAAY;AAAA,EACpC,eAAe;AACjB;AAEO,IAAM,sBAAwB;AAAA,EACjC;AAAA,IACE;AAAA,MACE,UAAO;AAAA,MACP;AAAA,QACE,aAAU;AAAA,UACR,UAAO;AAAA;AAAA,YAEP,cAAgB;AAAA,cACZ,YAAS,cAAc,gBAAgB,CAAC,QAAQ,QAAQ,CAAC,CAAC;AAAA,cAC1D,eAAY,MAAM;AAAA,YACtB;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,QACD,QAAQ,MAAM,UAAU,YAAY;AAAA,QACpC,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EACE,eAAY,qBAAqB;AAAA,EACnC,aAAa,iBAAiB;AAAA,EAC9B,QAAQ,OAAO,MAAM;AAAA,IACnB,iBAAiB,WAAW,IAAI,CAAC,SAAS,KAAK,KAAK;AAAA,IACpD,aAAa;AAAA,EACf,CAAC;AAAA,EACC,SAAM,QAAQ;AAClB;AACO,IAAM,uBAAyB;AAAA,EAClC,aAAU;AAAA,IACV;AAAA,IACE,UAAO,EAAE,eAAe,oBAAoB,CAAC;AAAA,EACjD,CAAC;AAAA,EACD,eAAe;AAAA,EACf,QAAQ,MAAM,UAAU,YAAY;AACtC;AAEO,IAAM,uBAAyB;AAAA,EAClC,SAAM,oBAAoB;AAAA,EAC5B,aAAa,kBAAkB;AAAA,EAC7B,eAAY,iBAAiB;AAAA,EAC/B,QAAQ,OAAO,MAAM;AAAA,IACnB,YAAY;AAAA,IACZ,aAAa;AAAA,EACf,CAAC;AACH;AAIO,IAAM,yBAAyB,cAAc,sBAAsB;AAAA,EACxE;AACF,CAAC;",
|
|
6
6
|
"names": ["v"]
|
|
7
7
|
}
|