빅데이타 & 머신러닝 185

AI 자동화와 Zapier, n8n 소개 및 비교

AI 자동화란 무엇인가AI 자동화는 인공지능 기술을 활용하여 반복적인 작업을 자동으로 처리하고, 데이터를 분석하며, 의사 결정을 최적화하는 프로세스이다. 단순한 작업부터 복잡한 비즈니스 워크플로우까지 다양한 영역에서 효율성을 높이고, 수작업으로 인한 오류를 줄이며, 생산성을 향상시킨다. 예를 들어, AI 자동화는 고객 문의를 실시간으로 분류하거나, 데이터를 분석해 보고서를 생성하거나, 소셜 미디어 콘텐츠를 자동으로 게시하는 데 사용된다. 이러한 기술은 비즈니스 운영을 간소화하고, 더 나은 고객 경험을 제공하며, 조직이 더 빠르게 성장할 수 있도록 돕는다.AI 자동화의 실질적인 예시고객 지원: 고객 이메일을 분석해 우선순위를 지정하고, 자동으로 답변 템플릿을 생성한다.마케팅: 소셜 미디어 캠페인 데이터를 ..

Langchain이 있는데, Langgraph가 왜 필요할까?

LLM 애플리케이션을 만드는데, 이미 Langchain과 같은 프레임웍이 있는데, 왜 추가로 Langgraph와 같은 프레임웍이 필요할까?예를 들어서, 질문에 대해서 구글 검색을 하고, 그 내용을 기반으로 답변하는 Agent를 만든다고 하자.아래 구조와 같이 질문을 분석해서 좀 더 명확한 프롬프트로 만들어내고, 구글 검색을 한 후, 검색 내용이 답변을 하는데 충분한 정보를 가지고 있는지 판단을 하고, 만약에 검색된 정보가 충분하지 않으면 질문을 변경해서 다시 구글 검색을 하고, 충분한 정보를 수집할때 까지 이 과정을 반복한 다음에, 이 정보를 이용해서 답변을 생성해서 리턴한다. 이 구조를 Langchain으로 만들 수 없을까?물론 가능은 하다. 대략 다음과 같은 구조를 가지면 된다. chain = ( ..

고급 Agent를 위한 Langgraph 개념 이해 #4 - Tool 호출

4. Tool 호출Graph에서 외부 Tool을 호출하는 방법에 대해서 알아보도록 하자. 먼저 Tool 함수를 정의해야 하는데,Tool을 일반적인 파이썬 함수로 정의한다. 이때 중요한 부분은 함수 첫줄에 툴에 대한 설명을 주석으로 달아줘야 한다. LLM AI 모델이 어떤 툴을 사용해야할지 판단할때 이 정보를 이용해서, 툴의 기능을 파악한 후에, 툴 호출 여부를 결정한다. 아래는 get_weather라는 툴을 정의한 코드로, 특정 지역의 날씨를 리턴하는 테스트 코드이다. (지역명이 sf나 san francisco인 경우에는 온도를 60도로, 아니면 90도 온도로 리턴한다.) 이렇게 툴을 호출하는 노드를 ToonNode라고 하는데, 인자로, 호출할 툴 함수를 정의한다. 아래 코드에서 보면 ToolNode([..

고급 Agent를 위한 Langgraph 개념 이해 #3 - Edge

3. EdgeEdge는 노드가 정의된 후에, 노드에서 호출한 다음 노드를 정의한다. 사용 방법은 매우 간단하다.아래와 같이 노드를 먼저 정의한 후에, add_edge를 이용하여 연결하고자 하는 노드 이름을 지정하면 된다. 아래 코드의 경우 node_1→node_2를 호출하는 구조를 정의하였다. builder.add_node("node_1", node_1)builder.add_node("node_2", node_2)graph.add_edge("node_1", "node_2")Conditional routing일반적인 Edge flow이외에, 조건에 따라서 특정 노드로 Routing 하도록 플로우를 정의할 수 있다. 예를 들어서 아래 그림과 같이, node_1실행후에, 조건에 따라서 node_2또는 node..

고급 Agent를 위한 Langgraph - Multi State 사용시 주의해야할점

Langgraph에서는 하나의 Graph에서 여러개의 State를 동시에 사용할 수 있다. 또한 정의된 State는 전역변수 처럼 인식되서, 다른 Node로 그 값을 넘기지 않아도 그 값이 그대로 유지되고 사용이 가능하다.예를 들어node1(State1)->State2node2(State2)->State3node3(State1)->State3로 호출하는 구조가 있다고 하자.이 경우, node1의 output인 State2는 node2의 Input에 들어가지만, node2의 output이 State3인데, node3에서 State3를 받지 않고, State1을 받을 수 있을까? 답변은 된다.State1,2,3의 정보가 같이 유지되고 있기 때문에, 이전 노드의 State가 아니더라도 사용이 가능하다. 아래 ..

고급 Agent를 위한 Langgraph 개념 이해 #2 - Node

2. NodeNode는 State 정보를 활용해서, State 정보를 변경하거나 action을 취하는 그래프내의 함수이다. 함수내에서는 LLM 모델을 실행해서 질문에 대한 정답을 찾거나 , Tool 등을 이용해서 Action을 취하거나, 또는 RAG를 통해서 질문에 필요한 추가 컨택스트 정보를 검색해와서 State에 저장해서 다음 Node에서 LLM이 답변에 활용할 수 있도록 한다. 예를 들어 web_search,chat 이라는 Node가 있을때, web_search Node에서는 Google 검색을 이용하여, 질문에 필요한 추가 정보를 검색해서 State에 저장한후, 다음 chat 노드에서 해당 State에 저장된 Context 정보를 리턴하는 식으로 구현이 된다. Node는 Python funct..

고급 Agent를 위한 Langgraph 개념 이해 #1-State

먼저 Langgraph의 개념을 이해하려면 3가지 State, Node, Edge에 대해서 알아야 한다. 각 컴포넌트의 개념과 세부 문법에 대한 이해가 없으면 어떻게 Langgraph가 작동하는지에 대해서 이해가 매우 어렵기 때문에, 이 글에서는 개념과 문법에 대해서 설명하도록 한다. 그래프는 Node로 구성이 되어 있는데, State를 받아서, 작업을 하고, State를 출력하는 역할을 한다. Node를 실행한 후에, 다른 Node를 실행하기 위해서는 Edge를 따라서, Node를 이동하게 된다. 이 개념을 그림으로 표현하면 아래와 같다. 사각형이 Node이고, Node들을 연결하는 선이 Edge, 그리고, Node들이 입력으로 받고, 업데이트 하는 것이 State (상태 정보)이다. 1. State..

Google ADK와 LangGraph 비교 (Node,Edge 기반 워크플로우 정의기능)

LangGraph가 노드와 엣지 구성을 통해서 워크플로우를 정교하게 관리할 수 있는데, 그러면 Google ADK도 가능할까 해서, 예제 코드를 Gemini를 이용해서 구성해봤다. 일단 결론 부터 이야기하자면, Google ADK는 노드와 엣지의 개념은 없지만, 노드대신 에이전트로 정의한후, 이를 워크플로우로 연결이 가능하고, Loop와 Branch역시 가능하다. 아직 Node와 ADK의 Agent차이에 대해서는 좀 더 고민해봐야겠지만, 개념상으로 비슷한것은 만들수있다는 이야기.from google.adk.agents import LlmAgent, SequentialAgent, BaseAgentfrom google.adk.events import Event, EventActionsfrom google...

Langgraph tool 호출 튜토리얼

이 문서는 Langgraph의 공식 튜토리얼 두번째 "Add tools"에 대한 코드를 설명한 문서이다.원본 코드 : https://langchain-ai.github.io/langgraph/tutorials/get-started/2-add-tools/모델 생성 및 툴 생성 부분tool = TavilySearch(max_results=2)tools = [tool]llm = init_chat_model("google_genai:gemini-2.5-flash")llm_with_tools = llm.bind_tools(tools)외부 Search tool로 Langchain tool (TavilySearch)툴을 생성하고, 해당 툴을 tools 리스트에 넣은후에,LLM 모델을 생성하고, 해당 tool을 LLM..

LLM 모델 알고리즘 이해를 기반으로, 효율적인 프롬프트 작성하기

LLM의 확률적 생성 프로세스 제어를 위한 방법론: 프롬프트 엔지니어링의 기술적 원리대규모 언어 모델(LLM)과의 상호작용 시, 응답의 비결정성(Non-determinism)과 재현성(Reproducibility)의 부재는 개발자에게 주요한 도전 과제이다. 프롬프트 엔지니어링은 이러한 확률적 모델의 출력을 결정론적으로 제어하기 위한 핵심적인 방법론으로 부상했다. 본 문서는 프롬프트 엔지니어링의 주요 기법들이 LLM의 내부 아키텍처 및 수학적 원리에 기반하여 어떻게 작동하는지 심층적으로 분석한다.1. LLM의 근본 원리: 자기회귀적 확률 모델 (Autoregressive Probabilistic Model)LLM의 모든 출력은 자기회귀(Autoregressive) 모델의 기본 원칙을 따른다. 즉, 주어진 ..