| from __future__ import annotations |
|
|
| from typing import Optional |
|
|
| try: |
| from transformers import pipeline |
| except Exception: |
| pipeline = None |
|
|
|
|
| class GeneratorEngine: |
| def __init__(self, model_name: str = "google/flan-t5-small"): |
| self.model_name = model_name |
| self.pipe = None |
| if pipeline is not None: |
| try: |
| self.pipe = pipeline("text2text-generation", model=model_name) |
| except Exception: |
| self.pipe = None |
|
|
| def available(self) -> bool: |
| return self.pipe is not None |
|
|
| def generate(self, prompt: str, max_new_tokens: int = 96) -> Optional[str]: |
| if self.pipe is None: |
| return None |
| try: |
| out = self.pipe(prompt, max_new_tokens=max_new_tokens, do_sample=False) |
| if out and isinstance(out, list): |
| return str(out[0].get("generated_text", "")).strip() |
| except Exception: |
| return None |
| return None |
|
|