지토의 개발일기/RAG

LangChain 문법 (invoke(), stream()) (1)

지아토 2025. 5. 6. 16:27

✅ invoke()란?

invoke()는 LangChain의 모든 Runnable (예: LLM, Chain 등)을 한 번 호출해서 결과를 반환받는 메서드입니다.

  • 입력값 → 출력값 1번 호출
  • await 키워드와 함께 비동기로 사용 가능
  • 가장 기본적인 실행 방식

 

from langchain.chat_models import ChatOpenAI

llm = ChatOpenAI()
response = await llm.invoke("안녕하세요!")
print(response.content)

 

 

✅ stream()이란?

stream()은 스트리밍 출력을 받을 수 있는 메서드입니다. 특히 Chat Model이나 LLM의 응답을 chunk 단위로 실시간 처리하고 싶을 때 사용합니다.

  • ChatGPT처럼 단어/문장 단위로 출력되는 기능을 만들 때 유용
  • 비동기 async for와 함께 사용
from langchain.chat_models import ChatOpenAI

llm = ChatOpenAI(streaming=True)
async for chunk in llm.stream("한국에 대해 알려줘"):
    print(chunk.content, end="")

 

 

기능 invoke() stream()

방식 한번에 전체 응답 응답을 chunk로 나눠 실시간 처리
반환 형태 전체 응답 객체 1개 여러 개의 chunk (부분 응답)
사용 목적 일반적인 단일 질의응답 실시간 응답 처리 (예: 채팅, 음성 변환)
사용 방식 await runnable.invoke(input) async for chunk in runnable.stream(input)

 

 

  • invoke()는 로직 처리, 함수형 체인 실행 등에 사용
  • stream()은 사용자 UI 응답을 빠르게 보여줘야 할 때 유리 (예: Streamlit, FastAPI 기반 챗봇)