✅ 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 기반 챗봇)
'지토의 개발일기 > RAG' 카테고리의 다른 글
출력 파서 (OutputParser) - PydanticOutputParser (0) | 2025.05.13 |
---|---|
출력파서(OutputParser) 란? (0) | 2025.05.09 |
LangSmith로 프로젝트 추적 설정 (0) | 2025.05.07 |
[RAG] OpenAI API Key 발급 및 사용법 정리 (0) | 2025.04.28 |
RAG(Retrieval-Augmented Generated) 기술이 주목 받는 이유 (0) | 2025.04.24 |