지토의 개발일기/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 기반 챗봇)