Spaces:
Sleeping
Sleeping
| from abc import ABC, abstractmethod | |
| from typing import List | |
| from src.llm.data_models.typeddict_data_models import MultiCommentModel | |
| from src.llm.prompts.prompt_head import ( | |
| prompt_head_expert, | |
| prompt_head_jarvis, | |
| prompt_head_novice, | |
| prompt_head_natural, | |
| prompt_head_generic, | |
| ) | |
| from src.llm.prompts.prompt_core import prompt_core | |
| class BaseLLMWrapper(ABC): | |
| def comment( | |
| self, | |
| character: str, | |
| game, | |
| comment_refs: List[int], | |
| move_nums: List, | |
| played_moves: List, | |
| played_by: List, | |
| comments: List, | |
| move_suggestions: List, | |
| pre_eval_scores: List, | |
| post_eval_scores: List, | |
| ) -> MultiCommentModel: | |
| """ | |
| Rewrite the comment in a specific tone or style. | |
| Args: | |
| character (str): The character or style in which to rewrite the comment. | |
| move_nums (List): List of move numbers corresponding to the comments. | |
| comments (List): List of comments to be rewritten. | |
| move_suggestions (List): List of suggested moves, if any. | |
| Returns: | |
| MultiCommentModel: A model containing the rewritten comments. | |
| """ | |
| character = character.lower().strip() | |
| if character == "natural": | |
| prompt_head = prompt_head_natural | |
| elif character == "jarvis": | |
| prompt_head = prompt_head_jarvis | |
| elif character == "novice": | |
| prompt_head = prompt_head_novice | |
| elif character == "expert": | |
| prompt_head = prompt_head_expert | |
| else: | |
| prompt_head = prompt_head_generic.format(character=character) | |
| comments_info = [] | |
| for ( | |
| comment_ref, | |
| move_num, | |
| played_move, | |
| played_by_player, | |
| comment, | |
| suggestion, | |
| pre_eval_score, | |
| post_eval_score, | |
| ) in zip( | |
| comment_refs, | |
| move_nums, | |
| played_moves, | |
| played_by, | |
| comments, | |
| move_suggestions, | |
| pre_eval_scores, | |
| post_eval_scores, | |
| ): | |
| comments_info.append( | |
| { | |
| "comment_ref": comment_ref, | |
| "move_num": move_num, | |
| "move": played_move, | |
| "played_by": played_by_player, | |
| "comment": comment, | |
| "better_variation": suggestion, | |
| "score_before_move": pre_eval_score, | |
| "score_after_move": post_eval_score, | |
| } | |
| ) | |
| prompt = ( | |
| prompt_head + "\n" + prompt_core.format(pgn=game, comments=comments_info) | |
| ) | |
| response = self.generate_response(prompt) | |
| return response | |
| def generate_response(self, prompt: str) -> MultiCommentModel: | |
| """ | |
| Generate a response based on the provided prompt. | |
| Args: | |
| prompt (str): The input prompt to generate a response for. | |
| Returns: | |
| str: The generated response. | |
| """ | |
| pass | |