import uuid from ielts_be.configs.constants import GPTModels, TemperatureSettings from ielts_be.helpers import ExercisesHelper from ielts_be.services import ILLMService class IdeaMatch: def __init__(self, llm: ILLMService): self._llm = llm async def gen_idea_match_exercise(self, text: str, quantity: int, start_id: int): messages = [ { "role": "system", "content": ( 'You are a helpful assistant designed to output JSON on this format: ' '{"ideas": [ ' '{"idea": "some idea or opinion", "from": "person, institution whose idea or opinion this is"}, ' '{"idea": "some other idea or opinion", "from": "person, institution whose idea or opinion this is"}' ']}' ) }, { "role": "user", "content": ( f'From the text extract {quantity} ideas, theories, opinions and who they are from. ' f'The text: {text}' ) } ] response = await self._llm.prediction( GPTModels.GPT_4_O, messages, ["ideas"], TemperatureSettings.GEN_QUESTION_TEMPERATURE ) ideas = response["ideas"] return { "id": str(uuid.uuid4()), "allowRepetition": False, "options": ExercisesHelper.build_options(ideas), "prompt": "Choose the correct author for the ideas/opinions from the list of authors below.", "sentences": ExercisesHelper.build_sentences(ideas, start_id), "type": "matchSentences" }