1. RAG를 LangGraph로 구현하기- 간단한 RAG- Vector DB를 tool로 사용 1) 간단한 RAG- State 정의class State(TypedDict): messages: Annotated[list, add_messages] - Vector DB 정의단순 프롬프트만 응답형태from langchain.document_loaders import CSVLoader# CSV 파일 로드file_name = "sample.csv"csv_loader = CSVLoader(file_path= path + file_name)documents_csv = csv_loader.load()# 벡터 DB 정의embedding = OpenAIEmbeddings(model="")vectorstore = C..

Memory - AI Agent가 이전 상태나 대화기록을 유지하고 재사용할 수 있도록 하는 기능- 유저와 AI간의 대화를 저장하고 지속적인 맥락을 유지- 단기기억과 장기기억 정보를 제어하기 위한 로직을 넣을 수 있음. 메모리의 종류 2가지- Short-term memory: MemorySaver => memory- Long-term memory: SqliteSaver => file, dbMemorySaver- LangGraph에서 제공하는 체크포인트 저장소- 그래프 실행 중 생성되는 state를 자동으로 저장하고 필요시 복원 할 수 있게해주는 메모리 기반 저장소 1. 기억력 없는 chatbot 1) State 정의class State(TypedDict): messages: Annotated[lis..

1. 기본 챗봇만들기개요:LLM은 사용자의 입력을 받아 응답을 생성 필요시 외부에서 정보를 검색, 툴을 사용하거나, 메모리를 읽고 써서 결과를 종합해 응답을 생성함 Tools: GPT나 LangGraph 에이전트는 모든 걸 직접 알지는 못해서 필요할 때 적절한 Tool을 선택하고 호출해서 문제를 해결 에이전트가 특정 작업을 수행하기위해 호출 할 수 있는 외부 기능 1) State 정의LLM 메세지 히스토리를 자동으로 관리하기 위한 방식목록이 업데이트 될 때 덮어쓰지 않고 새롭게 추가class State(TypedDict): messages: Annotated[list, add_messages] 2) Node정의언어 모델을 gpt-4o로 설정하고 응답을 다시 리스트로 감싸서 messages에 넣어 반..

리플렉션 그래프 구성: 입력 문장을 요약하고 만족하지못하면 다시 생각해봐 만족하면 END(요약 2번 반복시키기 하드코딩) 1. State 정의class State(TypedDict): input: str summary: str is_satisfied: bool log: list[str] 2. Node 정의summary ->요약됨 두번 등장하면 만족했다고 판단 # 요약 노드: 간단히 결과 요약 + 만족 여부 결정def summary_node(state: State): state["summary"] += " → 요약됨" state["log"].append("요약 수행") # 만족 여부 판단 (2회 이상 요약되면 만족했다고 가정) if state["summary"]..

라우팅: 특정 조건에 따라 노드가 분기되는 그래프 구조, 특정 입력에 따라 서로 다른 경로를 선택하여 실행 흐름을 제어하는 기능 => 특정 조건에 따라 서로 다른 노드를 실행하고 끝낼 수 있음예를들면 홀수, 짝수 체크해서 분기 1. State 정의입력은 숫자, 결과는 문자열 형태class State(TypedDict): number: int result: str 2. Node 정의# 노드: 짝/홀수 판별def check_parity(state: State): print(f"check_parity: 입력된 숫자 = {state['number']}") return state # 판단만 하고, 실제 처리는 다음 노드에서 함# 짝수 노드def even_node(state: State): ..

1. Open API Key 불러왔는지, 라이브러리 로딩했는지 확인하기 2. Graph 구축: 간단한 그래프 1) State 정의그래프의 노드의 입력과 출력 관리하는 클래스형태의 자료형클래스는 한번 선언하면 틀을 유지해야된다. 틀을 확정하고 값들을 계속 유지하려고 딕셔너리 말고 클래스를 사용한다.클래스 형태로 확정하고 쓸거야라는 뜻 ※ Annotated[list, add_messages] 여기 list인데 메타정보가 있어 add_messagesadd_messages: gpt가 주고받은 메세지를 이어 붙여라라는 뜻 from typing import TypedDict# 그래프 전체에서 주고받는 데이터 구조를 정의class State(TypedDict): text: str extra_field: i..