genai-on-vertex-ai/gemini/needle_in_a_haystack/needlehaystack/providers/model.py (11 lines of code) (raw):

from abc import ABC, abstractmethod from typing import Optional class ModelProvider(ABC): @abstractmethod async def evaluate_model(self, prompt: str) -> str: ... @abstractmethod def generate_prompt(self, context: str, retrieval_question: str) -> str | list[dict[str, str]]: ... @abstractmethod def encode_text_to_tokens(self, text: str) -> list[int]: ... @abstractmethod def decode_tokens(self, tokens: list[int], context_length: Optional[int] = None) -> str: ...