포도가게의 개발일지

바닥부터 LangGraph(5) 본문

Tech

바닥부터 LangGraph(5)

grape.store 2024. 12. 26. 17:26
반응형

Sequential Agents

  • LangGraph 위에 구축된 flowise의 sequential agents는 work flow를 DCG로 구조화하여 대화형 에이전트 시스템을 개발을 용이하게 합닏. 이를 통해 제어된 loop와 반복적이 프로세스를 구현할 수 있습니다.
  • 이 그래프는  서로 연결된 노드들로 구성되며, 정보와 작업의 순차적 흐름을 정의합니다. 이를 통해 에이전트는 입력을 처리하고 작업을 실행하며, 구조화된 방식으로 응답을 생성할수있습니다.

Understanding Sequential Agents' DCG Architecture

  • Node-based processing: 그래프의 각 노드는 언어 처리, 도구 실행, 또는 조건부 로직과 같은 고유한 기능을 캡슐화하는 독립적인 처리 단위입니다.
  • Data flow as connections: 그래프의 엣지는 노드간의 데이터 흐름을 나타냅니다. 하나의 노드의 출력이 다음 노드의 입력으로 전달되어 , 각 process의 chaining을 가능하게 합니다.
  • State management: 상태는 공유 객체로 관리되며, 대화가 진행되는 동안 지속됩니다. 이를 통해 노드는 work flow가 진행됨에 따라 관련 정보를 액세스 할 수 있습니다.
  • state: 대화의 현재 상태를 나타내는 공유 데이터 구조입니다. state.message와 사용자 정으 ㅣ상태 변수들이 포함됩니다.
  • custom state: work flow와 관련된 추가 정보를 저장하기 위해 사용자 정의한 key-value 추가된 상태 객체입니다.
  • tool: work flow에서 특정 작업을 수행하기 위해 접근하고 실행할 수 있는 외부 시스템, api 또는 서비스 입니다. 예를 들어 정보검색, 데이터 처리, 다른 애플리케이션과 상호작용을 할 수 있습니다.
  • HITL: work flow에서 인간의 개입을  허용하는 기능으로, 주로 도구 실행중에 사용됩니다. tool calling이 실행되기 전에 인간 리뷰어가 이를 승인하거나 거부할수있습니다.
  • parallel nodel execution: work flow내에서 여러 node를 동시 실행할 수 있는 기능을 말합니다. 분기가 있는 매커니즘을 사용하여 workflow의 서로 다른 분기가 동시에 정보를 처리하거나 tool과 상호작용할수 있게 도와줍니다. 전체 실행 흐름을 순차적으로 유지됩니다.

 

Introducing State, Loop and Condition Nodes

  • state node: state는 애플리케이션 또는 work flow의 현재 스냅샷을 나타내는 공유 데이터 구조로 정의됩니다. state node는 대화 시작 시 work flow에 사용자 정의 상태를 추가할수있게해줍니다. 이 사용자 정의 state는 work flow의 다른 node에서 접근하고 수정할 수 있어, 동적인 동작과 데이터 공유가 가능합니다.
  • loop node: 이 노드는 sequntial agent workflow 내에서 제어된 사이클을 도입하여, 특정 조건에 따라 node sequence를 반복할 수 있게 해줍니다. 이를 통해 agent는 출력을 개선하거나, 사용자로부터 추가 정보를 수집하거나 작업을 여러번 수행할수있습니다.
  • condition node: 조건 노드와 조건 agent node는 분기 경로를 갖춘 복잡한 대화 흐름을 생성하는데 필요한 제어기능을 제공합니다. 조건 노드는 직접적인 조건 평가를 수행하며, 조건 에이전트 노트는 에이전트의 추론을 사용하여 분기 로직을 결정합니다. 이를 통해 사용자 입력, 사용자 정의 상태 또는 다른 node의 작업 결과를 바탕으로 workflow의 동작을 동적으로 유도할 수 있습니다.

Agent Node

  • sequential agent architecture의 핵심 컴포넌트로 , workflow내에서 결정자이자 조정자 역할을 합니다.
  • agent node는 이전 node 로부터 입력을 받으면 항상 전체 state.messages와 그 시점의 custom state를 포함합니다. agent node는 시스템 프롬프트에 의해 설정된 persona를 사용하여, 사용자의 요청을 처리하기 위해 외부 도구가 필요한지 판단합니다.
  • tool이 필요하면, agent node는 자동으로 적절한 tool을 선택하고 실행합니다. 이 실행은 자동으로 진행될 수 있으며, 민감한 작업의 경우 HIL이 필요할수있습니다. tool 작업이 완료되면, agent node는 결과를 받아 지정된 llm을 사용해 처리하고 종합적인 응답을 생성합니다.
  • tool이 필요하지 않은 경우, agent node는 llm을 직접 사용하여 현재 대화 문맥을 바탕으로 응답을 생성합니다.

Understanding the Tool Node

  • llm node에서 받은 지시에 따라 외부 도구를 실행하고, 도구 실행과정에서 HITL 개입을 위한 유연성을 제공합니다.
  • Tool call reception: tool node는 llm node로 부터 입력을 받습니다. 만약 llm 출력에 tool_calls 속성이 포함되어 있으며, tool node는 tool 실행을 진행합니다.
  • Excution: tool node는 llm tool_calls를 지정도니 외부 도구로 직접 전달합니다. 만약 tool_calls가 없다면, 해당 workflow 실행에서 tool은 실행되지 않습니다. tool node는 llm의 출력을 해석하거나 처리하지 않습니다.
  • HITL: tool node는 선택적으로 HITL을 지원하며, 도구 실행 전에 인간이 검토하고 승인하거나 거부할수 있도록 합니다
  • output parsing: tool 실행 이후, tool node는 도구의 출력을 받아 workflow의 다음 node로 전달합니다. tool node의 출력이 후속 node에 견결되지 않았다면, tool의 출력은 원래 llm node로 반환되어 추가 처리 됩니다.

 

Agent Node vs. LLM Node

  • 두 node 모두 LLM 또는 chat model을 사용합니다.
  • 하지만, 두 노드는 언어 처리와 도구 상호작용을 할 수 있지만, workflow 내에서 목적은 다르게 설계되었습니다.
  • agent는 대화 맥락 내에서 인간 agent의 행동과 의사결정을 시뮬레이션 하는것, 언어 이해, 도구실행, 의사결정을 결합하여 더 인간적인 대화 경험을 만듭니다.(사용자에게 안내하고, 정보 수집, 선택, 전체 대화 흐름을 관리, 여러 외부 tool이 통합된 시나리오, 인간의 감독이 필요한경우에 적합합니다) -> 
  • llm node는 tool 사용과 HITL 기능에서 tool node를 통해 더 많은 유연성을 제공합니다.(llm 응답에서 구조화된 데이터를 추출해야하는 시나리오, 자동화된 작업과 인간 검토가 필요한 도구 실행이 혼합된 workflow에 적합합니다.) -> llm node는 llm 출력에서 json schema 기능을 사용하여 구조화된 data를 추출해야 할 때 사용합니다. 이는 agent node에서는 사용할수없습니다. llm nodㄷ 는 tool 실행을 세밀하게 제어합니다.

'Tech' 카테고리의 다른 글

바닥부터 LangChain(4)  (0) 2024.12.26
바닥부터 LangFlow(3)  (0) 2024.12.24
바닥부터 LangGraph(2)  (0) 2024.12.24
바닥부터 LangChain(1)  (0) 2024.12.20
바닥부터 LangChain(0)  (3) 2024.12.20
Comments