-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbase.py
More file actions
98 lines (67 loc) · 1.48 KB
/
Copy pathbase.py
File metadata and controls
98 lines (67 loc) · 1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
"""
RepoForge AI Provider Base Interface
"""
from abc import ABC, abstractmethod
from typing import Optional, AsyncGenerator, Dict, Any
class BaseProvider(ABC):
"""
Standard interface for all AI providers.
"""
def __init__(
self,
api_key: Optional[str] = None,
**kwargs
):
self.api_key = api_key
self.config = kwargs
self.client = None
self._initialize()
@abstractmethod
def _initialize(self):
"""
Setup provider client.
"""
pass
@abstractmethod
def generate(
self,
prompt: str,
system_prompt: str = "",
**kwargs
) -> str:
"""
Generate AI response.
"""
pass
@abstractmethod
async def stream(
self,
prompt: str,
system_prompt: str = "",
**kwargs
) -> AsyncGenerator[str, None]:
"""
Stream AI output.
"""
pass
@abstractmethod
def get_capabilities(
self
) -> Dict[str, Any]:
"""
Provider information.
"""
pass
def available(self) -> bool:
"""
Check provider availability.
"""
return True
@property
@abstractmethod
def name(self) -> str:
pass
@property
@abstractmethod
def models(self) -> list:
pass