반응형

CHAT GPT API 사용
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
user_input = "뉴턴의 만유인력이 뭐야?"
user_input2 = "뉴턴의 캐플러법칙은 뭐야?"
user_input3 = "뉴턴의 가속도의 법칙은 뭐야?"
llm = ChatOpenAI(model_name="gpt-5", temperature=0)
prompt = ChatPromptTemplate.from_messages(
[
("system", "꼭 충청도 사투리로 답해."),
("user", "{user_input}"),
]
)
output_parser = StrOutputParser()
chain = prompt | llm | output_parser
# response = chain.invoke({"user_input": user_input})
# response = chain.batch([{"user_input": user_input},{"user_input":user_input2},{"user_input":user_input3}])
for response in chain.stream({"user_input": user_input}):
print(response)
print(response)
- chain.invoke : 바로 한줄 실행
- chain.batch : 여러개 실행
- chain.stream: 실시간실행
Lanchain의 Fallbacks,RunnableParaller 기능을 통해, 하나의 llm이 안될경우 다른 llm을 사용하는 Fallbacks 기능과, 여러개의 llm을 병렬로 실행하는 RunnableParaller 기능을 제공한다.
Streamlit
import streamlit as st
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.output_parsers import StrOutputParser
from openai import api_key
def select_model():
temperature = st.sidebar.slider("Temperature", 0.0, 1.0, 0.5)
models = ("gpt-4o", "gpt-3.5-turbo")
model = st.sidebar.radio("Choose a model", models)
if model == "gpt-4o":
st.session_state.model_name = "gpt-4o"
return ChatOpenAI(model_name=st.session_state.model_name, temperature=temperature,api_key=keys)
elif model == "gpt-3.5-turbo":
st.session_state.model_name = "gpt-3.5-turbo"
return ChatOpenAI(model_name=st.session_state.model_name, temperature=temperature, api_key=keys)
def init_message():
clear_button = st.sidebar.button("Clear Conversation",key="clear")
if clear_button or "message_history" not in st.session_state:
st.session_state.message_history = []
def main():
st.header("ChatGPT")
st.session_state.llm = select_model()
init_message()
# llm = ChatOpenAI(model_name="gpt-5.2", temperature=0,)
prompt = ChatPromptTemplate.from_messages(
[
("system", "You are a helpful assistant."),
MessagesPlaceholder(variable_name="history"),
("user", "{user_input}"),
]
)
output_parser = StrOutputParser()
chain = prompt | st.session_state.llm | output_parser
if user_input := st.chat_input("Ask a question about the world!"):
with st.spinner("Thinking..."):
response = chain.invoke({"history": st.session_state["message_history"], "user_input": user_input})
st.session_state["message_history"].append({"role": "user", "content": user_input})
st.session_state["message_history"].append({"role": "assistant", "content": response})
for msg in st.session_state["message_history"]:
st.chat_message(msg["role"]).write(msg["content"])
if __name__ == "__main__":
main()
side bar를 만들어서, 모델과 온도를 변경해가며, 실제 GPT UI를 경험한 것이다.

반응형
'AI' 카테고리의 다른 글
| 태태개발일지 - Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 리뷰 (0) | 2026.05.17 |
|---|---|
| 태태개발일지 - lang smith 분석법 (0) | 2026.05.08 |
| 태태개발일지 - 머신러닝( 모델 평가) (0) | 2026.04.24 |
| 태태개발일지 - 쿼드란트 벡터 db 구축 처음부터 끝까지 (0) | 2026.04.22 |
| 태태개발일지 - 자연어처리(FFN, RNN 등장) (0) | 2026.04.11 |