fromabcimportABC,abstractmethodclassLCELObject(ABC):def__or__(self,next_object):returnChain(self,next_object)@abstractmethoddefprocess(self,something):passclassChain:def__init__(self,first,second):self.first=firstself.second=seconddefinvoke(self,data):first_result=self.first.process(data)final_result=self.second.process(first_result)returnfinal_resultclassPrompt(LCELObject):def__init__(self,prompt):self.prompt=promptdefprocess(self,data:str):ifdataisnotNone:self.prompt=datareturnself.promptclassLLM(LCELObject):def__init__(self,config):self.config=configself.name=config.get("name")defprocess(self,data):returnself.name+f" AI 응답 : {data}에 대한 AI 응답입니다."
LCELObject : Prompt, LLM, Parser 와 같은 LCEL 표현법의 오브젝트들
Chain : LCEL 오브젝트들의 선후관계를 묶은 체인
LCELObject 들은 모두 process라는 작업 실행 메서드를 가지고 있음
Chain 은 전체 파이프라인을 실행시키는 invoke라는 메서드를 가지고 있음
1
2
3
4
5
6
prompt=Prompt("당신은 사용자를 돕는 상담사입니다.")llm=LLM({"name":"샘플 LLM"})chain=prompt|llmresult=chain.invoke("안녕하세요?")print(result)
Comments