@@ -2653,3 +2653,130 @@ describe("ProviderTransform.variants", () => {
26532653 } )
26542654 } )
26552655} )
2656+
2657+ // ---------------------------------------------------------------------------
2658+ // Sampling parameter tests: temperature, topP, topK
2659+ // ---------------------------------------------------------------------------
2660+
2661+ // Minimal stub — temperature/topP/topK only inspect model.id
2662+ function samplingModel ( id : string ) : any {
2663+ return {
2664+ id,
2665+ providerID : "test" ,
2666+ api : { id, url : "https://test" , npm : "@ai-sdk/openai-compatible" } ,
2667+ capabilities : { reasoning : false } ,
2668+ limit : { output : 8192 } ,
2669+ release_date : "2025-01-01" ,
2670+ }
2671+ }
2672+
2673+ describe ( "ProviderTransform.temperature" , ( ) => {
2674+ test ( "returns 0.55 for qwen models" , ( ) => {
2675+ expect ( ProviderTransform . temperature ( samplingModel ( "qwen-2.5-72b" ) ) ) . toBe ( 0.55 )
2676+ expect ( ProviderTransform . temperature ( samplingModel ( "qwen-plus" ) ) ) . toBe ( 0.55 )
2677+ } )
2678+
2679+ test ( "returns undefined for claude models" , ( ) => {
2680+ expect ( ProviderTransform . temperature ( samplingModel ( "claude-3-7-sonnet" ) ) ) . toBeUndefined ( )
2681+ expect ( ProviderTransform . temperature ( samplingModel ( "claude-opus-4-5" ) ) ) . toBeUndefined ( )
2682+ } )
2683+
2684+ test ( "returns 1.0 for gemini models" , ( ) => {
2685+ expect ( ProviderTransform . temperature ( samplingModel ( "gemini-2.5-pro" ) ) ) . toBe ( 1.0 )
2686+ expect ( ProviderTransform . temperature ( samplingModel ( "gemini-3.0-flash" ) ) ) . toBe ( 1.0 )
2687+ } )
2688+
2689+ test ( "returns 1.0 for glm-4.6 and glm-4.7 models" , ( ) => {
2690+ expect ( ProviderTransform . temperature ( samplingModel ( "glm-4.6-plus" ) ) ) . toBe ( 1.0 )
2691+ expect ( ProviderTransform . temperature ( samplingModel ( "glm-4.7" ) ) ) . toBe ( 1.0 )
2692+ } )
2693+
2694+ test ( "returns 1.0 for minimax-m2 models" , ( ) => {
2695+ expect ( ProviderTransform . temperature ( samplingModel ( "minimax-m2-01" ) ) ) . toBe ( 1.0 )
2696+ } )
2697+
2698+ test ( "returns 1.0 for kimi-k2-thinking" , ( ) => {
2699+ expect ( ProviderTransform . temperature ( samplingModel ( "kimi-k2-thinking" ) ) ) . toBe ( 1.0 )
2700+ } )
2701+
2702+ test ( "returns 1.0 for kimi-k2.5 (matches 'k2.' pattern)" , ( ) => {
2703+ expect ( ProviderTransform . temperature ( samplingModel ( "kimi-k2.5" ) ) ) . toBe ( 1.0 )
2704+ } )
2705+
2706+ test ( "returns 1.0 for kimi-k2p5 (matches 'k2p' pattern)" , ( ) => {
2707+ expect ( ProviderTransform . temperature ( samplingModel ( "kimi-k2p5" ) ) ) . toBe ( 1.0 )
2708+ } )
2709+
2710+ test ( "returns 1.0 for kimi-k2-5 (matches 'k2-5' pattern)" , ( ) => {
2711+ expect ( ProviderTransform . temperature ( samplingModel ( "kimi-k2-5-latest" ) ) ) . toBe ( 1.0 )
2712+ } )
2713+
2714+ test ( "returns 0.6 for base kimi-k2" , ( ) => {
2715+ expect ( ProviderTransform . temperature ( samplingModel ( "kimi-k2" ) ) ) . toBe ( 0.6 )
2716+ } )
2717+
2718+ test ( "returns undefined for generic/unknown models" , ( ) => {
2719+ expect ( ProviderTransform . temperature ( samplingModel ( "gpt-5.2" ) ) ) . toBeUndefined ( )
2720+ expect ( ProviderTransform . temperature ( samplingModel ( "llama-3.3-70b" ) ) ) . toBeUndefined ( )
2721+ } )
2722+ } )
2723+
2724+ describe ( "ProviderTransform.topP" , ( ) => {
2725+ test ( "returns 1 for qwen models" , ( ) => {
2726+ expect ( ProviderTransform . topP ( samplingModel ( "qwen-2.5-72b" ) ) ) . toBe ( 1 )
2727+ } )
2728+
2729+ test ( "returns 0.95 for minimax-m2" , ( ) => {
2730+ expect ( ProviderTransform . topP ( samplingModel ( "minimax-m2-01" ) ) ) . toBe ( 0.95 )
2731+ } )
2732+
2733+ test ( "returns 0.95 for gemini" , ( ) => {
2734+ expect ( ProviderTransform . topP ( samplingModel ( "gemini-2.5-pro" ) ) ) . toBe ( 0.95 )
2735+ } )
2736+
2737+ test ( "returns 0.95 for kimi-k2.5" , ( ) => {
2738+ expect ( ProviderTransform . topP ( samplingModel ( "kimi-k2.5" ) ) ) . toBe ( 0.95 )
2739+ } )
2740+
2741+ test ( "returns 0.95 for kimi-k2p5" , ( ) => {
2742+ expect ( ProviderTransform . topP ( samplingModel ( "kimi-k2p5" ) ) ) . toBe ( 0.95 )
2743+ } )
2744+
2745+ test ( "returns 0.95 for kimi-k2-5" , ( ) => {
2746+ expect ( ProviderTransform . topP ( samplingModel ( "kimi-k2-5" ) ) ) . toBe ( 0.95 )
2747+ } )
2748+
2749+ test ( "returns undefined for other models" , ( ) => {
2750+ expect ( ProviderTransform . topP ( samplingModel ( "claude-opus-4-5" ) ) ) . toBeUndefined ( )
2751+ expect ( ProviderTransform . topP ( samplingModel ( "gpt-5.2" ) ) ) . toBeUndefined ( )
2752+ } )
2753+ } )
2754+
2755+ describe ( "ProviderTransform.topK" , ( ) => {
2756+ test ( "returns 40 for minimax-m2. (dot pattern)" , ( ) => {
2757+ expect ( ProviderTransform . topK ( samplingModel ( "minimax-m2.5" ) ) ) . toBe ( 40 )
2758+ } )
2759+
2760+ test ( "returns 40 for minimax-m25 (m25 pattern)" , ( ) => {
2761+ expect ( ProviderTransform . topK ( samplingModel ( "minimax-m25" ) ) ) . toBe ( 40 )
2762+ } )
2763+
2764+ test ( "returns 40 for minimax-m21 (m21 pattern)" , ( ) => {
2765+ expect ( ProviderTransform . topK ( samplingModel ( "minimax-m21" ) ) ) . toBe ( 40 )
2766+ } )
2767+
2768+ test ( "returns 20 for base minimax-m2" , ( ) => {
2769+ expect ( ProviderTransform . topK ( samplingModel ( "minimax-m2" ) ) ) . toBe ( 20 )
2770+ expect ( ProviderTransform . topK ( samplingModel ( "minimax-m2-01" ) ) ) . toBe ( 20 )
2771+ } )
2772+
2773+ test ( "returns 64 for gemini" , ( ) => {
2774+ expect ( ProviderTransform . topK ( samplingModel ( "gemini-2.5-pro" ) ) ) . toBe ( 64 )
2775+ } )
2776+
2777+ test ( "returns undefined for other models" , ( ) => {
2778+ expect ( ProviderTransform . topK ( samplingModel ( "claude-opus-4-5" ) ) ) . toBeUndefined ( )
2779+ expect ( ProviderTransform . topK ( samplingModel ( "gpt-5.2" ) ) ) . toBeUndefined ( )
2780+ expect ( ProviderTransform . topK ( samplingModel ( "qwen-2.5-72b" ) ) ) . toBeUndefined ( )
2781+ } )
2782+ } )
0 commit comments