포도가게의 개발일지
바닥부터 LangChain(4) 본문
반응형
Flowise
- Flowise는 개발자가 맞춤형 LLM 오케스트레이션 흐름과 AI 에이전트를 구축할 수 있도록 돕는 오픈 소스 저코드 도구입니다.
Flowise Agent system
- 현재 flowise는 multi-agents와 sequential agents 방식을 제공합니다.
Multi-agents
system architecture
- User: 사용자는 시스템의 시작점으로, 초기 입력이나 요청을 제공합니다. 범위를 벗어난 요청은 부정확한 결과, 예기치 않은 loop 또는 시스템 오류를 초래할 수 있습니다. 때문에 사용자 요청은 시스템의 핵심기능과 일치해야합니다.
- Supervisor: supervisor는 시스템의 오케스트레이터 역할을 수행합니다. 사용자의 요청을 분석하고 이를 하위 작업으로 분해한후 각 worker에게 할당하여 결과를 집계하고 최종적으로 처리된 출력을 사용자에게 제공합니다.
- Worker: 전문화된 ai agent들로 구성 되며, 각 agent는 프롬프트 메세지를 통해 특정 작업을 수행하도록 지시받습니다. worker agent는 독립적으로 작동하며, supervisor의 지시와 데이터를 전달받아 기능을 실행하고 만일 필요하다면 tool을 실행합니다. 마지막으로 결과를 supervisor에게 전달합니다.
권장사항으로
- One task at a time: supervisor는 한번에 하나의 작업에만 집중하도록 설계되었습니다. worker가 작업을 완료하고 결과를 반환할때 까지기다린 후, 다음 단계를 분석하고 그에 맞는 작업을 위임합니다. 이렇게 함으로써 과도한 복잡성을 방지할 수 있습니다.
- One supervisor per flow: 중첩된 멀티 에이전트 시스템을 구현하여 고도로 복잡한 워크로플로우를 더 종교한 계층구조를 만들 수 있습니다. 예를들어, LangChain에서 정의한 “계층적 에이전트 팀(Hierarchical Agent Teams)“은 최상위 감독자와 중간 수준의 감독자들이 작업 팀을 관리하는 구조입니다. 그러나 Flowise의 멀티 에이전트 시스템은 현재 하나의 supervisor만을 운영합니다!
이 두 가지 제약 조건은 애플리케이션 워크플로우를 설계할 때 중요합니다. 만약 감독자가 여러 작업을 동시에, 병렬로 위임해야 하는 워크플로우를 설계하면, 시스템이 이를 처리할 수 없으며 오류가 발생하게 됩니다.
Supervisor
Supervisor prompt
- 기본적으로 supervisor prompt는 user의 요청을 분석하고 이를 하위 작업의 순서로 분해한 후, 이러한 하위 작업을 전문화된 worker에게 할당하도록 supervisor에게 지시하는 방식으로 작성됩니다.
- supervisor prompt는 사용자 정의 될 수 있지만, 항상 다음 두가지 핵심 요소가 필요합니다.
- {team_members} 변수: 이 변수는 supervisor가 사용할 수 있는 worker 목록을 제공하여, supervisor가 전문성에 따라 가장 적합한 worker에게 작업을 위임할 수 있게합니다.
- "FINISH" 키워드: 이 키워드는 supervisor에게 작업이 완료되었을을 알리는 신호로 사용됩니다. "FINISH" 지시어가 없으면 supervisor는 작업을 불필요하게 계속 위임하거나, 최종 결과를 사용자에게 전달하지 못 할 수 있습니다. 이 키워드는 모든 하 작업이 실행되었고, 사용자의 요청이 완료되었음을 나타냅니다.
- recursion limit: 중첩된 함수 호출의 최대 깊이를 제한합니다. supervisor가 단일 워크플로우 실행 내에서 자신을 몇번 호출할수있는지 제한하는 역할을 합니다. 이는 무한 재귀를 방지하고 자원의 효율성을 보장합니다.
How the Supervisor works
- supervisor는 요청을 분석하고 user가 원하는 결과를 파악하여 work flow를 시작합니다.
- supervisor prompt에서 제공되는 {team_members} 변수를 활용하여, 이 변수는 사용가능한 worker의 이름 목록만 제공하므로, supervisor는 각 worker의 전문성을 추론하고 work flow내에서 가장 적합한 worker를 선택합니다.
- supervisor가 worker의 전문성을 추론하는데 worker의 이름만을 사용하기 때문에! 이름설정이 매우 중요합니다. worker의 역할이나 전문 분야를 정확하게 반영하는 명확하고 간결하며 설명적인 이름을 설정하는것이 중요합니다.
Worker
- supervisor: 각 worker는 supervisor와 연결되어야 하며, 작업이 위임될때 호출될 수 있습니다. 이 연결은 multi-agnets system내에서 필수적인 계층적 관계를 나타냅니다.
- A Chat Model node capable of function calling: 기본적으로 worker는 supervisor의 chat model을 상속받지만, 직접 지정할수도 있습니다. 이 기능 호출 기능은 worker가 전문화된 작업을 위한 tool과 상호작용할 수 있게 도와줍니다.
'Tech' 카테고리의 다른 글
바닥부터 LangGraph(5) (2) | 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