목록Tech (20)
포도가게의 개발일지
Sequential AgentsLangGraph 위에 구축된 flowise의 sequential agents는 work flow를 DCG로 구조화하여 대화형 에이전트 시스템을 개발을 용이하게 합닏. 이를 통해 제어된 loop와 반복적이 프로세스를 구현할 수 있습니다.이 그래프는 서로 연결된 노드들로 구성되며, 정보와 작업의 순차적 흐름을 정의합니다. 이를 통해 에이전트는 입력을 처리하고 작업을 실행하며, 구조화된 방식으로 응답을 생성할수있습니다.Understanding Sequential Agents' DCG ArchitectureNode-based processing: 그래프의 각 노드는 언어 처리, 도구 실행, 또는 조건부 로직과 같은 고유한 기능을 캡슐화하는 독립적인 처리 단위입니다.Data fl..
FlowiseFlowise는 개발자가 맞춤형 LLM 오케스트레이션 흐름과 AI 에이전트를 구축할 수 있도록 돕는 오픈 소스 저코드 도구입니다.Flowise Agent system현재 flowise는 multi-agents와 sequential agents 방식을 제공합니다.Multi-agentssystem architectureUser: 사용자는 시스템의 시작점으로, 초기 입력이나 요청을 제공합니다. 범위를 벗어난 요청은 부정확한 결과, 예기치 않은 loop 또는 시스템 오류를 초래할 수 있습니다. 때문에 사용자 요청은 시스템의 핵심기능과 일치해야합니다.Supervisor: supervisor는 시스템의 오케스트레이터 역할을 수행합니다. 사용자의 요청을 분석하고 이를 하위 작업으로 분해한후 각 worke..
LangFlow- Langflow는 다중 에이전트 및 RAG(리트리벌-증강 생성) 애플리케이션을 구축하기 위한 시각적 프레임워크입니다. 오픈 소스이며, Python 기반으로 완전히 커스터마이징이 가능하고, LLM(대형 언어 모델) 및 벡터 스토어와 독립적으로 사용할 수 있습니다. Sequential tasks agent- Sequential Tasks Agent 흐름은 여러 Agent 컴포넌트를 사용하여 다중 에이전트 애플리케이션을 구축하는 방식입니다. 각 에이전트는 고유한 LLM 모델과 도구 세트를 가지며, Prompt 컴포넌트는 Agent Instructions 필드에 연결되어 에이전트의 동작을 제어합니다. Data component- 이 컴포넌트들은 데이터를 로드할 때 일부 처리를 하거나 타입 검사..
LangGraph- LangGraph는 LLM(대형 언어 모델)을 활용하여 상태 기반의 다중 액터 애플리케이션을 구축하는 라이브러리로, LangGraph는 사이클을 포함하는 흐름을 정의할 수 있어, 대부분의 에이전트 아키텍처에 필수적인 특성을 제공합니다. 1. Flow- LangGraph는 애플리케이션의 실행 흐름을 그래프 형태로 정의합니다. 각 그래프의 노드는 작업을 나타내며, 이 작업들은 다른 작업들과 연결되어 흐름을 형성합니다. 노드 간의 연결은 데이터 흐름을 정의하며, 각 노드는 입력과 출력을 갖습니다. 이 흐름은 에이전트가 실행하는 작업을 순차적 또는 조건부로 처리할 수 있게 합니다. 2. Cycles- LangGraph의 중요한 특징 중 하나는 사이클을 지원하는 점입니다. 대부분의 전통적인 ..
LangChain Core- langchain-core는 LangChain 생태계에서 사용하는 기본 추상화와 LangChain 표현 언어를 포함하는 패키지입니다. LangGraph- langgraph는 상태 기반의 다중 행위자 애플리케이션을 구축하는 라이브러리로, LangChain과 원활하게 통합되지만 독립적으로 사용할 수도 있습니다. LangServe- LangServe는 LangChain 실행 가능 함수와 체인을 REST API로 배포할 수 있도록 도와줍니다. Runnable- Runnable은 LCEL로 생성된 체인을 의미하며, 이는 Runnable 인터페이스를 구현한 객체입니다. • 단일 LLM 호출: LCEL을 사용하지 않고 모델을 직접 호출하는 것이 좋습니다. • 간단한 체인(예: 프롬프트 ..
LLM을 이용한 서비스를 개발하면서, 시스템 명령어가 너무 많이 포함되게 되었습니다. 이로 인해 명령어들 간에 모순이 발생하거나, 모델이 일부 명령어를 제대로 이해하지 못하게 되었습니다. 결과적으로 프롬프트의 사소한 변화에도 출력이 크게 달라지는 문제가 발생했습니다. 또한, 하나의 요청에서 너무 많은 작업을 처리하려다 보니, 원하는 결과물이 아닌 부정확한 출력들이 생성된 것 같습니다. 필요한점- 작고 구체적인 단위로 보다 정확한 처리- 여러 모델을 협력시켜서 최종 아웃풋에 도달 LangChain이란 무엇일까요?- LangChain은 다양한 AI 애플리케이션을 구축하는 데 유용한 프레임워크로, LLMs(대형 언어 모델)을 다루는 방법과 데이터 처리 및 결과 생성 과정을 최적화하는 다양한 도구를 제공합니다...
Strategy for Gitops현재 terraform을 branch를 통해 환경을 나누고 있었고, 괜찮은 결정이었다고 생각, 가장 큰 이유는 코드 base가 동일하며 terraform에 경우 workspace 단위로 나눌 수 있기 때문이라고도 생각이 들었다.하지만 동일한 code base로 인해 선언적인 명령에서 점점 멀어지게 되었고, code 관리 및 git branch 관리가 불편해진 경험을 다수 느낄 수 있었습니다.gitops에 해당 전략을 적용해볼려고 자료를 조사해본결과 꽤 큰 도전적인것들이 있었습니다. 그 중에서는 git에서 환경에 따라 value를 어떻게 분리 할 것 이며, kustomize를 이용해서 분리된 value를 변경할 것 인가 라는 도전적인 부분이 있었습니다.하지만 YAML은 구..
AWS EKS IRSA 동작 결국 k8s에는 role을 service account를 주어 pod이 k8s resource에 대한 접근권한을 얻는 방식이다. 그럼 k8s의 pod들은 aws resource에 대한 접근권한을 어떻게 얻을까? 첫번째 node에 iam role을 주어 pod이 자동으로 사용한다. 두번째 iam user의 access key를 pod에서 직접 사용한다. 세번째 AWS IRSA(IAM Role for Service Account)를 사용한다. 우선 pod이 어떻게 aws resource에 접근할까? 전달 받은 jwt(id token)과 arn을 이용하여 STS를 통해 정책 및 trust relation(role의 사용가능여부)을 확인한다. jwt(id token)를 발급해준 ID..