Spaces:
Paused
Paused
| from typing import List, Union, cast | |
| from litellm.litellm_core_utils.prompt_templates.common_utils import ( | |
| convert_content_list_to_str, | |
| ) | |
| from litellm.types.llms.openai import ( | |
| AllMessageValues, | |
| AllPromptValues, | |
| OpenAITextCompletionUserMessage, | |
| ) | |
| def is_tokens_or_list_of_tokens(value: List): | |
| # Check if it's a list of integers (tokens) | |
| if isinstance(value, list) and all(isinstance(item, int) for item in value): | |
| return True | |
| # Check if it's a list of lists of integers (list of tokens) | |
| if isinstance(value, list) and all( | |
| isinstance(item, list) and all(isinstance(i, int) for i in item) | |
| for item in value | |
| ): | |
| return True | |
| return False | |
| def _transform_prompt( | |
| messages: Union[List[AllMessageValues], List[OpenAITextCompletionUserMessage]], | |
| ) -> AllPromptValues: | |
| if len(messages) == 1: # base case | |
| message_content = messages[0].get("content") | |
| if ( | |
| message_content | |
| and isinstance(message_content, list) | |
| and is_tokens_or_list_of_tokens(message_content) | |
| ): | |
| openai_prompt: AllPromptValues = cast(AllPromptValues, message_content) | |
| else: | |
| openai_prompt = "" | |
| content = convert_content_list_to_str(cast(AllMessageValues, messages[0])) | |
| openai_prompt += content | |
| else: | |
| prompt_str_list: List[str] = [] | |
| for m in messages: | |
| try: # expect list of int/list of list of int to be a 1 message array only. | |
| content = convert_content_list_to_str(cast(AllMessageValues, m)) | |
| prompt_str_list.append(content) | |
| except Exception as e: | |
| raise e | |
| openai_prompt = prompt_str_list | |
| return openai_prompt | |