2024-12-26 08:52:25 -05:00
|
|
|
from abc import ABC, abstractmethod
|
|
|
|
from typing import List, Optional, Dict
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
|
|
|
|
|
|
class CompletionResponse(BaseModel):
|
|
|
|
"""Response from completion generation"""
|
2024-12-26 11:34:24 -05:00
|
|
|
|
2024-12-26 08:52:25 -05:00
|
|
|
completion: str
|
|
|
|
usage: Dict[str, int]
|
|
|
|
|
|
|
|
|
|
|
|
class CompletionRequest(BaseModel):
|
|
|
|
"""Request for completion generation"""
|
2024-12-26 11:34:24 -05:00
|
|
|
|
2024-12-26 08:52:25 -05:00
|
|
|
query: str
|
|
|
|
context_chunks: List[str]
|
|
|
|
max_tokens: Optional[int] = 1000
|
|
|
|
temperature: Optional[float] = 0.7
|
|
|
|
|
|
|
|
|
|
|
|
class BaseCompletionModel(ABC):
|
|
|
|
"""Base class for completion models"""
|
|
|
|
|
|
|
|
@abstractmethod
|
|
|
|
async def complete(self, request: CompletionRequest) -> CompletionResponse:
|
|
|
|
"""Generate completion from query and context"""
|
|
|
|
pass
|