diff --git a/eveai_app/views/interaction_forms.py b/eveai_app/views/interaction_forms.py index d31be67..7899917 100644 --- a/eveai_app/views/interaction_forms.py +++ b/eveai_app/views/interaction_forms.py @@ -1,4 +1,4 @@ -from flask import session +from flask import session, current_app from flask_wtf import FlaskForm from wtforms import (StringField, BooleanField, SelectField, TextAreaField) from wtforms.fields.datetime import DateField @@ -95,12 +95,54 @@ class EditEveAIAgentForm(BaseEditComponentForm): llm_model = SelectField('LLM Model', validators=[Optional()]) def __init__(self, *args, **kwargs): + obj = kwargs.get('obj') + agent_type = None + agent_type_version = None + if obj: + agent_type = obj.type + agent_type_version = obj.type_version + current_llm_model = obj.llm_model + super().__init__(*args, **kwargs) - agent_config = cache_manager.agents_config_cache.get_config(self.type, self.type_version) - if agent_config.get('allowed_models', None): - self.llm_model.choices = agent_config.allowed_models + + # Choices instellen + if agent_type and agent_type_version: + current_app.logger.info(f"Loading agent config for {agent_type} {agent_type_version}") + self._agent_config = cache_manager.agents_config_cache.get_config(agent_type, agent_type_version) + allowed_models = self._agent_config.get('allowed_models', None) + full_model_name = self._agent_config.get('full_model_name', 'mistral.mistral-medium-latest') + if allowed_models: + # Converteer lijst van strings naar lijst van tuples (value, label) + self.llm_model.choices = [(model, model) for model in allowed_models] + # Als er een waarde in de database staat, voeg die dan toe als die niet in de lijst zou voorkomen + if current_llm_model and current_llm_model not in allowed_models: + current_app.logger.warning( + f"Current model {current_llm_model} not in allowed models, adding it to choices" + ) + self.llm_model.choices.append((current_llm_model, f"{current_llm_model} (legacy)")) + else: + # Gebruik full_model_name als fallback + self.llm_model.choices = [(full_model_name, full_model_name)] + + # Als er GEEN waarde in de database staat, toon dan de default uit de config + if not current_llm_model: + self.llm_model.data = full_model_name else: - self.llm_model.choices = agent_config.get('full_model_name', 'mistral.mistral-medium-latest') + self.llm_model.choices = [('mistral.mistral-medium-latest', 'mistral.mistral-medium-latest')] + + def populate_obj(self, obj): + """Override populate_obj om de None waarde te behouden indien nodig""" + original_llm_model = obj.llm_model + + # Roep de parent populate_obj aan + super().populate_obj(obj) + + # Als de originele waarde None was EN de nieuwe waarde gelijk is aan de config default, + # herstel dan de None waarde + if original_llm_model is None and self._agent_config: + full_model_name = self._agent_config.get('full_model_name', 'mistral.mistral-medium-latest') + if obj.llm_model == full_model_name: + obj.llm_model = None class EditEveAITaskForm(BaseEditComponentForm):