Engines API Reference

Base Engine

BaseEngine

Abstract base class for all engines.

from promptkit.engines.base import BaseEngine

class BaseEngine(ABC):
    def __init__(self, model: str = "default"):
        self.model = model

    @abstractmethod
    def generate(self, prompt: str) -> str:
        pass

    async def generate_async(self, prompt: str) -> str:
        return self.generate(prompt)

    def get_model_info(self) -> dict[str, Any]:
        return {"engine": self.__class__.__name__, "model": self.model}

    def estimate_cost(self, input_tokens: int, output_tokens: int) -> Optional[float]:
        return None

EngineError

Exception for engine errors.

from promptkit.engines.base import EngineError

raise EngineError("API request failed")

OpenAI Engine

OpenAIEngine

from promptkit import OpenAIEngine

engine = OpenAIEngine(
    api_key="sk-...",
    model="gpt-4o-mini",
    temperature=0.7,
    max_tokens=1000,
    base_url="https://api.openai.com/v1"
)

Parameters

  • api_key: OpenAI API key

  • model: Model name (default: “gpt-4o-mini”)

  • temperature: Sampling temperature 0.0-2.0 (default: 0.7)

  • max_tokens: Max tokens to generate (optional)

  • base_url: API base URL (for compatible APIs)

Methods

generate(prompt: str) -> str

Generate a response synchronously.

generate_async(prompt: str) -> str

Generate a response asynchronously.

estimate_cost(input_tokens: int, output_tokens: int) -> Optional[float]

Estimate cost in USD.

cost = engine.estimate_cost(1000, 500)

Ollama Engine

OllamaEngine

from promptkit.engines import OllamaEngine

engine = OllamaEngine(
    model="llama2",
    base_url="http://localhost:11434",
    temperature=0.7,
    max_tokens=1000
)

Parameters

  • model: Ollama model name (default: “llama2”)

  • base_url: Ollama API URL (default: “http://localhost:11434”)

  • temperature: Sampling temperature 0.0-1.0 (default: 0.7)

  • max_tokens: Max tokens to generate (optional)

Methods

Same as OpenAIEngine.

Creating Custom Engines

from promptkit.engines.base import BaseEngine, EngineError

class MyEngine(BaseEngine):
    def __init__(self, api_key: str, model: str = "default"):
        super().__init__(model)
        self.api_key = api_key

    def generate(self, prompt: str) -> str:
        # Implement API call
        return "response"