Spaces:
Sleeping
Sleeping
Chen
commited on
Commit
·
374292c
1
Parent(s):
6c20719
pylint and py format ready
Browse files- app.py +5 -6
- core/lifecycle.py +36 -22
- core/logger_factory.py +1 -1
- core/test_lifecycle.py +17 -17
- github_retriever.py +1 -1
- langchain/manager.py +9 -7
- llama/context.py +20 -14
- llama/index.py +6 -2
- llama/vector_storage.py +5 -5
- pyproject.toml +3 -1
- requirements.txt +5 -1
app.py
CHANGED
@@ -1,5 +1,4 @@
|
|
1 |
import os
|
2 |
-
from dotenv import load_dotenv
|
3 |
from llama_index import SimpleDirectoryReader
|
4 |
from llama_index.node_parser import SimpleNodeParser
|
5 |
from llama_index.data_structs.node import Node, DocumentRelationship
|
@@ -14,14 +13,13 @@ import logging
|
|
14 |
import sys
|
15 |
|
16 |
|
17 |
-
load_dotenv()
|
18 |
logging.basicConfig(
|
19 |
stream=sys.stdout, level=logging.DEBUG
|
20 |
) # logging.DEBUG for more verbose output
|
21 |
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
|
22 |
|
23 |
|
24 |
-
def main():
|
25 |
documents = SimpleDirectoryReader("./data").load_data()
|
26 |
|
27 |
# index = VectorStoreIndex.from_documents(documents)
|
@@ -31,12 +29,13 @@ def main():
|
|
31 |
# index = VectorStoreIndex(nodes)
|
32 |
|
33 |
# define embedding
|
34 |
-
embedding = LangchainEmbedding(OpenAIEmbeddings(chunk_size=1))
|
35 |
# define LLM
|
36 |
llm_predictor = LLMPredictor(
|
37 |
llm=AzureOpenAI(
|
38 |
-
|
39 |
-
|
|
|
40 |
)
|
41 |
)
|
42 |
|
|
|
1 |
import os
|
|
|
2 |
from llama_index import SimpleDirectoryReader
|
3 |
from llama_index.node_parser import SimpleNodeParser
|
4 |
from llama_index.data_structs.node import Node, DocumentRelationship
|
|
|
13 |
import sys
|
14 |
|
15 |
|
|
|
16 |
logging.basicConfig(
|
17 |
stream=sys.stdout, level=logging.DEBUG
|
18 |
) # logging.DEBUG for more verbose output
|
19 |
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
|
20 |
|
21 |
|
22 |
+
def main() -> None:
|
23 |
documents = SimpleDirectoryReader("./data").load_data()
|
24 |
|
25 |
# index = VectorStoreIndex.from_documents(documents)
|
|
|
29 |
# index = VectorStoreIndex(nodes)
|
30 |
|
31 |
# define embedding
|
32 |
+
embedding = LangchainEmbedding(OpenAIEmbeddings(client=None, chunk_size=1))
|
33 |
# define LLM
|
34 |
llm_predictor = LLMPredictor(
|
35 |
llm=AzureOpenAI(
|
36 |
+
client=None,
|
37 |
+
deployment_name="text-davinci-003",
|
38 |
+
model="text-davinci-003",
|
39 |
)
|
40 |
)
|
41 |
|
core/lifecycle.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
import enum
|
2 |
from abc import ABC, abstractmethod
|
3 |
-
from typing import TypeVar
|
4 |
|
5 |
from core import logger_factory
|
6 |
|
@@ -30,19 +30,24 @@ class Disposable(ABC):
|
|
30 |
|
31 |
|
32 |
class LifecycleAware(ABC):
|
33 |
-
def __init__(self, state):
|
|
|
|
|
|
|
|
|
34 |
self.state = state
|
35 |
|
36 |
-
|
|
|
37 |
return self.state
|
38 |
|
39 |
|
40 |
class Lifecycle(Initializable, Startable, Stoppable, Disposable, LifecycleAware, ABC):
|
41 |
-
def __init__(self):
|
42 |
self.logger = logger_factory.get_logger(self.__class__.__name__)
|
43 |
self.lifecycle_state = LifecycleState(lifecycle=self)
|
44 |
|
45 |
-
def initialize(self):
|
46 |
if not self.lifecycle_state.can_initialize(self.lifecycle_state.get_phase()):
|
47 |
self.logger.warning("[{}]cannot initialize".format(self.__class__.__name__))
|
48 |
return
|
@@ -50,7 +55,7 @@ class Lifecycle(Initializable, Startable, Stoppable, Disposable, LifecycleAware,
|
|
50 |
self.do_init()
|
51 |
self.lifecycle_state.set_phase(LifecyclePhase.INITIALIZED)
|
52 |
|
53 |
-
def start(self):
|
54 |
if not self.lifecycle_state.can_start(self.lifecycle_state.get_phase()):
|
55 |
self.logger.warning("[{}]cannot start".format(self.__class__.__name__))
|
56 |
return
|
@@ -58,7 +63,7 @@ class Lifecycle(Initializable, Startable, Stoppable, Disposable, LifecycleAware,
|
|
58 |
self.do_start()
|
59 |
self.lifecycle_state.set_phase(LifecyclePhase.STARTED)
|
60 |
|
61 |
-
def stop(self):
|
62 |
if not self.lifecycle_state.can_stop(self.lifecycle_state.get_phase()):
|
63 |
self.logger.warning("[{}]cannot stop".format(self.__class__.__name__))
|
64 |
return
|
@@ -66,7 +71,7 @@ class Lifecycle(Initializable, Startable, Stoppable, Disposable, LifecycleAware,
|
|
66 |
self.do_stop()
|
67 |
self.lifecycle_state.set_phase(LifecyclePhase.STOPPED)
|
68 |
|
69 |
-
def dispose(self):
|
70 |
if not self.lifecycle_state.can_dispose(self.lifecycle_state.get_phase()):
|
71 |
self.logger.warning("[{}]cannot dispose".format(self.__class__.__name__))
|
72 |
return
|
@@ -75,19 +80,19 @@ class Lifecycle(Initializable, Startable, Stoppable, Disposable, LifecycleAware,
|
|
75 |
self.lifecycle_state.set_phase(LifecyclePhase.DISPOSED)
|
76 |
|
77 |
@abstractmethod
|
78 |
-
def do_init(self):
|
79 |
pass
|
80 |
|
81 |
@abstractmethod
|
82 |
-
def do_start(self):
|
83 |
pass
|
84 |
|
85 |
@abstractmethod
|
86 |
-
def do_stop(self):
|
87 |
pass
|
88 |
|
89 |
@abstractmethod
|
90 |
-
def do_dispose(self):
|
91 |
pass
|
92 |
|
93 |
|
@@ -103,18 +108,18 @@ class LifecyclePhase(enum.Enum):
|
|
103 |
|
104 |
|
105 |
class LifecycleController(ABC):
|
106 |
-
def can_initialize(self, phase: [LifecyclePhase]) -> bool:
|
107 |
return phase is None or phase == LifecyclePhase.DISPOSED
|
108 |
|
109 |
-
def can_start(self, phase: [LifecyclePhase]) -> bool:
|
110 |
return phase is not None and (
|
111 |
phase == LifecyclePhase.INITIALIZED or phase == LifecyclePhase.STOPPED
|
112 |
)
|
113 |
|
114 |
-
def can_stop(self, phase: [LifecyclePhase]) -> bool:
|
115 |
return phase is not None and phase == LifecyclePhase.STARTED
|
116 |
|
117 |
-
def can_dispose(self, phase: [LifecyclePhase]) -> bool:
|
118 |
return phase is not None and (
|
119 |
phase == LifecyclePhase.INITIALIZED or phase == LifecyclePhase.STOPPED
|
120 |
)
|
@@ -124,7 +129,9 @@ LS = TypeVar("LS", bound=Lifecycle)
|
|
124 |
|
125 |
|
126 |
class LifecycleState(LifecycleController, ABC):
|
127 |
-
|
|
|
|
|
128 |
self.phase = None
|
129 |
self.prev_phase = None
|
130 |
self.lifecycle = lifecycle
|
@@ -154,18 +161,25 @@ class LifecycleState(LifecycleController, ABC):
|
|
154 |
def is_disposed(self) -> bool:
|
155 |
return self.phase == LifecyclePhase.DISPOSED
|
156 |
|
157 |
-
def get_phase(self) -> LifecyclePhase:
|
158 |
return self.phase
|
159 |
|
160 |
-
def set_phase(self, phase: [LifecyclePhase]) -> None:
|
161 |
-
prev = "None"
|
|
|
|
|
|
|
|
|
|
|
162 |
self.logger.info(
|
163 |
"[setPhaseName][{}]{} --> {}".format(
|
164 |
-
self.lifecycle.__class__.__name__,
|
|
|
|
|
165 |
)
|
166 |
)
|
167 |
self.phase = phase
|
168 |
|
169 |
-
def rollback(self, err:
|
170 |
self.phase = self.prev_phase
|
171 |
self.prev_phase = None
|
|
|
1 |
import enum
|
2 |
from abc import ABC, abstractmethod
|
3 |
+
from typing import TypeVar, Optional
|
4 |
|
5 |
from core import logger_factory
|
6 |
|
|
|
30 |
|
31 |
|
32 |
class LifecycleAware(ABC):
|
33 |
+
def __init__(self, state: "LifecycleState") -> None:
|
34 |
+
"""
|
35 |
+
Args:
|
36 |
+
state(LifecycleState): lifecycle state
|
37 |
+
"""
|
38 |
self.state = state
|
39 |
|
40 |
+
@property
|
41 |
+
def get_lifecycle_state(self) -> "LifecycleState":
|
42 |
return self.state
|
43 |
|
44 |
|
45 |
class Lifecycle(Initializable, Startable, Stoppable, Disposable, LifecycleAware, ABC):
|
46 |
+
def __init__(self) -> None:
|
47 |
self.logger = logger_factory.get_logger(self.__class__.__name__)
|
48 |
self.lifecycle_state = LifecycleState(lifecycle=self)
|
49 |
|
50 |
+
def initialize(self) -> None:
|
51 |
if not self.lifecycle_state.can_initialize(self.lifecycle_state.get_phase()):
|
52 |
self.logger.warning("[{}]cannot initialize".format(self.__class__.__name__))
|
53 |
return
|
|
|
55 |
self.do_init()
|
56 |
self.lifecycle_state.set_phase(LifecyclePhase.INITIALIZED)
|
57 |
|
58 |
+
def start(self) -> None:
|
59 |
if not self.lifecycle_state.can_start(self.lifecycle_state.get_phase()):
|
60 |
self.logger.warning("[{}]cannot start".format(self.__class__.__name__))
|
61 |
return
|
|
|
63 |
self.do_start()
|
64 |
self.lifecycle_state.set_phase(LifecyclePhase.STARTED)
|
65 |
|
66 |
+
def stop(self) -> None:
|
67 |
if not self.lifecycle_state.can_stop(self.lifecycle_state.get_phase()):
|
68 |
self.logger.warning("[{}]cannot stop".format(self.__class__.__name__))
|
69 |
return
|
|
|
71 |
self.do_stop()
|
72 |
self.lifecycle_state.set_phase(LifecyclePhase.STOPPED)
|
73 |
|
74 |
+
def dispose(self) -> None:
|
75 |
if not self.lifecycle_state.can_dispose(self.lifecycle_state.get_phase()):
|
76 |
self.logger.warning("[{}]cannot dispose".format(self.__class__.__name__))
|
77 |
return
|
|
|
80 |
self.lifecycle_state.set_phase(LifecyclePhase.DISPOSED)
|
81 |
|
82 |
@abstractmethod
|
83 |
+
def do_init(self) -> None:
|
84 |
pass
|
85 |
|
86 |
@abstractmethod
|
87 |
+
def do_start(self) -> None:
|
88 |
pass
|
89 |
|
90 |
@abstractmethod
|
91 |
+
def do_stop(self) -> None:
|
92 |
pass
|
93 |
|
94 |
@abstractmethod
|
95 |
+
def do_dispose(self) -> None:
|
96 |
pass
|
97 |
|
98 |
|
|
|
108 |
|
109 |
|
110 |
class LifecycleController(ABC):
|
111 |
+
def can_initialize(self, phase: Optional[LifecyclePhase]) -> bool:
|
112 |
return phase is None or phase == LifecyclePhase.DISPOSED
|
113 |
|
114 |
+
def can_start(self, phase: Optional[LifecyclePhase]) -> bool:
|
115 |
return phase is not None and (
|
116 |
phase == LifecyclePhase.INITIALIZED or phase == LifecyclePhase.STOPPED
|
117 |
)
|
118 |
|
119 |
+
def can_stop(self, phase: Optional[LifecyclePhase]) -> bool:
|
120 |
return phase is not None and phase == LifecyclePhase.STARTED
|
121 |
|
122 |
+
def can_dispose(self, phase: Optional[LifecyclePhase]) -> bool:
|
123 |
return phase is not None and (
|
124 |
phase == LifecyclePhase.INITIALIZED or phase == LifecyclePhase.STOPPED
|
125 |
)
|
|
|
129 |
|
130 |
|
131 |
class LifecycleState(LifecycleController, ABC):
|
132 |
+
phase: Optional[LifecyclePhase]
|
133 |
+
|
134 |
+
def __init__(self, lifecycle: LS) -> None:
|
135 |
self.phase = None
|
136 |
self.prev_phase = None
|
137 |
self.lifecycle = lifecycle
|
|
|
161 |
def is_disposed(self) -> bool:
|
162 |
return self.phase == LifecyclePhase.DISPOSED
|
163 |
|
164 |
+
def get_phase(self) -> Optional[LifecyclePhase]:
|
165 |
return self.phase
|
166 |
|
167 |
+
def set_phase(self, phase: Optional[LifecyclePhase]) -> None:
|
168 |
+
prev = "None"
|
169 |
+
if self.phase is not None:
|
170 |
+
prev = self.phase.name
|
171 |
+
current = "None"
|
172 |
+
if phase is not None:
|
173 |
+
current = phase.name
|
174 |
self.logger.info(
|
175 |
"[setPhaseName][{}]{} --> {}".format(
|
176 |
+
self.lifecycle.__class__.__name__,
|
177 |
+
prev,
|
178 |
+
current,
|
179 |
)
|
180 |
)
|
181 |
self.phase = phase
|
182 |
|
183 |
+
def rollback(self, err: Exception) -> None:
|
184 |
self.phase = self.prev_phase
|
185 |
self.prev_phase = None
|
core/logger_factory.py
CHANGED
@@ -3,7 +3,7 @@ from logging import handlers
|
|
3 |
from typing import Optional
|
4 |
|
5 |
|
6 |
-
def get_logger(name:
|
7 |
logger = logging.getLogger(name)
|
8 |
if file_name is None:
|
9 |
file_name = "app-default.log"
|
|
|
3 |
from typing import Optional
|
4 |
|
5 |
|
6 |
+
def get_logger(name: str, file_name: Optional[str] = None) -> logging.Logger:
|
7 |
logger = logging.getLogger(name)
|
8 |
if file_name is None:
|
9 |
file_name = "app-default.log"
|
core/test_lifecycle.py
CHANGED
@@ -7,52 +7,52 @@ logging.basicConfig()
|
|
7 |
|
8 |
|
9 |
class SubLifecycle(Lifecycle):
|
10 |
-
def __init__(self):
|
11 |
super().__init__()
|
12 |
self.init_counter = 0
|
13 |
|
14 |
-
def do_init(self):
|
15 |
self.init_counter += 1
|
16 |
|
17 |
-
def do_start(self):
|
18 |
self.init_counter += 1
|
19 |
|
20 |
-
def do_stop(self):
|
21 |
self.init_counter += 1
|
22 |
|
23 |
-
def do_dispose(self):
|
24 |
self.init_counter += 1
|
25 |
|
26 |
|
27 |
class TestLifecycle(TestCase):
|
28 |
-
def test_initialize(self):
|
29 |
ls = SubLifecycle()
|
30 |
ls.initialize()
|
31 |
-
ls.logger.info(ls.lifecycle_state.get_phase()
|
32 |
ls.start()
|
33 |
-
ls.logger.info(ls.lifecycle_state.get_phase()
|
34 |
ls.stop()
|
35 |
-
ls.logger.info(ls.lifecycle_state.get_phase()
|
36 |
ls.dispose()
|
37 |
-
ls.logger.info(ls.lifecycle_state.get_phase()
|
38 |
|
39 |
-
def test_start(self):
|
40 |
self.fail()
|
41 |
|
42 |
-
def test_stop(self):
|
43 |
self.fail()
|
44 |
|
45 |
-
def test_dispose(self):
|
46 |
self.fail()
|
47 |
|
48 |
-
def test_do_init(self):
|
49 |
self.fail()
|
50 |
|
51 |
-
def test_do_start(self):
|
52 |
self.fail()
|
53 |
|
54 |
-
def test_do_stop(self):
|
55 |
self.fail()
|
56 |
|
57 |
-
def test_do_dispose(self):
|
58 |
self.fail()
|
|
|
7 |
|
8 |
|
9 |
class SubLifecycle(Lifecycle):
|
10 |
+
def __init__(self) -> None:
|
11 |
super().__init__()
|
12 |
self.init_counter = 0
|
13 |
|
14 |
+
def do_init(self) -> None:
|
15 |
self.init_counter += 1
|
16 |
|
17 |
+
def do_start(self) -> None:
|
18 |
self.init_counter += 1
|
19 |
|
20 |
+
def do_stop(self) -> None:
|
21 |
self.init_counter += 1
|
22 |
|
23 |
+
def do_dispose(self) -> None:
|
24 |
self.init_counter += 1
|
25 |
|
26 |
|
27 |
class TestLifecycle(TestCase):
|
28 |
+
def test_initialize(self) -> None:
|
29 |
ls = SubLifecycle()
|
30 |
ls.initialize()
|
31 |
+
ls.logger.info(ls.lifecycle_state.get_phase())
|
32 |
ls.start()
|
33 |
+
ls.logger.info(ls.lifecycle_state.get_phase())
|
34 |
ls.stop()
|
35 |
+
ls.logger.info(ls.lifecycle_state.get_phase())
|
36 |
ls.dispose()
|
37 |
+
ls.logger.info(ls.lifecycle_state.get_phase())
|
38 |
|
39 |
+
def test_start(self) -> None:
|
40 |
self.fail()
|
41 |
|
42 |
+
def test_stop(self) -> None:
|
43 |
self.fail()
|
44 |
|
45 |
+
def test_dispose(self) -> None:
|
46 |
self.fail()
|
47 |
|
48 |
+
def test_do_init(self) -> None:
|
49 |
self.fail()
|
50 |
|
51 |
+
def test_do_start(self) -> None:
|
52 |
self.fail()
|
53 |
|
54 |
+
def test_do_stop(self) -> None:
|
55 |
self.fail()
|
56 |
|
57 |
+
def test_do_dispose(self) -> None:
|
58 |
self.fail()
|
github_retriever.py
CHANGED
@@ -10,7 +10,7 @@ import os
|
|
10 |
import pickle
|
11 |
|
12 |
|
13 |
-
def main():
|
14 |
# define embedding
|
15 |
embedding = LangchainEmbedding(OpenAIEmbeddings(chunk_size=1))
|
16 |
# define LLM
|
|
|
10 |
import pickle
|
11 |
|
12 |
|
13 |
+
def main() -> None:
|
14 |
# define embedding
|
15 |
embedding = LangchainEmbedding(OpenAIEmbeddings(chunk_size=1))
|
16 |
# define LLM
|
langchain/manager.py
CHANGED
@@ -8,8 +8,8 @@ from langchain.base_language import BaseLanguageModel
|
|
8 |
from core.lifecycle import Lifecycle
|
9 |
|
10 |
|
11 |
-
class
|
12 |
-
def __init__(self):
|
13 |
super().__init__()
|
14 |
|
15 |
@abstractmethod
|
@@ -21,17 +21,19 @@ class LangChainManager(Lifecycle, ABC):
|
|
21 |
pass
|
22 |
|
23 |
|
24 |
-
class LangChainAzureManager(
|
25 |
-
def __init__(self):
|
26 |
super().__init__()
|
27 |
|
28 |
# Override
|
29 |
def get_embedding(self) -> LCEmbeddings:
|
30 |
-
return OpenAIEmbeddings(chunk_size=1)
|
31 |
|
32 |
# Override
|
33 |
def get_llm(self) -> BaseLanguageModel:
|
34 |
return AzureOpenAI(
|
35 |
-
|
36 |
-
model_name="text-davinci-003",
|
|
|
|
|
37 |
)
|
|
|
8 |
from core.lifecycle import Lifecycle
|
9 |
|
10 |
|
11 |
+
class BaseLangChainManager(Lifecycle, ABC):
|
12 |
+
def __init__(self) -> None:
|
13 |
super().__init__()
|
14 |
|
15 |
@abstractmethod
|
|
|
21 |
pass
|
22 |
|
23 |
|
24 |
+
class LangChainAzureManager(BaseLangChainManager):
|
25 |
+
def __init__(self) -> None:
|
26 |
super().__init__()
|
27 |
|
28 |
# Override
|
29 |
def get_embedding(self) -> LCEmbeddings:
|
30 |
+
return OpenAIEmbeddings(client=None, chunk_size=1)
|
31 |
|
32 |
# Override
|
33 |
def get_llm(self) -> BaseLanguageModel:
|
34 |
return AzureOpenAI(
|
35 |
+
deployment_name="text-davinci-003",
|
36 |
+
# model_name="text-davinci-003",
|
37 |
+
model="text-davinci-003",
|
38 |
+
client=None,
|
39 |
)
|
llama/context.py
CHANGED
@@ -1,23 +1,29 @@
|
|
1 |
from llama_index import ServiceContext, LLMPredictor, LangchainEmbedding
|
2 |
-
|
3 |
from core.lifecycle import Lifecycle
|
4 |
-
from langchain.manager import
|
5 |
|
6 |
|
7 |
class ServiceContextManager(Lifecycle):
|
8 |
-
|
|
|
|
|
9 |
super().__init__()
|
10 |
self.manager = manager
|
11 |
self.service_context = None
|
12 |
|
13 |
def get_service_context(self) -> ServiceContext:
|
14 |
if self.lifecycle_state.is_started():
|
15 |
-
raise
|
16 |
-
"incorrect lifecycle state: {}".format(self.
|
|
|
|
|
|
|
|
|
17 |
)
|
18 |
return self.service_context
|
19 |
|
20 |
-
def do_init(self):
|
21 |
# define embedding
|
22 |
embedding = LangchainEmbedding(self.manager.get_embedding())
|
23 |
# define LLM
|
@@ -27,29 +33,29 @@ class ServiceContextManager(Lifecycle):
|
|
27 |
llm_predictor=llm_predictor, embed_model=embedding
|
28 |
)
|
29 |
|
30 |
-
def do_start(self):
|
31 |
pass
|
32 |
|
33 |
-
def do_stop(self):
|
34 |
pass
|
35 |
|
36 |
-
def do_dispose(self):
|
37 |
pass
|
38 |
|
39 |
|
40 |
class StorageContextManager(Lifecycle):
|
41 |
-
def __init__(self, dataset_path: [str] = "./dataset"):
|
42 |
super().__init__()
|
43 |
self.dataset_path = dataset_path
|
44 |
|
45 |
-
def do_init(self):
|
46 |
pass
|
47 |
|
48 |
-
def do_start(self):
|
49 |
pass
|
50 |
|
51 |
-
def do_stop(self):
|
52 |
pass
|
53 |
|
54 |
-
def do_dispose(self):
|
55 |
pass
|
|
|
1 |
from llama_index import ServiceContext, LLMPredictor, LangchainEmbedding
|
2 |
+
from type import Optional
|
3 |
from core.lifecycle import Lifecycle
|
4 |
+
from langchain.manager import BaseLangChainManager
|
5 |
|
6 |
|
7 |
class ServiceContextManager(Lifecycle):
|
8 |
+
service_context: Optional[ServiceContext]
|
9 |
+
|
10 |
+
def __init__(self, manager: BaseLangChainManager) -> None:
|
11 |
super().__init__()
|
12 |
self.manager = manager
|
13 |
self.service_context = None
|
14 |
|
15 |
def get_service_context(self) -> ServiceContext:
|
16 |
if self.lifecycle_state.is_started():
|
17 |
+
raise KeyError(
|
18 |
+
"incorrect lifecycle state: {}".format(self.lifecycle_state.phase)
|
19 |
+
)
|
20 |
+
if self.service_context is None:
|
21 |
+
raise ValueError(
|
22 |
+
"service context is not ready, check for lifecycle statement"
|
23 |
)
|
24 |
return self.service_context
|
25 |
|
26 |
+
def do_init(self) -> None:
|
27 |
# define embedding
|
28 |
embedding = LangchainEmbedding(self.manager.get_embedding())
|
29 |
# define LLM
|
|
|
33 |
llm_predictor=llm_predictor, embed_model=embedding
|
34 |
)
|
35 |
|
36 |
+
def do_start(self) -> None:
|
37 |
pass
|
38 |
|
39 |
+
def do_stop(self) -> None:
|
40 |
pass
|
41 |
|
42 |
+
def do_dispose(self) -> None:
|
43 |
pass
|
44 |
|
45 |
|
46 |
class StorageContextManager(Lifecycle):
|
47 |
+
def __init__(self, dataset_path: Optional[str] = "./dataset") -> None:
|
48 |
super().__init__()
|
49 |
self.dataset_path = dataset_path
|
50 |
|
51 |
+
def do_init(self) -> None:
|
52 |
pass
|
53 |
|
54 |
+
def do_start(self) -> None:
|
55 |
pass
|
56 |
|
57 |
+
def do_stop(self) -> None:
|
58 |
pass
|
59 |
|
60 |
+
def do_dispose(self) -> None:
|
61 |
pass
|
llama/index.py
CHANGED
@@ -1,14 +1,18 @@
|
|
1 |
from core.lifecycle import Lifecycle
|
2 |
from llama.context import ServiceContextManager
|
|
|
|
|
3 |
|
4 |
|
5 |
class IndexManager(Lifecycle):
|
6 |
-
|
|
|
|
|
7 |
super().__init__()
|
8 |
self.index = None
|
9 |
self.context_manager = context_manager
|
10 |
|
11 |
-
def get_index(self):
|
12 |
if not self.lifecycle_state.is_started():
|
13 |
raise Exception("Lifecycle state is not correct")
|
14 |
return self.index
|
|
|
1 |
from core.lifecycle import Lifecycle
|
2 |
from llama.context import ServiceContextManager
|
3 |
+
from llama_index.indices.vector_store import VectorStoreIndex
|
4 |
+
from typing import Optional
|
5 |
|
6 |
|
7 |
class IndexManager(Lifecycle):
|
8 |
+
index: Optional[VectorStoreIndex]
|
9 |
+
|
10 |
+
def __init__(self, context_manager: ServiceContextManager) -> None:
|
11 |
super().__init__()
|
12 |
self.index = None
|
13 |
self.context_manager = context_manager
|
14 |
|
15 |
+
def get_index(self) -> Optional[VectorStoreIndex]:
|
16 |
if not self.lifecycle_state.is_started():
|
17 |
raise Exception("Lifecycle state is not correct")
|
18 |
return self.index
|
llama/vector_storage.py
CHANGED
@@ -2,17 +2,17 @@ from core.lifecycle import Lifecycle
|
|
2 |
|
3 |
|
4 |
class VectorStorageManager(Lifecycle):
|
5 |
-
def __init__(self):
|
6 |
super().__init__()
|
7 |
|
8 |
-
def do_init(self):
|
9 |
pass
|
10 |
|
11 |
-
def do_start(self):
|
12 |
pass
|
13 |
|
14 |
-
def do_stop(self):
|
15 |
pass
|
16 |
|
17 |
-
def do_dispose(self):
|
18 |
pass
|
|
|
2 |
|
3 |
|
4 |
class VectorStorageManager(Lifecycle):
|
5 |
+
def __init__(self) -> None:
|
6 |
super().__init__()
|
7 |
|
8 |
+
def do_init(self) -> None:
|
9 |
pass
|
10 |
|
11 |
+
def do_start(self) -> None:
|
12 |
pass
|
13 |
|
14 |
+
def do_stop(self) -> None:
|
15 |
pass
|
16 |
|
17 |
+
def do_dispose(self) -> None:
|
18 |
pass
|
pyproject.toml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
[tool.mypy]
|
2 |
ignore_missing_imports = "True"
|
3 |
disallow_untyped_defs = "True"
|
4 |
-
exclude = ["notebooks", "build", "examples"]
|
5 |
|
6 |
[tool.ruff]
|
7 |
exclude = [
|
@@ -14,4 +14,6 @@ exclude = [
|
|
14 |
"notebooks",
|
15 |
"docs",
|
16 |
"dataset",
|
|
|
|
|
17 |
]
|
|
|
1 |
[tool.mypy]
|
2 |
ignore_missing_imports = "True"
|
3 |
disallow_untyped_defs = "True"
|
4 |
+
exclude = ["notebooks", "build", "examples", "docs", "dataset", "app.py", "github_retriever.py"]
|
5 |
|
6 |
[tool.ruff]
|
7 |
exclude = [
|
|
|
14 |
"notebooks",
|
15 |
"docs",
|
16 |
"dataset",
|
17 |
+
"app.py",
|
18 |
+
"github_retriever.py"
|
19 |
]
|
requirements.txt
CHANGED
@@ -1,3 +1,7 @@
|
|
1 |
llama_index
|
2 |
llama_hub
|
3 |
-
langchain
|
|
|
|
|
|
|
|
|
|
1 |
llama_index
|
2 |
llama_hub
|
3 |
+
langchain
|
4 |
+
dotenv
|
5 |
+
ruff
|
6 |
+
black
|
7 |
+
mypy
|