diff --git a/enterprise/app/models/concerns/agentable.rb b/enterprise/app/models/concerns/agentable.rb index 086deedc1..ed39d719c 100644 --- a/enterprise/app/models/concerns/agentable.rb +++ b/enterprise/app/models/concerns/agentable.rb @@ -10,7 +10,8 @@ module Concerns::Agentable tools: agent_tools, model: agent_model, temperature: temperature.presence&.to_f || DEFAULT_TEMPERATURE, - response_schema: agent_response_schema + response_schema: agent_response_schema, + params: agent_params ) end @@ -52,6 +53,13 @@ module Concerns::Agentable installation_model.presence || route[:model] end + def agent_params + route = Llm::FeatureRouter.resolve(feature: 'assistant', account: account) + return {} if route[:reasoning_effort].blank? + + { reasoning_effort: route[:reasoning_effort] } + end + def installation_model InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_MODEL')&.value end diff --git a/spec/enterprise/models/concerns/agentable_spec.rb b/spec/enterprise/models/concerns/agentable_spec.rb index dd028d309..dbe144c2e 100644 --- a/spec/enterprise/models/concerns/agentable_spec.rb +++ b/spec/enterprise/models/concerns/agentable_spec.rb @@ -50,7 +50,8 @@ RSpec.describe Concerns::Agentable do tools: [], model: Llm::Models.default_model_for('assistant'), temperature: 0.8, - response_schema: Captain::ResponseSchema + response_schema: Captain::ResponseSchema, + params: { reasoning_effort: Llm::Models.reasoning_effort_for('assistant') } ) dummy_instance.agent @@ -194,6 +195,14 @@ RSpec.describe Concerns::Agentable do end end + describe '#agent_params' do + it 'returns reasoning effort for the assistant feature' do + expect(dummy_instance.send(:agent_params)).to eq( + reasoning_effort: Llm::Models.reasoning_effort_for('assistant') + ) + end + end + describe '#agent_response_schema' do it 'returns Captain::ResponseSchema' do expect(dummy_instance.send(:agent_response_schema)).to eq(Captain::ResponseSchema)