일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- adaptive_rag
- 강화학습의 수학적 기초와 알고리듬의 이해
- 강화학습의 수학적 기초와 알고리듬 이해
- 추천시스템
- pinecone
- removemessage
- summarize_chat_history
- 강화학습
- LangChain
- subgraph
- 밑바닥부터시작하는딥러닝 #딥러닝 #머신러닝 #신경망
- tool_calls
- tool_call_chunks
- 밑바닥부터 시작하는 딥러닝
- chat_history
- toolnode
- conditional_edges
- rl
- add_subgraph
- agenticrag
- update_state
- langgraph
- Python
- rag
- REACT
- RecSys
- fastapi
- langgrpah
- Ai
- humannode
- Today
- Total
목록LLM/LangGraph (12)
타임트리

메세지 삭제 방법일반적으로 State에는 messages라는 키로 리스트에 메세지 이력을 append 해가며 이력을 관리하게 된다.때로는 메세지를 삭제할 필요가 있을 수 있다. config별로 대화 내역을 쌓게 되는데, 내용이 너무 길어지면 컨텍스트가 너무 길어질 수 있다. 이외에도 필요없는 이력은 삭제하고 싶을 수 있다.이를 위해 RemoveMessage라는 reducer를 사용할 수 있다. RemoveMessage에 동일한 ID를 갖는 메세지를 자동으로 삭제해준다.간단한 웹 서치 그래프 정의먼저 간단하게 web search를 모방하는 search 함수를 tool로 정의하고 이를 binding한 LLM을 사용하여 그래프를 만들어보자. # web search graph 구축from typing impor..

기존까지는 graph를 stream 메서드로 실행하며, interrupt_before 혹은 interreupt_after 옵션으로 Tool Node가 호출되는지 여부에 따라 항상 중단시켰다. 그런데 만약 LLM이 직접 판단해서 필요한 경우 사람의 도움을 요청하도록 하고 싶다면 어떻게 해야할까? LLM이 사람의 개입이 필요할지에 대한 판단을 직접 내리도록 하는 방법 중 하나는 human 노드를 정의하고 해당 노드에 방문할 때는 항상 중단시키도록 하는 것이다. 대신, 이전 노드에서 다음 스텝으로 human node 로 갈지말지에 대한 판단은 HumanAssistance 도구를 LLM이 호출하는지로 판단하도록 한다.human 노드를 추가하고, 이 노드에서는 항상 중단LLM이 HumanAssistance too..

LangGraph는 기존의 Naive RAG 나 Advance RAG와는 달리 노드 단위로 흐름을 조절할 수 있다.특히 노드를 기준으로 중간에 interrupt를 걸 수 있다. (interrupt_before, interrupt_after)이러한 기능을 활용해서 중간에 사람이 개입하여 판단할 수 있도록 만들 수 있다!왜 human-in-the-loop 이 필요하지?Agent를 전적으로 신뢰할 수 없을 때, 사람이 개입해야 할 필요가 있다.일부 작업에 대해서는 의도대로 실행되고 있는지 확인하기 위해 실행하기 전 사람이 직접 개입하여 "승인" 절차를 도입하고 싶을 수 있다. 이번에는 이전까지 살펴봤던 검색 Tool을 가진 그래프를 활용하고 LLM이 생성한 검색 쿼리가 적절한지 판단하도록 만들어보자.(Lang..

LangGraph에서 Tool을 사용하기 위해서는 ToolNode가 정의되어야 한다LangChain에서 Tool은 결국 invoke 메서드를 갖는 하나의 클래스로 정의만약 Custom이 필요한 경우, langchain_core.tools의 BaseTool를 상속받는 클래스를 정의하면 됨!추상 메서드 _run을 정의클래스 변수 name, description, args_schema 3가지를 정의LLM에 Tool을 주는 방법은 다음과 같다!STEP1. Tool 리스트 정의from utils.custom_tools import TavilySearch# 검색도구 생성web_search = TavilySearch(max_results=1)tools = [tool]STEP2. llm에 tool 리스트 바인딩from..