목록전체 글 (181)
Patrick's 데이터 세상
Human-in-the-Loop, 인간 개입 시스템에이전트나 워크플로우에서 도구 호출하는 것을 검토, 편집 및 승인하려면 LangGraph의 인간 개입 기능을 활용하여 워크플로우의 어느 단계에서든 사람의 개입을 가능하게 합니다. 모델 출력에 대해 검증, 수정 또는 추가적인 맥락이 필요한 경우 대규모 언어 모델(LLM) 기반 애플리케이션에서 특히 유용합니다. 👉🏻 주요 기능지속적인 실행 상태: 인터럽트는 그래프 상태를 저장하는 LangGraph의 지속성 계층을 사용하여, 사용자가 재개할 때까지 그래프 실행을 무기한 일시 중지할 수 있습니다. LangGraph가 각 단계 후 그래프 상태를 체크포인트하기 때문에 가능하며, 이를 통해 시스템은 실행 컨텍스트를 유지하고 나중에 워크플로를 재개하여 중단된 지..
Persistence 영속성LangGraph는 체크포인트를 통해 구현된 내장형 영속성 레이어를 제공합니다. 체크포인트를 사용하여 그래프를 컴파일할 때, 체크포인트는 각 Super-steps 마다 그래프 상태의 체크포인트를 저장합니다. 이러한 체크포인트는 스레드에 저장되며, 그래프 실행 후에도 액세스 할 수 있습니다. 스레드는 실행 후에도 그래프의 상태에 액세스 할 수 있도록 허용하기 때문에, 인간 개입(human-in-the-loop), 메모리, 시간 여행, 고장 허용성 등 다양한 강력한 기능이 가능합니다. LangGraph API는 체크포인트를 자동으로 처리하고 체크포인트를 수동으로 구현하거나 구성할 필요가 없고 API는 모든 영속성 인프라를 배경에서 자동으로 처리합니다. 👉🏻 Threads스레드..
LangGraph는 LangChain 기반의 파이썬 오픈소스 프레임워크로, 상태(state) 기반으로 모듈화 하여 LLM 모델을 에이전트로써 제어하는 워크플로우를 쉽게 설계하고 실행할 수 있도록 도와줍니다. 특히, 기존 Naive RAG나 Advanced RAG에서 보였던 순환 구조나 분기 흐름에서의 한계를 보완하는 설계 방식을 말합니다.프로젝트에서는 초기 설계 방식을 Naive RAG인 LangChain을 활용하여 벡터 디비 기반으로 답변할 수 있도록 설계하였습니다. 그러나, Naive RAG는 단방향이므로 usecase의 증가로 분기 흐름의 한계, 정보 접근성의 한계 등의 문제가 있었습니다.최근 Agent 성격의 챗봇은 굉장히 많은 케이스의 상황에 맞는 답변이 필요해졌고, 이 니즈에 부합할 수 있는 ..
오늘은 그동안 Streamlit 관련 포스팅 한 내용을 토대로 간단한 데모페이지를 만들어 보겠습니다.데모페이지는 Streamlit를 통해 인터렉티브하게 질의응답을 받을 수 있는 웹 검색 챗봇을 구현해 보았습니다. 페이징 처리 먼저 파일 위치 구성은 Streamlit 애플리케이션을 실행할 메인 파일과 같은 경로에 config.py와 pages에 페이징 처리할 파일을 두었습니다.home.py은 페이지에 접속하면 기본으로 설정될 메인 페이지이고 demo_page.py는 오늘 알아볼 웹 검색 챗봇 데모 페이지입니다. main.pyimport streamlit as stst.set_page_config( page_title="데모 페이지", page_icon="🤖",)# 페이지 정의p1 = s..
Streamlit에서는 상태 관리와 상호 작용을 위한 여러 기능들을 제공합니다.예를 들면 상태 관리는 로그인, 필터 조건, 폼 입력 같은 경우, 페이지를 다시 로드하거나 돌아가도 값이 살아있는 상태로 지니고 있을 수 있습니다.상호 작용은 용량이 큰 데이터와 머신러닝/딥러닝 모델을 캐시로 저장하여 빠르게 반환할 수 있습니다.상태 관리💾 세션 상태 유지 st.session_stateStreamlit 앱은 버튼 클릭이나 입력 등 모든 상호작용 이후 스크립트를 처음부터 다시 실행합니다.그러나 st.session_state를 사용하면 세션 변수를 저장해 동일 사용자에 대한 값들이 유지됩니다. 예) 폼 입력, 필터 조건, 로그인 세션 등 🔄 콜백 기능 위젯 상태가 변경될 때, 특정 함수를 실행하고 상태를 업데..
앱 페이지에서 여러 페이지를 보여주고 싶을 때 페이징 처리를 진행합니다.Streamlit에서는 멀티페이지(Paging) 처리를 위한 두 가지 주요 방식이 있으며, 상황에 따라 선택할 수 있습니다. 📁 pages 디렉터리 streamlit/├── main.py # 진입점 페이지└── pages/ ├── 1_st.set_page_config.py ├── 2_st.columns.py ├── 3_st.container.py ├── 4_st.tabs.py ├── 5_st.expander.py └── 6_st.empty.py 먼저 가장 간단하고 직관적인 방법입니다.프로젝트 구조를 왼쪽과 같이 main 파일이 있는 디렉터리 위치에 pages로 각 페이지..