Runnable 2

[LangChain] LLM Workflow : Chaining 구현

LLM을 이용한 애플리케이션을 만들때, 가장 단순한 구조는 사용자의 입력을 받아 LLM이 질문에 대해 응답을 생성하고, 출력하는 Input - LLM - Output으로 이루어진 체인이다. 작업 요구 사항에 따라 여러 단계의 과정이 추가되어야하거나, 혹은 하나의 LLM에서 나온 응답을 다음 LLM이 받아서 처리하는 연속적인 처리 구조로 만들어야할 수 있다. 이러한 체이닝 구조의 워크플로우를 LangChain을 이용해 구현해보았다. LangChain에서 실행가능한 모든 것들은 Runnable이다. 이 Runnable은 LCEL이라는 LangChain에서 사용하는 도메인 랭귀지를 이용해 선언적으로 사용할 수 있다. | 연산자를 이용해 이전단계의 출력을 다음단계로 보내는 식이다.chain = (prompt |..

[Android] 진짜 쉬운 Main Thread와 Handler

Main Thread (UI Thread) 안드로이드는 UI를 업데이트하는데는 메인 스레드만 사용하는, 싱글 스레드 모델이 적용된다. 따라서 I/O나 복잡한 연산이 있는 경우 다른 스레드에서 작업하는 것이 권장된다. 멀티 스레드로 UI를 업데이트 할 경우 일반적인 멀티 스레드 문제에도 직면하게 되는데 Deadlock이나 Race condition등이 대표적인 예시이고, 이는 모든상황에도 그렇지만 특히나 UI에서 발생하면 안되는 문제이다. TextView의 글자를 업데이트 하는데, 여러 스레드에서 동시에 텍스트뷰에 접근해 값을 바꾸는 경우, 어느 한 값은 결국 버려질 수 밖에없다. 따라서 다른 스레드에서 UI를 업데이트 하려고 할 경우 Handler를 이용해 다음 작업때 “이렇게 업데이트 해주세요!”라고 ..