@@ -37,6 +37,60 @@ class AI{
37
37
this . APIOrigin = APIOrigin ;
38
38
}
39
39
40
+ /**
41
+ * Returns a list of available AI models.
42
+ * @param {string } provider - The provider to filter the models by.
43
+ * @returns {Object } Object containing lists of available models by provider
44
+ */
45
+ async listModels ( provider ) {
46
+ const modelsByProvider = { } ;
47
+
48
+ const modelsList = await puter . drivers . call ( 'puter-chat-completion' , 'ai-chat' , 'models' ) ;
49
+
50
+ if ( modelsList && modelsList . result && Array . isArray ( modelsList . result ) ) {
51
+ modelsList . result . forEach ( ( item ) => {
52
+ if ( item . provider && item . id ) {
53
+ if ( provider ) {
54
+ if ( item . provider === provider ) { // Only add models for the specified provider
55
+ if ( ! modelsByProvider [ item . provider ] ) {
56
+ modelsByProvider [ item . provider ] = [ ] ;
57
+ }
58
+ modelsByProvider [ item . provider ] . push ( item . id ) ;
59
+ }
60
+ } else { // Add all models
61
+ if ( ! modelsByProvider [ item . provider ] ) {
62
+ modelsByProvider [ item . provider ] = [ ] ;
63
+ }
64
+ modelsByProvider [ item . provider ] . push ( item . id ) ;
65
+ }
66
+ }
67
+ } ) ;
68
+ }
69
+
70
+ return modelsByProvider ;
71
+ }
72
+
73
+ /**
74
+ * Returns a list of all available AI providers
75
+ * @returns {Array } Array containing providers
76
+ */
77
+ async listModelProviders ( ) {
78
+ let providers = [ ] ;
79
+ const models = await puter . drivers . call ( 'puter-chat-completion' , 'ai-chat' , 'models' ) ;
80
+
81
+ if ( models && models . result && Array . isArray ( models . result ) ) {
82
+ providers = new Set ( ) ; // Use a Set to store unique providers
83
+
84
+ models . result . forEach ( ( item ) => {
85
+ if ( item . provider ) {
86
+ providers . add ( item . provider ) ;
87
+ }
88
+ } ) ;
89
+ providers = Array . from ( providers ) ; // Convert Set to an array
90
+ }
91
+ return providers ;
92
+ }
93
+
40
94
img2txt = async ( ...args ) => {
41
95
let MAX_INPUT_SIZE = 10 * 1024 * 1024 ;
42
96
let options = { } ;
0 commit comments