from typing import Literal from idreamers.api.calculation.prompts import CalculationPrompts from idreamers.api.calculation.schemas import PilotRequest from idreamers.core.wrappers import openai_wrapper @openai_wrapper(is_json=True, return_='score') async def calculate_scores(data: PilotRequest, type_: Literal["business", "competitive", "supplier", "critical"]): if type_ == "competitive": prompt = CalculationPrompts.competitive elif type_ == "supplier": prompt = CalculationPrompts.supplier elif type_ == "business": prompt = CalculationPrompts.business else: prompt = CalculationPrompts.critical if data.context: data.context = f'\n\n**Context**:\n```\n{data.context}\n```' messages = [ { "role": "system", "content": prompt .replace("{supplier}", data.supplier) .replace("{category}", data.category) .replace("{buying_company}", data.buyingCompany) .replace("{context}", data.context) } ] return messages