def predict_log_prob(self, context_tokens_ids, response_tokens_ids, condition_id, temperature=1.0):
        """
        :param context_tokens_ids:      shape == (batch_size, context_size, seq_len), int32
        :param response_tokens_ids:     shape == (batch_size, seq_len), int32
        :param condition_id:            shape == (batch_size, 1), int32
        :param temperature:             float32
        :return:
            tokens_probs:               shape == (batch_size, seq_len, vocab_size), float32
        """
        tokens_probs = self.predict_prob(context_tokens_ids, response_tokens_ids, condition_id, temperature)

        tokens_log_probs = np.log(tokens_probs)
        return tokens_log_probs

        :param context_tokens_ids:      shape == (batch_size, context_size, seq_len), int32
        :param response_tokens_ids:     shape == (batch_size, seq_len), int32
        :param condition_id:            shape == (batch_size, 1), int32
        :param temperature:             float32
        :return:
            tokens_probs:               shape == (batch_size, seq_len, vocab_size), float32
        
cakechat/dialog_model/model.py