@@ -63,12 +63,30 @@ def config_group():
6363 type = str ,
6464 help = "Fallback model for documentation generation"
6565)
66+ @click .option (
67+ "--max-tokens" ,
68+ type = int ,
69+ help = "Maximum tokens for LLM response (default: 32768)"
70+ )
71+ @click .option (
72+ "--max-token-per-module" ,
73+ type = int ,
74+ help = "Maximum tokens per module for clustering (default: 36369)"
75+ )
76+ @click .option (
77+ "--max-token-per-leaf-module" ,
78+ type = int ,
79+ help = "Maximum tokens per leaf module (default: 16000)"
80+ )
6681def config_set (
6782 api_key : Optional [str ],
6883 base_url : Optional [str ],
6984 main_model : Optional [str ],
7085 cluster_model : Optional [str ],
71- fallback_model : Optional [str ]
86+ fallback_model : Optional [str ],
87+ max_tokens : Optional [int ],
88+ max_token_per_module : Optional [int ],
89+ max_token_per_leaf_module : Optional [int ]
7290):
7391 """
7492 Set configuration values for CodeWiki.
@@ -88,10 +106,18 @@ def config_set(
88106 \b
89107 # Update only API key
90108 $ codewiki config set --api-key sk-new-key
109+
110+ \b
111+ # Set max tokens for LLM response
112+ $ codewiki config set --max-tokens 16384
113+
114+ \b
115+ # Set all max token settings
116+ $ codewiki config set --max-tokens 32768 --max-token-per-module 40000 --max-token-per-leaf-module 20000
91117 """
92118 try :
93119 # Check if at least one option is provided
94- if not any ([api_key , base_url , main_model , cluster_model , fallback_model ]):
120+ if not any ([api_key , base_url , main_model , cluster_model , fallback_model , max_tokens , max_token_per_module , max_token_per_leaf_module ]):
95121 click .echo ("No options provided. Use --help for usage information." )
96122 sys .exit (EXIT_CONFIG_ERROR )
97123
@@ -113,6 +139,21 @@ def config_set(
113139 if fallback_model :
114140 validated_data ['fallback_model' ] = validate_model_name (fallback_model )
115141
142+ if max_tokens is not None :
143+ if max_tokens < 1 :
144+ raise ConfigurationError ("max_tokens must be a positive integer" )
145+ validated_data ['max_tokens' ] = max_tokens
146+
147+ if max_token_per_module is not None :
148+ if max_token_per_module < 1 :
149+ raise ConfigurationError ("max_token_per_module must be a positive integer" )
150+ validated_data ['max_token_per_module' ] = max_token_per_module
151+
152+ if max_token_per_leaf_module is not None :
153+ if max_token_per_leaf_module < 1 :
154+ raise ConfigurationError ("max_token_per_leaf_module must be a positive integer" )
155+ validated_data ['max_token_per_leaf_module' ] = max_token_per_leaf_module
156+
116157 # Create config manager and save
117158 manager = ConfigManager ()
118159 manager .load () # Load existing config if present
@@ -122,7 +163,10 @@ def config_set(
122163 base_url = validated_data .get ('base_url' ),
123164 main_model = validated_data .get ('main_model' ),
124165 cluster_model = validated_data .get ('cluster_model' ),
125- fallback_model = validated_data .get ('fallback_model' )
166+ fallback_model = validated_data .get ('fallback_model' ),
167+ max_tokens = validated_data .get ('max_tokens' ),
168+ max_token_per_module = validated_data .get ('max_token_per_module' ),
169+ max_token_per_leaf_module = validated_data .get ('max_token_per_leaf_module' )
126170 )
127171
128172 # Display success messages
@@ -159,6 +203,15 @@ def config_set(
159203 if fallback_model :
160204 click .secho (f"✓ Fallback model: { fallback_model } " , fg = "green" )
161205
206+ if max_tokens :
207+ click .secho (f"✓ Max tokens: { max_tokens } " , fg = "green" )
208+
209+ if max_token_per_module :
210+ click .secho (f"✓ Max token per module: { max_token_per_module } " , fg = "green" )
211+
212+ if max_token_per_leaf_module :
213+ click .secho (f"✓ Max token per leaf module: { max_token_per_leaf_module } " , fg = "green" )
214+
162215 click .echo ("\n " + click .style ("Configuration updated successfully." , fg = "green" , bold = True ))
163216
164217 except ConfigurationError as e :
@@ -215,6 +268,9 @@ def config_show(output_json: bool):
215268 "cluster_model" : config .cluster_model if config else "" ,
216269 "fallback_model" : config .fallback_model if config else "glm-4p5" ,
217270 "default_output" : config .default_output if config else "docs" ,
271+ "max_tokens" : config .max_tokens if config else 32768 ,
272+ "max_token_per_module" : config .max_token_per_module if config else 36369 ,
273+ "max_token_per_leaf_module" : config .max_token_per_leaf_module if config else 16000 ,
218274 "agent_instructions" : config .agent_instructions .to_dict () if config and config .agent_instructions else {},
219275 "config_file" : str (manager .config_file_path )
220276 }
@@ -248,6 +304,13 @@ def config_show(output_json: bool):
248304 if config :
249305 click .echo (f" Default Output: { config .default_output } " )
250306
307+ click .echo ()
308+ click .secho ("Token Settings" , fg = "cyan" , bold = True )
309+ if config :
310+ click .echo (f" Max Tokens: { config .max_tokens } " )
311+ click .echo (f" Max Token/Module: { config .max_token_per_module } " )
312+ click .echo (f" Max Token/Leaf Module: { config .max_token_per_leaf_module } " )
313+
251314 click .echo ()
252315 click .secho ("Agent Instructions" , fg = "cyan" , bold = True )
253316 if config and config .agent_instructions and not config .agent_instructions .is_empty ():
0 commit comments