Spaces:
Sleeping
Sleeping
| from abc import ABC, abstractmethod | |
| from typing import Any | |
| from llama_index import load_index_from_storage | |
| from llama_index.indices.query.base import BaseQueryEngine | |
| from llama_index.indices.response import ResponseMode | |
| from core.helper import LifecycleHelper | |
| from core.lifecycle import Lifecycle | |
| from llama.service_context import ServiceContextManager | |
| from llama.storage_context import StorageContextManager | |
| class XPipeWikiRobot(ABC): | |
| def ask(self, question: str) -> Any: | |
| pass | |
| class AzureOpenAIXPipeWikiRobot(XPipeWikiRobot): | |
| query_engine: BaseQueryEngine | |
| def __init__(self, query_engine: BaseQueryEngine) -> None: | |
| super().__init__() | |
| self.query_engine = query_engine | |
| def ask(self, question: str) -> Any: | |
| print("question: ", question) | |
| response = self.query_engine.query(question) | |
| print("response type: ", type(response)) | |
| return response.__str__() | |
| class XPipeWikiRobotManager(Lifecycle): | |
| def get_robot(self) -> XPipeWikiRobot: | |
| pass | |
| class AzureXPipeWikiRobotManager(XPipeWikiRobotManager): | |
| service_context_manager: ServiceContextManager | |
| storage_context_manager: StorageContextManager | |
| query_engine: BaseQueryEngine | |
| def __init__( | |
| self, | |
| service_context_manager: ServiceContextManager, | |
| storage_context_manager: StorageContextManager, | |
| ) -> None: | |
| super().__init__() | |
| self.service_context_manager = service_context_manager | |
| self.storage_context_manager = storage_context_manager | |
| def get_robot(self) -> XPipeWikiRobot: | |
| return AzureOpenAIXPipeWikiRobot(self.query_engine) | |
| def do_init(self) -> None: | |
| LifecycleHelper.initialize_if_possible(self.service_context_manager) | |
| LifecycleHelper.initialize_if_possible(self.storage_context_manager) | |
| def do_start(self) -> None: | |
| LifecycleHelper.start_if_possible(self.service_context_manager) | |
| LifecycleHelper.start_if_possible(self.storage_context_manager) | |
| index = load_index_from_storage( | |
| storage_context=self.storage_context_manager.get_storage_context(), | |
| service_context=self.service_context_manager.get_service_context(), | |
| ) | |
| self.query_engine = index.as_query_engine( | |
| service_context=self.service_context_manager.get_service_context(), | |
| response_mode=ResponseMode.TREE_SUMMARIZE, | |
| ) | |
| def do_stop(self) -> None: | |
| LifecycleHelper.stop_if_possible(self.storage_context_manager) | |
| LifecycleHelper.stop_if_possible(self.service_context_manager) | |
| def do_dispose(self) -> None: | |
| LifecycleHelper.dispose_if_possible(self.storage_context_manager) | |
| LifecycleHelper.dispose_if_possible(self.service_context_manager) | |