async def METHOD_NAME(
    self,
    prompt_strategy: PromptStrategy,
    **kwargs,
) -> LanguageModelResponse:
    model_classification = prompt_strategy.model_classification
    model_configuration = self._configuration.models[model_classification].dict()
    self._logger.debug(f"Using model configuration: {model_configuration}")
    del model_configuration["provider_name"]
    provider = self._providers[model_classification]
    template_kwargs = self._make_template_kwargs_for_strategy(prompt_strategy)
    template_kwargs.update(kwargs)
    prompt = prompt_strategy.build_prompt(**template_kwargs)
    self._logger.debug(f"Using prompt:\n{prompt}\n\n")
    response = await provider.create_language_completion(
        model_prompt=prompt.messages,
        functions=prompt.functions,
        **model_configuration,
        completion_parser=prompt_strategy.parse_response_content,
    )
    return LanguageModelResponse.parse_obj(response.dict())