일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- toolnode
- rl
- summarize_chat_history
- removemessage
- LangChain
- Python
- pinecone
- 밑바닥부터 시작하는 딥러닝
- humannode
- update_state
- add_subgraph
- 밑바닥부터시작하는딥러닝 #딥러닝 #머신러닝 #신경망
- Ai
- subgraph
- rag
- chat_history
- human-in-the-loop
- tool_calls
- RecSys
- langgraph
- 추천시스템
- 강화학습의 수학적 기초와 알고리듬의 이해
- conditional_edge
- REACT
- tool_binding
- conditional_edges
- 강화학습의 수학적 기초와 알고리듬 이해
- 강화학습
- langgrpah
- lcel
- Today
- Total
목록2024/12/31 (3)
타임트리
병렬 노드 실행을 위한 브랜치 생성앞서 포스팅까지는 LangGrpah에서 하나의 노드에서 다른 여러 노드로 조건부로 분기하는 conditional_edge까지 다루고 있다. conditional_edge는 여러 노드 중 하나만 선택한다. 그런데, 만약 여러 프로세스를 동시에 처리가 필요한 경우를 생각해보자. 예를 들어, 리포트를 생성하고자 할 때 여러 관점(우호적/중립적/부정적)에서 각 LLM이 특정 주제에 대해 조사하도록 시키는 작업을 만들고자 한다. 이때 주황 박스로 표시한 부분은 순차적으로 처리하기보다는 병렬 처리를 통해 전체 그래프 작업의 속도 향상이 가능하다.다행히도 LangGraph는 Node의 병렬 실행을 기본적으로 지원한다. LangGraph에서 병렬 처리는 fan-out과 fan-in ..
LLM에 Tool을 binding 해서 LLM이 tool_calls를 생성했을 때, 적절한 arguments를 사용해 해당 tool을 실행하도록 하는 ToolNode에 대해 자세히 알아보자. 방금 작성한 그대로 로직을 작성할 수도 있지만(참고 - [LangGrpah] Tool Binding), LangGraph는 ToolNode를 사전 정의(pre-built)해서 제공한다. 내부적으로는 LLM에게 tool의 목록을 전달하고 (bind_tools), LLM이 사용자의 질문을 기반으로 tool 실행이 필요하다고 판단하면 해당 tool의 이름과 arguments를 반환한다. 그러면 해당 tool과 arguments로 함수를 실행하게 된다. 이때 tool list를 갖고, LLM이 반환한 tool_calls를 ..
메세지 삭제 방법일반적으로 State에는 messages라는 키로 리스트에 메세지 이력을 append 해가며 이력을 관리하게 된다.때로는 메세지를 삭제할 필요가 있을 수 있다. config별로 대화 내역을 쌓게 되는데, 내용이 너무 길어지면 컨텍스트가 너무 길어질 수 있다. 이외에도 필요없는 이력은 삭제하고 싶을 수 있다.이를 위해 RemoveMessage라는 reducer를 사용할 수 있다. RemoveMessage에 동일한 ID를 갖는 메세지를 자동으로 삭제해준다.간단한 웹 서치 그래프 정의먼저 간단하게 web search를 모방하는 search 함수를 tool로 정의하고 이를 binding한 LLM을 사용하여 그래프를 만들어보자. # web search graph 구축from typing impor..