tussentijdse status voor significante wijzigingen. Bezig aan creatie Dynamic Form in de chat client.

This commit is contained in:
Josako
2025-06-13 14:19:05 +02:00
parent b326c0c6f2
commit f1c60f9574
17 changed files with 1012 additions and 255 deletions

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any
from typing import Dict, Any, Optional
from pydantic import BaseModel, Field, model_validator
from eveai_chat_workers.retrievers.retriever_typing import RetrieverArguments
from common.extensions import cache_manager
@@ -21,6 +21,16 @@ class SpecialistArguments(BaseModel):
"extra": "allow"
}
# Structural optional fields available for all specialists
question: Optional[str] = Field(
None,
description="Optional question directed to the specialist"
)
form_values: Optional[Dict[str, Any]] = Field(
None,
description="Optional form values filled by the user, keyed by field name"
)
@model_validator(mode='after')
def validate_required_arguments(self) -> 'SpecialistArguments':
"""Validate that all required arguments for this specialist type are present"""
@@ -91,6 +101,16 @@ class SpecialistResult(BaseModel):
"extra": "allow"
}
# Structural optional fields available for all specialists
answer: Optional[str] = Field(
None,
description="Optional textual answer from the specialist"
)
form_request: Optional[Dict[str, Any]] = Field(
None,
description="Optional form definition to request user input"
)
@model_validator(mode='after')
def validate_required_results(self) -> 'SpecialistResult':
"""Validate that all required result fields for this specialist type are present"""

View File

@@ -17,6 +17,7 @@ from eveai_chat_workers.specialists.specialist_typing import SpecialistResult, S
from eveai_chat_workers.outputs.traicie.competencies.competencies_v1_1 import Competencies
from eveai_chat_workers.specialists.crewai_base_classes import EveAICrewAICrew, EveAICrewAIFlow, EveAIFlowState
from common.services.interaction.specialist_services import SpecialistServices
from common.extensions import cache_manager
class SpecialistExecutor(CrewAIBaseSpecialistExecutor):
@@ -84,15 +85,18 @@ class SpecialistExecutor(CrewAIBaseSpecialistExecutor):
# results.competencies = flow_state.competencies
# self.create_selection_specialist(arguments, flow_state.competencies)
for i in range(5):
sleep(3)
for i in range(3):
sleep(1)
self.ept.send_update(self.task_id, "Traicie Selection Specialist Processing", {"name": f"Processing Iteration {i}"})
# flow_results = asyncio.run(self.flow.kickoff_async(inputs=arguments.model_dump()))
# flow_state = self.flow.state
# results = RoleDefinitionSpecialistResult.create_for_type(self.type, self.type_version)
contact_form = cache_manager.specialist_forms_config_cache.get_config("PERSONAL_CONTACT_FORM", "1.0")
current_app.logger.debug(f"Contact form: {contact_form}")
results = SpecialistResult.create_for_type(self.type, self.type_version,
answer=f"Antwoord op uw vraag: {arguments.question}")
answer=f"Antwoord op uw vraag: {arguments.question}",
form_request=contact_form)
self.log_tuning(f"Traicie Selection Specialist execution ended", {"Results": results.model_dump()})