AI/LLM

LangChain

dragonhyeon 2025. 5. 8. 11:34
728x90
반응형

LangChain

LangChain 은 LLM 기반 애플리케이션을 구성하는 프레임워크로, 다양한 모듈 (LangChain Components) 을 조합해 복잡한 LLM 기반 파이프라인을 구성하는 기능을 제공합니다.

 

LangChain 은 Agent 뿐 아니라, PromptTemplate, Tool, Chain, Memory 등 다양한 구성 요소를 제공하며, Agent 는 외부 Tool 들과 LLM 을 동적으로 연결해 문제를 해결하는 방식의 한 예입니다.

 

한 편, LangChain 이 LLM 을 중심으로 설계된 건 맞지만, 전체 구조는 LLM 을 선택적으로 사용하는 조합형 프레임워크이기 때문에 LangChain 을 사용할 때 LLM 이 필수 구성 요소는 아닙니다.

  • LangChain 의 Agent 는 LLM 의 추론 능력을 활용하여 "Tool 선택", "질문 분석", "후처리" 등을 전부 수행하기 때문에, LLM 없이 Agent 는 동작하지 않음. 즉, Agent 에 LLM 은 필수 구성 요소.
  • 하지만 일부 기능 (ex. Tool, Memory, PromptTemplate 등) 은 LLM 없이도 독립적으로 사용할 수 있음

Tool 사용 방식

  • Tool 단독 방식
    • 사용자가 직접 적절한 Tool 을 호출하여 사용
    • Tool 에서 return 받은 결과값을 그대로 전달
      • ex. {“weather”: “clear”, “temp”: 22}
from langchain.tools import Tool


def add(x: int, y: int) -> int:
    return x + y


def subtract(x: int, y: int) -> int:
    return x - y


add_tool = Tool(
    name="AddTwoNumbers",
    func=lambda x: add(*map(int, x.split())),
    description="두 수를 더합니다. 예: '3 5'"
)

sub_tool = Tool(
    name="SubtractTwoNumbers",
    func=lambda x: subtract(*map(int, x.split())),
    description="첫 번째 숫자에서 두 번째 숫자를 뺍니다. 입력 예시: '10 4'"
)

# 단독 실행
result = add_tool.run("3 5")
print(result)  # 출력: 8
  • Agent 방식
    • LLM 이 Tool 의 사용을 스스로 판단
      • LangChain Agent 는 내부적으로 LLM 에게 Tool 의 목록과 Description 을 제공하고, 질문에 가장 적합한 Tool 을 LLM 이 선택하도록 유도
    • Tool 에서 받은 결과를 LLM 이 응답 형태로 가공하여 사용자에게 전달
      • ex. “현재 서울의 날씨는 맑고 기온은 22도입니다. 산책하기 좋은 날씨예요!”
from langchain.agents import initialize_agent, AgentType
from langchain.chat_models import ChatOpenAI
from langchain.tools import Tool


# 두 개의 Tool 정의
def add(x: int, y: int) -> int:
    return x + y


def subtract(x: int, y: int) -> int:
    return x - y


add_tool = Tool(
    name="AddTwoNumbers",
    func=lambda x: add(*map(int, x.split())),
    description="두 숫자를 더합니다. 입력 예시: '3 5'"
)

sub_tool = Tool(
    name="SubtractTwoNumbers",
    func=lambda x: subtract(*map(int, x.split())),
    description="첫 번째 숫자에서 두 번째 숫자를 뺍니다. 입력 예시: '10 4'"
)

llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)

agent = initialize_agent(
    tools=[add_tool, sub_tool],
    llm=llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)

agent.run("7 이랑 5 더하면 뭐야?")
Agent 는 LLM 의 추론 능력을 활용하는 주체일 뿐, LLM 그 자체가 아닙니다.
728x90
반응형

'AI > LLM' 카테고리의 다른 글

LLM Agent  (2) 2025.04.24
RAG  (0) 2025.02.20