Thinking budget for Gemini Pro, error when using 0 or -1

AI-generated summary

RBoy reported a bug where using the gemini-pro-latest model for the Forum Helper persona resulted in a 400 error. The specific error message indicated that “Budget 0 is invalid” and that the model requires thinking mode. sam acknowledged the issue and stated they would investigate. Later, sam asked if the problem persisted, but RBoy responded that they could no longer test it as they had stopped using the Pro model.

I’m trying to use the LLM gemini pro latest model (gemini-pro-latest) for the Forum Helper persona for Posts Triage - and it gives me an error:

DiscourseAi::Completions::Endpoints::Gemini: status: 400 - body: {
  "error": {
    "code": 400,
    "message": "Budget 0 is invalid. This model only works in thinking mode.",
    "status": "INVALID_ARGUMENT"
  }
}


Backtrace

activesupport-8.0.4/lib/active_support/broadcast_logger.rb:218:in `block in dispatch'
activesupport-8.0.4/lib/active_support/broadcast_logger.rb:217:in `map'
activesupport-8.0.4/lib/active_support/broadcast_logger.rb:217:in `dispatch'
activesupport-8.0.4/lib/active_support/broadcast_logger.rb:129:in `error'
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:189:in `block (2 levels) in perform_completion!'
net-http-0.7.0/lib/net/http.rb:2428:in `block in transport_request'
net-http-0.7.0/lib/net/http/response.rb:320:in `reading_body'
net-http-0.7.0/lib/net/http.rb:2425:in `transport_request'
net-http-0.7.0/lib/net/http.rb:2379:in `request'
rack-mini-profiler-4.0.1/lib/patches/net_patches.rb:19:in `block in request_with_mini_profiler'
rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:51:in `step'
rack-mini-profiler-4.0.1/lib/patches/net_patches.rb:18:in `request_with_mini_profiler'
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:187:in `block in perform_completion!'
net-http-0.7.0/lib/net/http.rb:1626:in `start'
net-http-0.7.0/lib/net/http.rb:1064:in `start'
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:140:in `perform_completion!'
/var/www/discourse/plugins/discourse-ai/lib/completions/llm.rb:447:in `generate'
/var/www/discourse/plugins/discourse-ai/lib/configuration/llm_validator.rb:36:in `run_test'
/var/www/discourse/plugins/discourse-ai/app/controllers/discourse_ai/admin/ai_llms_controller.rb:148:in `test'
actionpack-8.0.4/lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'
actionpack-8.0.4/lib/abstract_controller/base.rb:215:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/rendering.rb:193:in `process_action'
actionpack-8.0.4/lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport-8.0.4/lib/active_support/callbacks.rb:120:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:439:in `block in with_resolved_locale'
i18n-1.14.7/lib/i18n.rb:353:in `with_locale'
/var/www/discourse/app/controllers/application_controller.rb:439:in `with_resolved_locale'
activesupport-8.0.4/lib/active_support/callbacks.rb:129:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:1072:in `ensure_dont_cache_page'
activesupport-8.0.4/lib/active_support/callbacks.rb:129:in `block in run_callbacks'
activesupport-8.0.4/lib/active_support/callbacks.rb:140:in `run_callbacks'
actionpack-8.0.4/lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/rescue.rb:27:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/instrumentation.rb:76:in `block in process_action'
activesupport-8.0.4/lib/active_support/notifications.rb:210:in `block in instrument'
activesupport-8.0.4/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport-8.0.4/lib/active_support/notifications.rb:210:in `instrument'
actionpack-8.0.4/lib/action_controller/metal/instrumentation.rb:75:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord-8.0.4/lib/active_record/railties/controller_runtime.rb:39:in `process_action'
actionpack-8.0.4/lib/abstract_controller/base.rb:152:in `process'
actionview-8.0.4/lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:90:in `block in profile_method'
actionpack-8.0.4/lib/action_controller/metal.rb:252:in `dispatch'
actionpack-8.0.4/lib/action_controller/metal.rb:335:in `dispatch'
actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:67:in `dispatch'
actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:50:in `serve'
actionpack-8.0.4/lib/action_dispatch/routing/mapper.rb:32:in `block in <class:Constraints>'
actionpack-8.0.4/lib/action_dispatch/routing/mapper.rb:62:in `serve'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:53:in `block in serve'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:133:in `block in find_routes'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:126:in `each'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:126:in `find_routes'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:34:in `serve'
actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:908:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
/var/www/discourse/lib/middleware/crawler_hooks.rb:11:in `call'
rack-2.2.21/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.21/lib/rack/conditional_get.rb:27:in `call'
rack-2.2.21/lib/rack/head.rb:12:in `call'
actionpack-8.0.4/lib/action_dispatch/http/permissions_policy.rb:38:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:415:in `call'
/var/www/discourse/lib/middleware/csp_script_nonce_injector.rb:12:in `call'
/var/www/discourse/config/initializers/008-rack-cors.rb:14:in `call'
rack-2.2.21/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.21/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/cookies.rb:706:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'
activesupport-8.0.4/lib/active_support/callbacks.rb:100:in `run_callbacks'
actionpack-8.0.4/lib/action_dispatch/middleware/callbacks.rb:30:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster-2.20.1/lib/logster/middleware/reporter.rb:40:in `call'
/var/www/discourse/lib/middleware/default_headers.rb:13:in `call'
railties-8.0.4/lib/rails/rack/logger.rb:41:in `call_app'
railties-8.0.4/lib/rails/rack/logger.rb:29:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/request_id.rb:34:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:23:in `call'
rack-2.2.21/lib/rack/method_override.rb:24:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/executor.rb:16:in `call'
rack-2.2.21/lib/rack/sendfile.rb:127:in `call'
rack-mini-profiler-4.0.1/lib/mini_profiler.rb:191:in `call'
/var/www/discourse/lib/middleware/processing_request.rb:12:in `call'
message_bus-4.4.1/lib/message_bus/rack/middleware.rb:60:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:376:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
railties-8.0.4/lib/rails/engine.rb:535:in `call'
railties-8.0.4/lib/rails/railtie.rb:226:in `public_send'
railties-8.0.4/lib/rails/railtie.rb:226:in `method_missing'
rack-2.2.21/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.21/lib/rack/urlmap.rb:58:in `each'
rack-2.2.21/lib/rack/urlmap.rb:58:in `call'
unicorn-6.1.0/lib/unicorn/http_server.rb:634:in `process_client'
unicorn-6.1.0/lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn-6.1.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn-6.1.0/lib/unicorn/http_server.rb:143:in `start'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'

I was reading that one can set the budget to -1 to tell the model to use an Auto thinking budget but Discourse doesn’t support -1 as an option; if I set it to -1, discourse appears to be sending 0. The input only support numbers so I can’t try options like auto either.

Also, if I can’t use 0 or -1, what would be a good budget to set in the LLM parameters?

EDIT: Also tried with gemini-2.5-pro and same problem

1 Like

Thanks, we will have a look at this!

Is this still an issue for you?

I am unable to test this Sam, I don’t use the Pro model anymore.

1 Like