āđāļĄāđāļāļĨāđāļĨāļ°āđāļāļĨāļāļāļāļĢāđāļĄ AI
āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāđāļ Python āļŠāļģāļŦāļĢāļąāļāļ§āļīāļĻāļ§āļāļĢ AI āđāļĨāļ° LLM: āļāļđāđāļĄāļ·āļāļāļāļīāļāļąāļāļī
āđāļāļāļēāļāļ°āļ§āļīāļĻāļ§āļāļĢ AI āļāļēāļĢāļŠāļĢāđāļēāļāđāļāđāļāļāļĩāđāļŠāļ°āļāļēāļ āļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļāļģāļĢāļļāļāļĢāļąāļāļĐāļēāđāļāđāļāļ·āļāđāļāđāļāļŠāļīāđāļāļŠāļģāļāļąāļ āđāļāļĒāđāļāļāļēāļ°āļāļĒāđāļēāļāļĒāļīāđāļāđāļĄāļ·āđāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāļāļĩāđāļāļąāļāļāđāļāļ
āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļ āđāļāđāļāļ§āļīāļāļĩāđāļāđāļāļąāļāļŦāļēāļāļĩāđāļŠāļēāļĄāļēāļĢāļāđāļāđāļāđāļģāļŠāļģāļŦāļĢāļąāļāļāļąāļāļŦāļēāļāļąāđāļ§āđāļāđāļāļāđāļēāļāļāļēāļĢāļāļāļāđāļāļāļāļāļāļāđāđāļ§āļĢāđ āļŠāļģāļŦāļĢāļąāļāļ§āļīāļĻāļ§āļāļĢ AI āđāļĨāļ° LLM āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāļāđāļ§āļĒāļŠāļĢāđāļēāļāļĢāļ°āļāļāļāļĩāđāđāļāđāļāđāļāļĢāđāļ āļĄāļĩāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāļāļĢāļąāļāļāļāļēāļ āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļāļģāļĢāļļāļāļĢāļąāļāļĐāļēāđāļāđ āđāļāļĒāļāļąāļāļāļēāļĢāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļģāļāļēāļāļāļĩāđāļāļąāļāļāđāļāļāđāļāđāļāļĒāđāļēāļāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ āđāļāļāļāļāļ§āļēāļĄāļāļĩāđāļāļ°āļāļāđāļāļ°āļāļģāļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāđāļ Python āđāļāļĒāđāļāđāļāļāļ§āļēāļĄāđāļāļĩāđāļĒāļ§āļāđāļāļāļāļąāļ AI āđāļĨāļ° LLM āļāļĢāđāļāļĄāļāđāļ§āļĒāļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļāļēāļāļāļĢāļīāļāđāļĨāļ°āđāļāđāļ Python
čŪāđāļĢāļēāļĄāļēāļŠāļģāļĢāļ§āļāļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāļāļĩāđāļĄāļĩāļāļĢāļ°āđāļĒāļāļāđāļāļĒāđāļēāļāļĒāļīāđāļāđāļāļāļĢāļīāļāļāļāļāļ AI āđāļĨāļ°āļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļ āđāļāļĒāļĄāļĩāļāļąāļ§āļāļĒāđāļēāļāļāļēāļ Python
āļāļģāđāļĄāļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāļāļķāļāļĄāļĩāļāļ§āļēāļĄāļŠāļģāļāļąāļāļŠāļģāļŦāļĢāļąāļāļ§āļīāļĻāļ§āļāļĢ AI
āļĢāļ°āļāļ AI āļĄāļąāļāļāļ°āđāļāļĩāđāļĒāļ§āļāđāļāļāļāļąāļ:
- āļāļēāļĢāļŠāļĢāđāļēāļāļ§āļąāļāļāļļāļāļĩāđāļāļąāļāļāđāļāļ (āđāļāđāļ āļāļēāļĢāđāļŦāļĨāļāđāļĄāđāļāļĨ āļāļēāļĢāđāļāļĢāļĩāļĒāļĄāļāđāļāļĄāļđāļĨ)
- āļāļēāļĢāļāļąāļāļāļēāļĢāļāļēāļĢāđāļāđāļāļāļāļĢāļ°āļŦāļ§āđāļēāļāļŠāđāļ§āļāļāļĢāļ°āļāļāļ (āđāļāđāļ āļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāđāļĢāļĩāļĒāļĨāđāļāļĄāđ)
- āļāļēāļĢāļāļąāļāļāļēāļĢāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāļāļĢāļąāļāļāļāļēāļ āļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāļāļģāļĢāļļāļāļĢāļąāļāļĐāļē āđāļĨāļ°āļāļ§āļēāļĄāļĒāļ·āļāļŦāļĒāļļāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļāđāļāļāļģāļŦāļāļ
āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāļāđāļ§āļĒāđāļāđāļāļąāļāļŦāļēāđāļŦāļĨāđāļēāļāļĩāđāđāļāļĒāļāļēāļĢāđāļŦāđāđāļāļĢāļāļŠāļĢāđāļēāļāļāļĩāđāļāļąāļāđāļāļāđāļĨāļ°āļĨāļāļāļēāļĢāđāļāđāđāļāđāļāļ ad-hoc āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļāļāļāđāļāđāļāļŠāļēāļĄāļāļĢāļ°āđāļ āļāļŦāļĨāļąāļ:
- āļĢāļđāļāđāļāļāļāļēāļĢāļŠāļĢāđāļēāļ: āļĄāļļāđāļāđāļāđāļāļāļēāļĢāļŠāļĢāđāļēāļāļ§āļąāļāļāļļ (Singleton, Factory, Builder)
- āļĢāļđāļāđāļāļāđāļāļĢāļāļŠāļĢāđāļēāļ: āļāļąāļāļĢāļ°āđāļāļĩāļĒāļāļāļ§āļēāļĄāļŠāļąāļĄāļāļąāļāļāđāļĢāļ°āļŦāļ§āđāļēāļāļ§āļąāļāļāļļ (Adapter, Decorator)
- āļĢāļđāļāđāļāļāļāļĪāļāļīāļāļĢāļĢāļĄ: āļāļąāļāļāļēāļĢāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļĢāļ°āļŦāļ§āđāļēāļāļ§āļąāļāļāļļ (Strategy, Observer)
1. āļĢāļđāļāđāļāļ Singleton
āļĢāļđāļāđāļāļ Singleton āļĢāļąāļāļāļĢāļ°āļāļąāļāļ§āđāļēāļāļĨāļēāļŠāļāļ°āļĄāļĩāđāļāļĩāļĒāļāļāļīāļāļŠāđāļāļāļāđāđāļāļĩāļĒāļ§āđāļĨāļ°āđāļŦāđāļāļļāļāđāļāđāļēāļāļķāļāļĢāļ°āļāļąāļāđāļĨāļāļŠāļģāļŦāļĢāļąāļāļāļīāļāļŠāđāļāļāļāđāļāļąāđāļ āļāļķāđāļāļĄāļĩāļāļļāļāļāđāļēāļāļĒāđāļēāļāļĒāļīāđāļāđāļāļāļēāļĢāļāļģāļāļēāļāļāļāļ AI āđāļāļĒāļāļĩāđāļāļĢāļąāļāļĒāļēāļāļĢāļāļĩāđāđāļāđāļĢāđāļ§āļĄāļāļąāļ āđāļāđāļ āļāļēāļĢāļāļąāđāļāļāđāļē āļāļēāļĢāļāļąāļāļāļēāļĢāļĨāđāļāļ āļŦāļĢāļ·āļāļāļīāļāļŠāđāļāļāļāđāđāļĄāđāļāļĨ āļāđāļāļāļāļąāļāļāļēāļĢāļāļĒāđāļēāļāļŠāļĄāđāļģāđāļŠāļĄāļāđāļāļĒāđāļĄāđāļĄāļĩāļāļēāļĢāļāđāļģāļāđāļāļ
āđāļĄāļ·āđāļāđāļāđ
- āļāļēāļĢāļāļąāļāļāļēāļĢāļāļāļāļāļīāļāļĢāļ°āļāļąāļāđāļĨāļ (āđāļāđāļ āļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđāļāļāļāđāļĄāđāļāļĨ)
- āļāļēāļĢāđāļāđāļāļāļąāļāļāļĢāļąāļāļĒāļēāļāļĢāļĢāļ°āļŦāļ§āđāļēāļāđāļāļĢāļāļŦāļĢāļ·āļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāđāļēāļāđ (āđāļāđāļ āļāļēāļĢāļāļąāļāļāļēāļĢāļŦāļāđāļ§āļĒāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĢāļēāļāļīāļ)
- āļāļēāļĢāļĢāļąāļāļāļĢāļ°āļāļąāļāļāļēāļĢāđāļāđāļēāļāļķāļāļāļĩāđāļŠāļĄāđāļģāđāļŠāļĄāļāđāļāļĒāļąāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļāļļāļĄāļēāļāļŦāļĢāļ·āļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāļēāļāļāđāļāļĄāļđāļĨ
āļāļēāļĢāļāļģāđāļāđāļāđ
āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāļāļģāļĢāļđāļāđāļāļ Singleton āđāļāđāļāđāđāļ Python āđāļāļ·āđāļāļāļąāļāļāļēāļĢāļāļāļāļāļīāļāļŠāļģāļŦāļĢāļąāļāđāļĄāđāļāļĨ AI:
class ModelConfig:
"""āļāļĨāļēāļŠ Singleton āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļĢāļāļāļāļāļīāļāđāļĄāđāļāļĨāļĢāļ°āļāļąāļāđāļĨāļ"""
_instance = None # āļāļąāļ§āđāļāļĢāļāļĨāļēāļŠāļŠāļģāļŦāļĢāļąāļāļāļąāļāđāļāđāļāļāļīāļāļŠāđāļāļāļāđ Singleton
def __new__(cls, *args, **kwargs):
if not cls._instance:
# āļŠāļĢāđāļēāļāļāļīāļāļŠāđāļāļāļāđāđāļŦāļĄāđāļŦāļēāļāđāļĄāđāļĄāļĩāļāļĒāļđāđ
cls._instance = super().__new__(cls)
cls._instance.settings = {} # āđāļĢāļīāđāļĄāļāđāļāļāļāļāļāļīāļāđāļāđāļåå
ļ
return cls._instance
def set(self, key, value):
"""āļāļąāđāļāļāđāļēāļāļāļāļāļīāļ"""
self.settings[key] = value
def get(self, key):
"""āļĢāļąāļāļāđāļēāļāļāļāļāļīāļ"""
return self.settings.get(key)
# āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļāļēāļ
config1 = ModelConfig()
config1.set("model_name", "GPT-4")
config1.set("batch_size", 32)
# āļāļēāļĢāđāļāđāļēāļāļķāļāļāļīāļāļŠāđāļāļāļāđāđāļāļĩāļĒāļ§āļāļąāļ
config2 = ModelConfig()
print(config2.get("model_name")) # āļāļĨāļĨāļąāļāļāđ: GPT-4
print(config2.get("batch_size")) # āļāļĨāļĨāļąāļāļāđ: 32
print(config1 is config2) # āļāļĨāļĨāļąāļāļāđ: True (āļāļąāđāļāļŠāļāļāđāļāđāļāļāļīāļāļŠāđāļāļāļāđāđāļāļĩāļĒāļ§āļāļąāļ)
āļāļģāļāļāļīāļāļēāļĒ
- āđāļĄāļāļāļ __new__: āļĢāļąāļāļāļĢāļ°āļāļąāļāļ§āđāļēāļāļ°āļĄāļĩāļāļīāļāļŠāđāļāļāļāđāđāļāļĩāļĒāļ§āļāļāļāļāļĨāļēāļŠ
- āļŠāļāļēāļāļ°āļāļĩāđāđāļāđāļĢāđāļ§āļĄāļāļąāļ: āļāļąāđāļ config1 āđāļĨāļ° config2 āļŠāđāļāļāđāļēāļāļāļīāļāđāļāļĒāļąāļāļāļīāļāļŠāđāļāļāļāđāđāļāļĩāļĒāļ§āļāļąāļ āļāļģāđāļŦāđāļāļāļāļāļīāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļēāļāļķāļāđāļāđāļāļąāđāļ§āļāļļāļāļāļĩāđ
- āļāļĢāļāļĩāļāļēāļĢāđāļāđāļāļēāļ AI: āđāļāđāļĢāļđāļāđāļāļ Singleton āđāļāļ·āđāļāļāļąāļāļāļēāļĢāļāļēāļĢāļāļąāđāļāļāđāļēāļĢāļ°āļāļąāļāđāļĨāļ āđāļāđāļ āļāļēāļāļāļāļāđāļāļë°ėīí° āļāļēāļĢāļāļąāđāļāļāđāļēāļĨāđāļāļ āļŦāļĢāļ·āļāļāļīāļāļŠāđāļāļāļāđāđāļĄāđāļāļĨ
2. āļĢāļđāļāđāļāļ Factory
āļĢāļđāļāđāļāļ Factory āđāļŦāđāļ§āļīāļāļĩāļāļēāļĢāđāļāļāļēāļĢ å§äŧŧāļāļēāļĢāļŠāļĢāđāļēāļāļ§āļąāļāļāļļāđāļāļĒāļąāļāļāļĨāļēāļŠāļĒāđāļāļĒāļŦāļĢāļ·āļāđāļĄāļāļāļāđāļĢāļāļāļēāļāļāļĩāđāđāļāļāļēāļ°āđāļāļēāļ°āļāļ āđāļāļĢāļ°āļāļ AI āļĢāļđāļāđāļāļāļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļĄāđāļāļĨāļŦāļĢāļ·āļāļāļąāđāļĄāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāļāļāđāļēāļāļāļąāļāļāļēāļĄāļāļĢāļīāļāļ
āđāļĄāļ·āđāļāđāļāđ
- āļāļēāļĢāļŠāļĢāđāļēāļāđāļĄāđāļāļĨāđāļāļāđāļāļāļēāļĄāļīāļāļāļēāļĄāļāļīāļāļāļļāļāļāļāļāļāļđāđāđāļāđāļŦāļĢāļ·āļāļāđāļāļāļģāļŦāļāļāļāļāļāļāļēāļ
- āļāļēāļĢāļāļąāļāļāļēāļĢāļĨāļāļāļīāļāļāļēāļĢāļŠāļĢāđāļēāļāļ§āļąāļāļāļļāļāļĩāđāļāļąāļāļāđāļāļ (āđāļāđāļ āļāļąāđāļĄāļāđāļāļĄāļđāļĨāļŦāļĨāļēāļĒāļāļąāđāļāļāļāļ)
- āļāļēāļĢāđāļĒāļāļāļēāļĢāļŠāļĢāđāļēāļāļāļīāļāļŠāđāļāļāļāđāļāļāļāļāļēāļāļŠāđāļ§āļāļāļĩāđāđāļŦāļĨāļ·āļāļāļāļāļĢāļ°āļāļāđāļāļ·āđāļāļāļĢāļąāļāļāļĢāļļāļāļāļ§āļēāļĄāļĒāļ·āļāļŦāļĒāļļāđāļ
āļāļēāļĢāļāļģāđāļāđāļāđ
āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļĢāļāļāļēāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļĄāđāļāļĨ AI āļŠāļģāļŦāļĢāļąāļāļāļēāļāļāđāļēāļāđ āđāļāđāļ āļāļēāļĢāļāļģāđāļāļāļāļĢāļ°āđāļ āļāļāđāļāļāļ§āļēāļĄ āļāļēāļĢāļŠāļĢāļļāļāļāđāļāļāļ§āļēāļĄ āđāļĨāļ°āļāļēāļĢāđāļāļĨ:
class BaseModel:
"""āļāļĨāļēāļŠāļāļēāļāļŠāļģāļŦāļĢāļąāļāđāļĄāđāļāļĨ AI"""
def predict(self, data):
raise NotImplementedError("āļāļĨāļēāļŠāļĒāđāļāļĒāļāđāļāļāđāļāđāđāļĄāļāļāļ predict")
class TextClassificationModel(BaseModel):
def predict(self, data):
return f"āļāļēāļĢāļāļģāđāļāļāļāļĢāļ°āđāļ āļāļāđāļāļāļ§āļēāļĄ: {data}"
class SummarizationModel(BaseModel):
def predict(self, data):
return f"āļāļēāļĢāļŠāļĢāļļāļāļāđāļāļāļ§āļēāļĄ: {data}"
class TranslationModel(BaseModel):
def predict(self, data):
return f"āļāļēāļĢāđāļāļĨāļāđāļāļāļ§āļēāļĄ: {data}"
class ModelFactory:
"""āļāļĨāļēāļŠāđāļĢāļāļāļēāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļĄāđāļāļĨ AI"""
@staticmethod
def create_model(task_type):
"""āđāļĄāļāļāļāđāļĢāļāļāļēāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļĄāđāļāļĨāļāļēāļĄāļāļĢāļ°āđāļ āļāļāļēāļ"""
task_mapping = {
"classification": TextClassificationModel,
"summarization": SummarizationModel,
"translation": TranslationModel,
}
model_class = task_mapping.get(task_type)
if not model_class:
raise ValueError(f"āļāļĢāļ°āđāļ āļāļāļēāļāđāļĄāđāļĢāļđāđāļāļąāļ: {task_type}")
return model_class()
# āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļāļēāļ
task = "classification"
model = ModelFactory.create_model(task)
print(model.predict("AI āļāļ°āđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāđāļĨāļ!"))
# āļāļĨāļĨāļąāļāļāđ: āļāļēāļĢāļāļģāđāļāļāļāļĢāļ°āđāļ āļāļāđāļāļāļ§āļēāļĄ: AI āļāļ°āđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāđāļĨāļ!
āļāļģāļāļāļīāļāļēāļĒ
- āļāļĨāļēāļŠāļāļēāļ: āļāļĨāļēāļŠ BaseModel āļāļīāļĒāļēāļĄāļāļīāļāđāļāļāļĢāđāđāļāļ (predict) āļāļĩāđāļāļĨāļēāļŠāļĒāđāļāļĒāļāļąāđāļāļŦāļĄāļāļāđāļāļāđāļāđ
- āļĨāļāļāļīāļāđāļĢāļāļāļēāļ: āļāļĨāļēāļŠ ModelFactory āđāļĨāļ·āļāļāđāļĨāļ°āļŠāļĢāđāļēāļāđāļĄāđāļāļĨāļāļēāļĄāļāļĢāļ°āđāļ āļāļāļēāļ
- āļāļēāļĢāļāļĒāļēāļĒ: āļāļēāļĢāđāļāļīāđāļĄāđāļĄāđāļāļĨāđāļŦāļĄāđāļāđāļāļāļāđāļēāļāļāđāļēāļĒ â āđāļāļĩāļĒāļāđāļāđāļāļĨāļēāļŠāļĒāđāļāļĒāđāļŦāļĄāđāđāļĨāļ°āļāļąāļāđāļāļ task_mapping
āļāļĢāļāļĩāļāļēāļĢāđāļāđāļāļēāļ AI
āļĨāļāļāļāļķāļāļāļķāļāļĢāļ°āļāļāļāļĩāđāđāļĨāļ·āļāļāđāļĄāđāļāļĨ LLM āļāļĩāđāđāļāļāļāđāļēāļāļāļąāļ (āđāļāđāļ BERT, GPT, T5) āļāļēāļĄāļāļēāļāļāļĩāđāļāļģ āļĢāļđāļāđāļāļ Factory āļāļģāđāļŦāđāļāđāļēāļĒāļāđāļāļāļēāļĢāļāļĒāļēāļĒāļĢāļ°āļāļāđāļĄāļ·āđāļāļĄāļĩāđāļĄāđāļāļĨāđāļŦāļĄāđāđ
3. āļĢāļđāļāđāļāļ Builder
āļĢāļđāļāđāļāļ Builder āđāļĒāļāļāļēāļĢāļāđāļāļŠāļĢāđāļēāļāļ§āļąāļāļāļļāļāļĩāđāļāļąāļāļāđāļāļāļāļāļāļāļēāļāļāļēāļĢāđāļŠāļāļāļāļĨ āđāļāļĒāļĄāļĩāļāļĢāļ°āđāļĒāļāļāđāđāļĄāļ·āđāļāļāđāļāļāļāļēāļĢāļŠāļĢāđāļēāļāļ§āļąāļāļāļļāļāļĩāđāļāđāļāļāļāđāļēāļāļŦāļĨāļēāļĒāļāļąāđāļāļāļāļāđāļāļāļēāļĢāļŠāļĢāđāļēāļāļŦāļĢāļ·āļāļāļąāđāļāļāđāļē
āđāļĄāļ·āđāļāđāļāđ
- āļāļēāļĢāļŠāļĢāđāļēāļāļāļąāđāļĄāļāđāļāļĄāļđāļĨāļŦāļĨāļēāļĒāļāļąāđāļāļāļāļ
- āļāļēāļĢāļāļąāļāļāļēāļĢāļāļāļāļāļīāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļĨāļāļāļŦāļĢāļ·āļāļāļēāļĢāļāļķāļāđāļĄāđāļāļĨ
- āļāļēāļĢāļŠāļĢāđāļēāļāļ§āļąāļāļāļļāļāļĩāđāļāđāļāļāļĄāļĩāļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđāļŦāļĨāļēāļĒāļāļąāļ§ āđāļāļ·āđāļāļāļ§āļēāļĄāļāđāļēāļāļāđāļēāļĒāđāļĨāļ°āļāļģāļĢāļļāļāļĢāļąāļāļĐāļēāđāļāđāļāļĩ
āļāļēāļĢāļāļģāđāļāđāļāđ
āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļĢāļđāļāđāļāļ Builder āđāļāļ·āđāļāļŠāļĢāđāļēāļāļāļąāđāļĄāļāđāļāļĄāļđāļĨ:
class DataPipeline:
"""āļāļĨāļēāļŠ Builder āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāļāļąāđāļĄāļāđāļāļĄāļđāļĨ"""
def __init__(self):
self.steps = []
def add_step(self, step_function):
"""āđāļāļīāđāļĄāļāļąāđāļāļāļāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨ"""
self.steps.append(step_function)
return self # āļŠāđāļāļāļĨāļąāļ self āđāļāļ·āđāļāđāļāđāđāļĄāļāļāļāđāļāļāđāļāļ·āđāļāļĄāļāđāļ
def run(self, data):
"""āđāļĢāļĩāļĒāļāđāļāđāļāļļāļāļāļąāđāļāļāļāļāđāļāļāļąāđāļĄ"""
for step in self.steps:
data = step(data)
return data
# āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļāļēāļ
pipeline = DataPipeline()
pipeline.add_step(lambda x: x.strip()) # āļāļąāđāļāļāļāļāļāļĩāđ 1: āļĨāļāļāđāļāļāļ§āđāļēāļ
pipeline.add_step(lambda x: x.lower()) # āļāļąāđāļāļāļāļāļāļĩāđ 2: āđāļāļĨāļāđāļāđāļāļāļąāļ§āļāļīāļĄāļāđāđāļĨāđāļ
pipeline.add_step(lambda x: x.replace(".", "")) # āļāļąāđāļāļāļāļāļāļĩāđ 3: āļĨāļāļāļļāļ
processed_data = pipeline.run(" āļŠāļ§āļąāļŠāļāļĩāđāļĨāļ. ")
print(processed_data) # āļāļĨāļĨāļąāļāļāđ: āļŠāļ§āļąāļŠāļāļĩāđāļĨāļ
āļāļģāļāļāļīāļāļēāļĒ
- āđāļĄāļāļāļāđāļāļ·āđāļāļĄāļāđāļ: āđāļĄāļāļāļ add_step āļāđāļ§āļĒāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāļāļąāđāļĄāđāļāđāļāļĒāđāļēāļįīč§āđāļĨāļ°āļāļ°āļāļąāļāļĢāļąāļ
- āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļąāđāļāļāļāļāļāđāļāļāļąāđāļāļāļāļ: āļāļąāđāļĄāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāđāļāļĒāļāļēāļĢāļāđāļēāļāļāđāļāļĄāļđāļĨāļāđāļēāļāļāļļāļāļāļąāđāļāļāļāļ
- āļāļĢāļāļĩāļāļēāļĢāđāļāđāļāļēāļ AI: āđāļāđāļĢāļđāļāđāļāļ Builder āđāļāļ·āđāļāļŠāļĢāđāļēāļāļāļąāđāļĄāļāđāļāļĄāļđāļĨāļāļĩāđāļāļąāļāļāđāļāļāļŦāļĢāļ·āļāļāļēāļĢāđāļāļĢāļĩāļĒāļĄāļāđāļāļĄāļđāļĨāđāļāļāļāļģāļŦāļāļāđāļāļ
4. āļĢāļđāļāđāļāļ Strategy
āļĢāļđāļāđāļāļ Strategy āļāļīāļĒāļēāļĄāļāļļāļāļāļāļāļāļąāļĨāļāļāļĢāļīāļāļķāļĄāļāļĩāđāļŠāļēāļĄāļēāļĢāļāđāļāļĨāļĩāđāļĒāļāđāļāđāđāļĨāļ°āļŦāđāļāļŦāļļāđāļĄāđāļ§āđ āļāļģāđāļŦāđāļŠāļēāļĄāļēāļĢāļāđāļāļĨāļĩāđāļĒāļāļāļĪāļāļīāļāļĢāļĢāļĄāđāļāđāļāļĩāđ runtime āđāļāļĒāđāļĄāđāļāđāļāļāđāļāļĨāļĩāđāļĒāļāđāļāđāļāļāļĩāđāļĄāļĩāļāļĒāļđāđ
āđāļĄāļ·āđāļāđāļāđ
- āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāļĢāļ°āļŦāļ§āđāļēāļāļāļĨāļĒāļļāļāļāđāļāļēāļĢāļāļāļļāļĄāļēāļ (āđāļāđāļ āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļāđāļāļāļāđāļŦāļĢāļ·āļāļŠāļāļĢāļĩāļĄ)
- āļāļēāļĢāļāļģāļāļĨāļĒāļļāļāļāđāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāļāļāđāļēāļāļāļąāļāđāļāđāļāđ
- āļāļēāļĢāđāļĨāļ·āļāļāļāļĨāļĒāļļāļāļāđāļāļēāļĢāļāļąāļāļāļēāļĢāļāļĢāļąāļāļĒāļēāļāļĢāļāļēāļĄāđāļāļĢāļāļŠāļĢāđāļēāļāļāļ·āđāļāļāļēāļāļāļĩāđāļĄāļĩāļāļĒāļđāđ
āļāļēāļĢāļāļģāđāļāđāļāđ
āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļĢāļđāļāđāļāļ Strategy āđāļāļ·āđāļāđāļāđāļāļĨāļĒāļļāļāļāđāļāļēāļĢāļāļāļļāļĄāļēāļāļāļĩāđāđāļāļāļāđāļēāļāļāļąāļāļŠāļģāļŦāļĢāļąāļāđāļĄāđāļāļĨ AI:
class InferenceStrategy:
"""āļāļĨāļēāļŠāļāļēāļāļŠāļģāļŦāļĢāļąāļāļāļĨāļĒāļļāļāļāđāļāļēāļĢāļāļāļļāļĄāļēāļ"""
def infer(self, model, data):
raise NotImplementedError("āļāļĨāļēāļŠāļĒāđāļāļĒāļāđāļāļāđāļāđāđāļĄāļāļāļ infer")
class BatchInference(InferenceStrategy):
"""āļāļĨāļĒāļļāļāļāđāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāđāļāļāļāđ"""
def infer(self, model, data):
print("āļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāđāļāļāļāđ...")
return [model.predict(item) for item in data]
class StreamInference(InferenceStrategy):
"""āļāļĨāļĒāļļāļāļāđāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāļŠāļāļĢāļĩāļĄ"""
def infer(self, model, data):
print("āļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāļŠāļāļĢāļĩāļĄ...")
results = []
for item in data:
results.append(model.predict(item))
return results
class InferenceContext:
"""āļāļĨāļēāļŠāļāļĢāļīāļāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāļāļĨāļĒāļļāļāļāđāļāļēāļĢāļāļāļļāļĄāļēāļ"""
def __init__(self, strategy: InferenceStrategy):
self.strategy = strategy
def set_strategy(self, strategy: InferenceStrategy):
"""āđāļāļĨāļĩāđāļĒāļāļāļĨāļĒāļļāļāļāđāļāļēāļĢāļāļāļļāļĄāļēāļ"""
self.strategy = strategy
def infer(self, model, data):
"""āļĄāļāļāļŦāļĄāļēāļĒāļāļēāļĢāļāļāļļāļĄāļēāļāđāļŦāđāļāļąāļāļāļĨāļĒāļļāļāļāđāļāļĩāđāđāļĨāļ·āļāļ"""
return self.strategy.infer(model, data)
# āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļāļēāļ
model = MockModel()
data = ["āļāļąāļ§āļāļĒāđāļēāļ1", "āļāļąāļ§āļāļĒāđāļēāļ2", "āļāļąāļ§āļāļĒāđāļēāļ3"]
context = InferenceContext(BatchInference())
print(context.infer(model, data))
# āļāļĨāļĨāļąāļāļāđ:
# āļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāđāļāļāļāđ...
# ['āļāļēāļĢāļāļēāļāđāļāļē: āļāļąāļ§āļāļĒāđāļēāļ1', 'āļāļēāļĢāļāļēāļāđāļāļē: āļāļąāļ§āļāļĒāđāļēāļ2', 'āļāļēāļĢāļāļēāļāđāļāļē: āļāļąāļ§āļāļĒāđāļēāļ3']
# āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāđāļāļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāļŠāļāļĢāļĩāļĄ
context.set_strategy(StreamInference())
print(context.infer(model, data))
# āļāļĨāļĨāļąāļāļāđ:
# āļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāļŠāļāļĢāļĩāļĄ...
# ['āļāļēāļĢāļāļēāļāđāļāļē: āļāļąāļ§āļāļĒāđāļēāļ1', 'āļāļēāļĢāļāļēāļāđāļāļē: āļāļąāļ§āļāļĒāđāļēāļ2', 'āļāļēāļĢāļāļēāļāđāļāļē: āļāļąāļ§āļāļĒāđāļēāļ3']
āļāļģāļāļāļīāļāļēāļĒ
- āļāļĨāļēāļŠāļāļĨāļĒāļļāļāļāđāļāļēāļ: InferenceStrategy āļāļīāļĒāļēāļĄāļāļīāļāđāļāļāļĢāđāđāļāļ (infer) āļāļĩāđāļāļĨāļēāļŠāļĒāđāļāļĒāļāļąāđāļāļŦāļĄāļāļāđāļāļāđāļāđ
- āļāļĨāļĒāļļāļāļāđāđāļāļāļēāļ°: BatchInference āđāļĨāļ° StreamInference āđāļāđāļāļāļąāļ§āļāļĒāđāļēāļāļāļāļāļāļĨāļĒāļļāļāļāđāļāļĩāđāļŠāļēāļĄāļēāļĢāļāđāļāđāđāļāđ
- āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļāđāļāļāļēāļĄāļīāļ: āļāļĨāļēāļŠ InferenceContext āļāđāļ§āļĒāđāļŦāđāļŠāļēāļĄāļēāļĢāļāđāļāļĨāļĩāđāļĒāļāļāļĨāļĒāļļāļāļāđāđāļāđāļāļĩāđ runtime
āđāļĄāļ·āđāļāđāļāđ
- āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāļĢāļ°āļŦāļ§āđāļēāļāļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāđāļāļāļāđāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļāļāđāļĨāļāđ āđāļĨāļ°āļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāļŠāļāļĢāļĩāļĄāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāđāļāļēāļāđāļāļāđāļĢāļĩāļĒāļĨāđāļāļĄāđ
- āļāļēāļĢāļāļĢāļąāļāđāļāļāļāļīāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāđāļāļāļēāļĄāļīāļāļāļēāļĄāļāļēāļāļŦāļĢāļ·āļāļĢāļđāļāđāļāļāļāđāļāļĄāļđāļĨ
5. āļĢāļđāļāđāļāļ Observer
āļĢāļđāļāđāļāļ Observer āļāļąāļāļāļąāđāļāļāļ§āļēāļĄāļŠāļąāļĄāļāļąāļāļāđāđāļāļāļŦāļāļķāđāļāļāđāļāļŦāļĨāļēāļĒāļāļąāļ§āļĢāļ°āļŦāļ§āđāļēāļāļ§āļąāļāļāļļ āđāļĄāļ·āđāļāļ§āļąāļāļāļļāļŦāļāļķāđāļ (āļŦāļąāļ§āļāđāļ) āļĄāļĩāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļŠāļāļēāļāļ° āļ§āļąāļāļāļļāļāļĩāđāļāļķāđāļāļāļē (āļāļđāđāļŠāļąāļāđāļāļ) āļāļąāđāļāļŦāļĄāļāļāļ°āļāļđāļāđāļāđāļāđāļāļ·āļāļāđāļāļĒāļāļąāļāđāļāļĄāļąāļāļī
āđāļĄāļ·āđāļāđāļāđ
- āļāļēāļĢāļāļĢāļ§āļāļŠāļāļāđāļĄāļāļĢāļīāļ āđāļāđāļ āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļŦāļĢāļ·āļāļāļ§āļēāļĄāļŠāļđāļāđāļŠāļĩāļĒāļĢāļ°āļŦāļ§āđāļēāļāļāļēāļĢāļāļķāļāđāļĄāđāļāļĨ
- āļāļēāļĢāļāļąāļāđāļāļāđāļāļāđāļĢāļĩāļĒāļĨāđāļāļĄāđāļŠāļģāļŦāļĢāļąāļāđāļāļāļāļāļĢāđāļāļŦāļĢāļ·āļāļĨāđāļāļ
- āļāļēāļĢāļāļąāļāļāļēāļĢāļāļ§āļēāļĄāļŠāļąāļĄāļāļąāļāļāđāļĢāļ°āļŦāļ§āđāļēāļāļŠāđāļ§āļāļāļĢāļ°āļāļāļāđāļāđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđāļāļĩāđāļāļąāļāļāđāļāļ
āļāļēāļĢāļāļģāđāļāđāļāđ
āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļĢāļđāļāđāļāļ Observer āđāļāļ·āđāļāļāļĢāļ§āļāļŠāļāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļāļāđāļĄāđāļāļĨ AI āđāļāđāļāļāđāļĢāļĩāļĒāļĨāđāļāļĄāđ:
class Subject:
"""āļāļĨāļēāļŠāļāļēāļāļŠāļģāļŦāļĢāļąāļāļŦāļąāļ§āļāđāļāļāļĩāđāļāļđāļāļŠāļąāļāđāļāļ"""
def __init__(self):
self._observers = []
def attach(self, observer):
"""āđāļāļāļāļđāđāļŠāļąāļāđāļāļāļāļąāļāļŦāļąāļ§āļāđāļ"""
self._observers.append(observer)
def detach(self, observer):
"""āđāļĒāļāļāļđāđāļŠāļąāļāđāļāļāļāļāļāļāļēāļāļŦāļąāļ§āļāđāļ"""
self._observers.remove(observer)
def notify(self, data):
"""āđāļāđāļāđāļāļ·āļāļāļāļđāđāļŠāļąāļāđāļāļāļāļąāđāļāļŦāļĄāļāđāļāļĩāđāļĒāļ§āļāļąāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļ"""
for observer in self._observers:
observer.update(data)
class ModelMonitor(Subject):
"""āļŦāļąāļ§āļāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāđāļĄāļāļĢāļīāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļāļāđāļĄāđāļāļĨ"""
def update_metrics(self, metric_name, value):
"""āļāļąāļāđāļāļāđāļĄāļāļĢāļīāļāđāļĨāļ°āđāļāđāļāđāļāļ·āļāļāļāļđāđāļŠāļąāļāđāļāļ"""
print(f"āļāļąāļāđāļāļ {metric_name}: {value}")
self.notify({metric_name: value})
class Observer:
"""āļāļĨāļēāļŠāļāļēāļāļŠāļģāļŦāļĢāļąāļāļāļđāđāļŠāļąāļāđāļāļ"""
def update(self, data):
raise NotImplementedError("āļāļĨāļēāļŠāļĒāđāļāļĒāļāđāļāļāđāļāđāđāļĄāļāļāļ update")
class LoggerObserver(Observer):
"""āļāļđāđāļŠāļąāļāđāļāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļķāļāđāļĄāļāļĢāļīāļ"""
def update(self, data):
print(f"āļāļąāļāļāļķāļāđāļĄāļāļĢāļīāļ: {data}")
class AlertObserver(Observer):
"""āļāļđāđāļŠāļąāļāđāļāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāđāļāđāļāļ·āļāļāđāļĄāļ·āđāļāđāļāļīāļāļāļĩāļāļāļģāļāļąāļ"""
def __init__(self, threshold):
self.threshold = threshold
def update(self, data):
for metric, value in data.items():
if value > self.threshold:
print(f"āđāļāđāļāđāļāļ·āļāļ: {metric} āđāļāļīāļāļāļĩāļāļāļģāļāļąāļāļāđāļ§āļĒāļāđāļē {value}")
# āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļāļēāļ
monitor = ModelMonitor()
logger = LoggerObserver()
alert = AlertObserver(threshold=90)
monitor.attach(logger)
monitor.attach(alert)
# āļāļģāļĨāļāļāļāļēāļĢāļāļąāļāđāļāļāđāļĄāļāļĢāļīāļ
monitor.update_metrics("āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģ", 85) # āļāļąāļāļāļķāļāđāļĄāļāļĢāļīāļ
monitor.update_metrics("āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģ", 95) # āļāļąāļāļāļķāļāđāļĨāļ°āđāļāđāļāđāļāļ·āļāļ
āļāļģāļāļāļīāļāļēāļĒ
- āļŦāļąāļ§āļāđāļ: āļāļąāļāļāļēāļĢāļĢāļēāļĒāļāļ·āđāļāļāļđāđāļŠāļąāļāđāļāļāđāļĨāļ°āđāļāđāļāđāļāļ·āļāļāđāļĄāļ·āđāļāļĄāļĩāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļ
- āļāļđāđāļŠāļąāļāđāļāļ: āļāļģāļāļēāļāđāļāļāļēāļ°āđāļĄāļ·āđāļāļāļđāļāđāļāđāļāđāļāļ·āļāļ āđāļāļĒāļĄāļĩāļŦāļāđāļēāļāļĩāđāđāļāđāļ āļāļąāļāļāļķāļāļŦāļĢāļ·āļāđāļāđāļāđāļāļ·āļāļ
- āļāļēāļĢāļāļāļāđāļāļāļāļĩāđāđāļĒāļāļāļāļ: āļāļđāđāļŠāļąāļāđāļāļāđāļĨāļ°āļŦāļąāļ§āļāđāļāļĄāļĩāļāļ§āļēāļĄāļŠāļąāļĄāļāļąāļāļāđāļāļĩāđāļŦāļĨāļ§āļĄ āļāļģāđāļŦāđāļĢāļ°āļāļāļĄāļĩāļāļ§āļēāļĄāļĒāļ·āļāļŦāļĒāļļāđāļāđāļĨāļ°āļāļĒāļēāļĒāđāļāđ
āļ§āļīāļāļĩāļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāđāļāļāļāđāļēāļāļŠāļģāļŦāļĢāļąāļāļ§āļīāļĻāļ§āļāļĢ AI āđāļĨāļ°āļ§āļīāļĻāļ§āļāļĢāđāļāļāļāļąāđāļāđāļāļīāļĄ
āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļ āđāļĄāđāļ§āđāļēāļāļ°āļĄāļĩāļāļēāļĢāđāļāđāļāļąāđāļ§āđāļ āđāļāđāļāđāļĄāļĩāļĨāļąāļāļĐāļāļ°āđāļāļāļēāļ°āđāļĄāļ·āđāļāļāļģāđāļāđāļāđāđāļāļāļēāļāļ§āļīāļĻāļ§āļāļĢāļĢāļĄ AI āđāļĄāļ·āđāļāđāļāļĩāļĒāļāļāļąāļāļāļēāļĢāđāļāđāđāļāļāļēāļāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļāļāļāļāđāđāļ§āļĢāđāđāļāļāļāļąāđāļāđāļāļīāļĄ
1. āļāļēāļĢāļŠāļĢāđāļēāļāļ§āļąāļāļāļļ: āļŠāļāļīāļāļīāļāļąāļāļāļĨāļ§āļąāļ
- āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāđāļāļāļāļąāđāļāđāļāļīāļĄ: āļĢāļđāļāđāļāļāļāļēāļĢāļŠāļĢāđāļēāļāļ§āļąāļāļāļļ āđāļāđāļ Factory āļŦāļĢāļ·āļ Singleton āļĄāļąāļāđāļāđāđāļāļāļēāļĢāļāļąāļāļāļēāļĢāļāļāļāļāļīāļ āļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāļēāļāļāđāļāļĄāļđāļĨ āļŦāļĢāļ·āļāļŠāļāļēāļāļ°āļāļāļāđāļāļŠāļāļąāļ āļāļķāđāļāļĄāļąāļāļāļ°āļāļāļāļĩāđāđāļĨāļ°āļāļģāļŦāļāļāđāļ§āđāļĨāđāļ§āļāļŦāļāđāļē
- āļ§āļīāļĻāļ§āļāļĢāļĢāļĄ AI: āļāļēāļĢāļŠāļĢāđāļēāļāļ§āļąāļāļāļļāđāļ AI āļĄāļąāļāđāļāļĩāđāļĒāļ§āļāđāļāļāļāļąāļ āđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđāļāļĩāđāļĄāļĩāļĨāļąāļāļĐāļāļ°āđāļāļāļēāļĄāļīāļ āđāļāđāļ:
- āļāļēāļĢāļŠāļĢāđāļēāļāđāļĄāđāļāļĨāđāļāļāđāļāļāļēāļĄāļīāļāļāļēāļĄāļāļīāļāļāļļāļāļāļāļāļāļđāđāđāļāđāļŦāļĢāļ·āļāļāđāļāļāļģāļŦāļāļāļāļāļāļāļēāļ
- āļāļēāļĢāđāļŦāļĨāļāļāļāļāļāļīāļāđāļĄāđāļāļĨāļāļĩāđāđāļāļāļāđāļēāļāļāļąāļāļŠāļģāļŦāļĢāļąāļāļāļēāļ āđāļāđāļ āļāļēāļĢāđāļāļĨ āļāļēāļĢāļŠāļĢāļļāļ āļŦāļĢāļ·āļāļāļēāļĢāļāļģāđāļāļāļāļĢāļ°āđāļ āļ
- āļāļēāļĢāļŠāļĢāđāļēāļāļŦāļĨāļēāļĒāļāļąāđāļĄāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāļāļāđāļēāļāļāļąāļāļāļēāļĄāļĨāļąāļāļĐāļāļ°āļāļāļāđāļāļāļāđāļāļĄāļđāļĨ (āđāļāđāļ āļāđāļāļĄāļđāļĨāļāļēāļĢāļēāļāļāļąāļāļāđāļāļĄāļđāļĨāđāļĄāđāļĄāļĩāđāļāļĢāļāļŠāļĢāđāļēāļ)
āļāļąāļ§āļāļĒāđāļēāļ: āđāļ AI āļĢāļđāļāđāļāļ Factory āļāļēāļāļŠāļĢāđāļēāļāđāļĄāđāļāļĨāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļāđāļāļāđāļāļāļēāļĄāļīāļāļāļēāļĄāļāļĢāļ°āđāļ āļāļāļēāļāđāļĨāļ°āļāđāļāļāļģāļāļąāļāļāļāļāļŪāļēāļĢāđāļāđāļ§āļĢāđ āđāļāļāļāļ°āļāļĩāđāđāļāļĢāļ°āļāļāđāļāļāļāļąāđāļāđāļāļīāļĄ āļāļēāļāđāļāđāđāļāļĩāļĒāļāļāļēāļĢāļŠāļĢāđāļēāļāļāļāļĄāđāļāđāļāļāļāđ UI
2. āļāđāļāļāļģāļāļąāļāļāđāļēāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
- āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāđāļāļāļāļąāđāļāđāļāļīāļĄ: āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāļĄāļąāļāļāļđāļāļāļĢāļąāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļāļŠāļāļāļāđāļĨāļ°āļāļĢāļīāļĄāļēāļāļāļēāļĢāļĢāļąāļ-āļŠāđāļāļāđāļāļĄāļđāļĨāđāļāđāļāļāļāļĨāļīāđāļāļāļąāļ āđāļāđāļ āđāļāļīāļĢāđāļāđāļ§āļāļĢāđāđāļ§āđāļ āļāļēāļĢāļŠāļ·āļāļāđāļāļāļēāļāļāđāļāļĄāļđāļĨ āļŦāļĢāļ·āļāļāļēāļĢāđāļŠāļāļāļāļĨ UI
- āļ§āļīāļĻāļ§āļāļĢāļĢāļĄ AI: āļāđāļāļāļģāļŦāļāļāļāđāļēāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļ AI āļāļĒāļēāļĒāđāļāļāļķāļ āļāļ§āļēāļĄāļŦāļāđāļ§āļāļāļāļāļāļēāļĢāļāļāļļāļĄāļēāļ āļĨāļąāļāļĐāļāļ°āļāļēāļĢāđāļāđ GPU/TPU āđāļĨāļ°āļāļēāļĢāđāļāļīāđāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģ āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāļāđāļāļāļĢāļāļāļĢāļąāļ:
- āļāļēāļĢāđāļāļāļāļĨāļĨāļąāļāļāđāļĢāļ°āļŦāļ§āđāļēāļ āđāļāļ·āđāļāļĨāļāļāļēāļĢāļāļģāļāļ§āļāļāđāļģ (āļĢāļđāļāđāļāļ Decorator āļŦāļĢāļ·āļ Proxy)
- āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāļāļąāļĨāļāļāļĢāļīāļāļķāļĄāđāļāļāļēāļĄāļīāļ (āļĢāļđāļāđāļāļ Strategy) āđāļāļ·āđāļāļŠāļĢāđāļēāļāļŠāļĄāļāļļāļĨāļĢāļ°āļŦāļ§āđāļēāļāļāļ§āļēāļĄāļŦāļāđāļ§āļāđāļĨāļ°āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļāļēāļĄāļ āļēāļĢāļ°āļāļēāļāļŦāļĢāļ·āļāļāđāļāļāļģāļāļąāļāđāļāļāđāļĢāļĩāļĒāļĨāđāļāļĄāđ
3. āļĨāļąāļāļĐāļāļ°āļāļĩāđāļāļķāđāļāļāļĒāļđāđāļāļąāļāļāđāļāļĄāļđāļĨ
- āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāđāļāļāļāļąāđāļāđāļāļīāļĄ: āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāļĄāļąāļāļāļģāļāļēāļāļāļąāļāđāļāļĢāļāļŠāļĢāđāļēāļāļāļīāļāļāļļāļ-āđāļāļēāļāđāļāļļāļāļāļĩāđāļāļāļāļĩāđ (āđāļāđāļ āļāļāļĢāđāļĄ āļāļēāļĢāļāļāļāļŠāļāļāļ API)
- āļ§āļīāļĻāļ§āļāļĢāļĢāļĄ AI: āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāļāđāļāļāļāļąāļāļāļēāļĢāļāļąāļ āļāļ§āļēāļĄāđāļāļĢāļāļąāļāļāļāļāļāđāļāļĄāļđāļĨ āļāļąāđāļāđāļāļāđāļēāļāđāļāļĢāļāļŠāļĢāđāļēāļāđāļĨāļ°āļāļāļēāļ āđāļāđāļ:
- āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāđāļāļāļŠāļāļĢāļĩāļĄāļŠāļģāļŦāļĢāļąāļāļĢāļ°āļāļāđāļāļāđāļĢāļĩāļĒāļĨāđāļāļĄāđ
- āļāđāļāļĄāļđāļĨāļŦāļĨāļēāļĒāļĢāļđāļāđāļāļ (āđāļāđāļ āļāđāļāļāļ§āļēāļĄ āļĢāļđāļāļ āļēāļ āļ§āļīāļāļĩāđāļ) āļāļĩāđāļāđāļāļāļāļēāļĢāļāļąāđāļĄāļāļĩāđāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĩāđāļĒāļ·āļāļŦāļĒāļļāđāļ
- āđāļāļāļāđāļāļĄāļđāļĨāļāļāļēāļāđāļŦāļāđāļāļĩāđāļāđāļāļāļāļēāļĢāļāļąāđāļĄāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļĨāļ°āđāļāļīāđāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāđāļāļĄāļđāļĨāļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
4. āļāļēāļĢāļāļāļĨāļāļāđāļāļĩāļĒāļāļāļąāļāļāļ§āļēāļĄāđāļŠāļāļĩāļĒāļĢ
- āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāđāļāļāļāļąāđāļāđāļāļīāļĄ: āđāļāđāļāļāļēāļĢāļŠāļĢāđāļēāļāļĢāļ°āļāļāļāļĩāđāđāļŠāļāļĩāļĒāļĢāđāļĨāļ°āļāļēāļāļāļēāļĢāļāđāđāļāđ āđāļāļĒāļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāđāļāļāļāđāļ§āļĒāđāļŦāđāļĄāļąāđāļāđāļāđāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļĨāļ°āļāļ§āļēāļĄāļāđāļēāđāļāļ·āđāļāļāļ·āļ
- āļ§āļīāļĻāļ§āļāļĢāļĢāļĄ AI: āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļģāļāļēāļāļāļāļ AI āļĄāļąāļāļāļ° āļāļāļĨāļāļ āđāļĨāļ°āđāļāļĩāđāļĒāļ§āļāđāļāļāļāļąāļ:
- āļāļēāļĢāļ§āļāļāđāļģāđāļĄāđāļāļĨāļŦāļĢāļ·āļāđāļāļāļāļīāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāļāļāđāļēāļāļāļąāļ
- āļāļēāļĢāļāļąāļāđāļāļāļŠāđāļ§āļāļāļĢāļ°āļāļāļāļāļāļāļĢāļ°āļāļāđāļāļāļēāļĄāļīāļ (āđāļāđāļ āļāļēāļĢāļāļķāļāđāļĄāđāļāļĨāđāļŦāļĄāđ āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāļāļąāļĨāļāļāļĢāļīāļāļķāļĄ)
- āļāļēāļĢāļāļĒāļēāļĒāđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđāļāļĩāđāļĄāļĩāļāļĒāļđāđāđāļāļĒāđāļĄāđāļāļģāļĨāļēāļĒāļāļēāļĢāļāļģāļāļēāļāļāļāļāļŠāļēāļĒāļāļēāļĢāļāļĨāļīāļ
āļāļąāļ§āļāļĒāđāļēāļ: āđāļ AI āļĢāļđāļāđāļāļ Factory āļāļēāļāđāļĄāđāđāļāļĩāļĒāļāđāļāđāļŠāļĢāđāļēāļāđāļĄāđāļāļĨ āđāļāđāļĒāļąāļāļāđāļāļāļāļąāđāļāļāđāļēāļāđāļģāļŦāļāļąāļāđāļāļāļāļĢāļĩāđāļāļĢāļ āđāļŦāļĨāļāļāļąāļ§āđāļĢāđāļāļāļ§āļēāļĄāđāļĢāđāļ§ āđāļĨāļ°āđāļāļ·āđāļāļĄāļāđāļāļāļąāļāļāđāļāļąāļāļāļķāļāļāļāļĢāļĄ â āļāļąāđāļāļŦāļĄāļāļāļĩāđāļāļģāđāļāļāļēāļĄāļīāļ












