@@ -52,6 +52,10 @@ fn acl_usize_attr(block: &a3s_acl::Block, keys: &[&str]) -> Option<usize> {
5252 }
5353}
5454
55+ fn acl_u32_attr ( block : & a3s_acl:: Block , keys : & [ & str ] ) -> Option < u32 > {
56+ acl_usize_attr ( block, keys) . map ( |value| value. min ( u32:: MAX as usize ) as u32 )
57+ }
58+
5559fn acl_path_list_attr ( block : & a3s_acl:: Block , keys : & [ & str ] ) -> Option < Vec < PathBuf > > {
5660 let value = acl_attr ( block, keys) ?;
5761 match value {
@@ -276,10 +280,55 @@ impl CodeConfig {
276280 model. release_date = Some ( release_date) ;
277281 }
278282 }
283+ "maxTokens" | "max_tokens" | "outputTokens"
284+ | "output_tokens" => {
285+ if let Some ( output) = acl_u32_attr (
286+ model_block,
287+ & [
288+ "maxTokens" ,
289+ "max_tokens" ,
290+ "outputTokens" ,
291+ "output_tokens" ,
292+ ] ,
293+ ) {
294+ model. limit . output = output;
295+ }
296+ }
297+ "contextTokens" | "context_tokens" | "maxContextTokens"
298+ | "max_context_tokens" => {
299+ if let Some ( context) = acl_u32_attr (
300+ model_block,
301+ & [
302+ "contextTokens" ,
303+ "context_tokens" ,
304+ "maxContextTokens" ,
305+ "max_context_tokens" ,
306+ ] ,
307+ ) {
308+ model. limit . context = context;
309+ }
310+ }
279311 _ => { }
280312 }
281313 }
282314
315+ for limit_block in & model_block. blocks {
316+ if limit_block. name == "limit" {
317+ if let Some ( output) = acl_u32_attr (
318+ limit_block,
319+ & [ "output" , "max_tokens" , "output_tokens" ] ,
320+ ) {
321+ model. limit . output = output;
322+ }
323+ if let Some ( context) = acl_u32_attr (
324+ limit_block,
325+ & [ "context" , "context_tokens" , "max_context_tokens" ] ,
326+ ) {
327+ model. limit . context = context;
328+ }
329+ }
330+ }
331+
283332 provider. models . push ( model) ;
284333 }
285334 }
0 commit comments