@@ -45,7 +45,8 @@ export class GenkitRunner implements LlmRunner {
45
45
async generateConstrained < T extends z . ZodTypeAny = z . ZodTypeAny > (
46
46
options : LlmConstrainedOutputGenerateRequestOptions < T >
47
47
) : Promise < LlmConstrainedOutputGenerateResponse < T > > {
48
- const result = await this . _genkitRequest ( options ) ;
48
+ const { provider, model } = this . resolveModel ( options . model ) ;
49
+ const result = await this . _genkitRequest ( provider , model , options ) ;
49
50
50
51
return {
51
52
output : result . output ,
@@ -72,10 +73,16 @@ export class GenkitRunner implements LlmRunner {
72
73
} ) ,
73
74
} ;
74
75
75
- const result = await this . _genkitRequest ( requestOptions ) ;
76
+ const { provider, model } = this . resolveModel ( options . model ) ;
77
+ const result = await this . _genkitRequest ( provider , model , requestOptions ) ;
78
+ const files = result . output . outputFiles || [ ] ;
79
+
80
+ if ( ! provider . validateGeneratedFiles ( files ) ) {
81
+ throw new Error ( `Invalid files generated by model "${ options . model } "` ) ;
82
+ }
76
83
77
84
return {
78
- files : result . output . outputFiles || [ ] ,
85
+ files,
79
86
usage : result . usage ,
80
87
reasoning : result . reasoning ,
81
88
toolLogs : this . flushToolLogs ( ) ,
@@ -89,7 +96,8 @@ export class GenkitRunner implements LlmRunner {
89
96
async generateText (
90
97
options : LlmGenerateTextRequestOptions
91
98
) : Promise < LlmGenerateTextResponse > {
92
- const result = await this . _genkitRequest ( options ) ;
99
+ const { provider, model } = this . resolveModel ( options . model ) ;
100
+ const result = await this . _genkitRequest ( provider , model , options ) ;
93
101
94
102
return {
95
103
text : result . text ,
@@ -104,12 +112,12 @@ export class GenkitRunner implements LlmRunner {
104
112
}
105
113
106
114
private async _genkitRequest (
115
+ provider : GenkitModelProvider ,
116
+ model : ModelReference < any > ,
107
117
options :
108
118
| LlmGenerateTextRequestOptions
109
119
| LlmConstrainedOutputGenerateRequestOptions
110
120
) {
111
- const { provider, model } = this . resolveModel ( options . model ) ;
112
-
113
121
return await rateLimitLLMRequest (
114
122
provider ,
115
123
model ,
0 commit comments