# 개요 LangChain과 Streamlit을 함께 사용할 때 알아두면 유용한 두 가지 핵심 기능을 소개합니다. 특히 ChatGPT와 같은 AI 모델의 응답을 스트리밍하고 채팅 인터페이스를 구현할 때 매우 유용한 기능들입니다. # write_stream() - AI 응답 스트리밍하기 Streamlit의 `write_stream()` 함수는 LangChain의 ChatOpenAI 모델과 완벽하게 호환됩니다. 이를 통해 AI 응답을 실시간으로 타이핑되는 것처럼 표시할 수 있습니다. ## 기본 사용법 ```python import streamlit as st from langchain_openai import ChatOpenAI model = ChatOpenAI(model="gpt-4o-mini", temperature=0) message_chunk = model.stream("대한민국의 수도는?") st.write_stream(message_chunk) # 정상 출력 ``` `write_stream()` 을 사용하면 AI 모델의 응답을 실시간으로 확인 가능합니다. ## 전체 응답 반환받기 ```python import streamlit as st from langchain_openai import ChatOpenAI message_chunk = model.stream("대한민국의 수도는?") response = st.chat_message("assistant").write_stream(message_chunk) # 완성된 메시지 반환 st.write(response)  # 대한민국의 수도는 서울입니다. ``` Streamlit의 `write_stream()` 메서드는 스트리밍으로 출력되는 응답을 화면에 표시하면서, 동시에 전체 응답 텍스트를 문자열로 반환합니다. 이는 생성된 응답을 나중에 재사용하거나 저장해야 할 때 특히 유용합니다. # chat_message() - 채팅 인터페이스 구현하기 Streamlit의 `chat_message()` 함수는 LangChain의 ChatMessage 구조와 잘 어울려서 직관적인 채팅 인터페이스를 만들 수 있습니다. ```python import streamlit as st from langchain_core.messages.chat import ChatMessage from langchain_openai import ChatOpenAI from typing import List messages: List[ChatMessage] = [] messages.append(ChatMessage(role="assistant", content="Hello")) messages.append(ChatMessage(role="human", content="Hi")) for message in messages: st.chat_message(message.role).write(message.content) ``` 이 방식의 특징: - 깔끔한 채팅 UI 구현 - 역할별(사용자/어시스턴트) 메시지 구분 - 코드가 직관적이고 이해하기 쉬움 이러한 기능들을 활용하면 AI 챗봇이나 대화형 인터페이스를 쉽게 구현할 수 있습니다. 특히 실시간 응답과 대화 히스토리 관리가 필요한 애플리케이션에서 매우 유용하게 사용될 수 있습니다.