@@ -155,17 +155,26 @@ func (g *geminiClient) finishReason(reason genai.FinishReason) message.FinishRea
155155func (g *geminiClient) send(ctx context.Context, messages []message.Message, tools []tools.BaseTool) (*ProviderResponse, error) {
156156 // Convert messages
157157 geminiMessages := g.convertMessages(messages)
158−
158+ model := g.providerOptions.model(g.providerOptions.modelType)
159159 cfg := config.Get()
160160 if cfg.Options.Debug {
161161 jsonData, _ := json.Marshal(geminiMessages)
162162 logging.Debug("Prepared messages", "messages", string(jsonData))
163163 }
164164
165+ modelConfig := cfg.Models.Large
166+ if g.providerOptions.modelType == config.SmallModel {
167+ modelConfig = cfg.Models.Small
168+ }
169+
170+ maxTokens := model.DefaultMaxTokens
171+ if modelConfig.MaxTokens > 0 {
172+ maxTokens = modelConfig.MaxTokens
173+ }
165174 history := geminiMessages[:len(geminiMessages)-1] // All but last message
166175 lastMsg := geminiMessages[len(geminiMessages)-1]
167176 config := &genai.GenerateContentConfig{
168− MaxOutputTokens: int32(g.providerOptions.maxTokens),
177+ MaxOutputTokens: int32(maxTokens),
169178 SystemInstruction: &genai.Content{
170179 Parts: []*genai.Part{{Text: g.providerOptions.systemMessage}},
171180 },
@@ -173,7 +182,6 @@ func (g *geminiClient) send(ctx context.Context, messages []message.Message, too
173182 if len(tools) > 0 {
174183 config.Tools = g.convertTools(tools)
175184 }
176− model := g.providerOptions.model(g.providerOptions.modelType)
177185 chat, _ := g.client.Chats.Create(ctx, model.ID, config, history)
178186
179187 attempts := 0
@@ -245,16 +253,25 @@ func (g *geminiClient) stream(ctx context.Context, messages []message.Message, t
245253 // Convert messages
246254 geminiMessages := g.convertMessages(messages)
247255
256+ model := g.providerOptions.model(g.providerOptions.modelType)
248257 cfg := config.Get()
249258 if cfg.Options.Debug {
250259 jsonData, _ := json.Marshal(geminiMessages)
251260 logging.Debug("Prepared messages", "messages", string(jsonData))
252261 }
253262
263+ modelConfig := cfg.Models.Large
264+ if g.providerOptions.modelType == config.SmallModel {
265+ modelConfig = cfg.Models.Small
266+ }
267+ maxTokens := model.DefaultMaxTokens
268+ if modelConfig.MaxTokens > 0 {
269+ maxTokens = modelConfig.MaxTokens
270+ }
254271 history := geminiMessages[:len(geminiMessages)-1] // All but last message
255272 lastMsg := geminiMessages[len(geminiMessages)-1]
256273 config := &genai.GenerateContentConfig{
257− MaxOutputTokens: int32(g.providerOptions.maxTokens),
274+ MaxOutputTokens: int32(maxTokens),
258275 SystemInstruction: &genai.Content{
259276 Parts: []*genai.Part{{Text: g.providerOptions.systemMessage}},
260277 },
@@ -262,7 +279,6 @@ func (g *geminiClient) stream(ctx context.Context, messages []message.Message, t
262279 if len(tools) > 0 {
263280 config.Tools = g.convertTools(tools)
264281 }
265− model := g.providerOptions.model(g.providerOptions.modelType)
266282 chat, _ := g.client.Chats.Create(ctx, model.ID, config, history)
267283
268284 attempts := 0