2025/07 10

고급 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..

Python TypedDict

TypedDict는 파이썬의 타입 힌트를 위한 기능으로, 딕셔너리의 키와 값에 대한 타입을 명시적으로 지정할 때 사용한다. 일반 dict와 달리, 정해진 키와 그에 해당하는 값의 타입을 강제하여 코드의 안정성과 가독성을 높여준다.TypedDict란 무엇인가?TypedDict는 typing 모듈에서 제공하는 클래스로, 딕셔너리의 구조를 미리 정의할 수 있게 해준다. 딕셔너리에 어떤 키가 존재해야 하는지, 그리고 각 키에 해당하는 값의 타입이 무엇인지 명시할 수 있다.이는 정적 타입 검사 도구(static type checker)가 코드 실행 전에 잠재적인 오류를 발견하도록 돕는다. 예를 들어, 존재하지 않는 키에 접근하거나 잘못된 타입의 값을 할당하려고 할 때 미리 경고를 받을 수 있다.예제TypedDic..

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) 모델의 기본 원칙을 따른다. 즉, 주어진 ..

Gemini CLI 활용 방법과 숨겨진 가치

조대협 (http://bcho.tistory.com) 본인은 구글 클라우드의 엔지니어이며, 이 글은 회사의 의견을 대표하지 않고 본인 개인의 의견임을 밝혀둡니다. 얼마전에 Gemini CLI가 발표되고, Google Gemini 서버가 폭주했다는 이야기까지 들려왔다. 사람들은 왜 Gemini CLI에 열광할까? 이미 ChatGPT나 Claude가 웹, 데스크탑 까지 지원하고 있고, Cursor나 Winsurf같은 코딩 AI에서 부터 Lovable, V0와 같은 바이브 코딩 툴이 있는데, 터미널에서 지원하는 CLI 기반의 AI가 나온것 하나가 이 시장에 어떤 영향을 미칠까? 무료 서비스라는 발표로 많은 인기를 얻었지만, 그 보다 Gemini CLI는 SDLC (Software Development Lif..