그냥 붙여 넣어도 되지만 To Do List이기 때문에 하기 코드와 같이 항목을 두 개 더 추가하고 체크박스가 모두 체크되면 "You did EVERYTHING! 👍🏻"이 출력되도록 하였습니다.
또한 To Do List라는 제목을 가장 상단에 표시되도록 하고 색은 무지개 색으로 보이도록 코드를 추가해 주었습니다.
import streamlit as st
st.title(':rainbow[To Do List] :rainbow:')
work = st.checkbox('Work')
gym = st.checkbox('Go to gym')
book = st.checkbox('Read a book')
if work and gym and book:
st.write('You did EVERYTHING! :thumbsup:')
코드를 작성한 후 [Ctrl + s] 버튼을 눌러 변경 사항을 저장합니다.
그 후streamlit run test.py명령어를 실행합니다.
웹 페이지가 실행되면서 하기 스크린샷과 같은 페이지가 보입니다.
체크 박스를 다 누르면 "You did EVERYTHING! 👍🏻"이라는 문구가 출력되는 것을 확인할 수 있습니다.
참고로 Streamlit에서 지원하는 emoji의 shortcode들에 대한 정보는 하기 링크에서 확인하실 수 있습니다.
다음은 LangChain을 사용하여 LLM app을 생성하는 테스트를 진행해 보도록 하겠습니다.
LangChain❓ LLM❓이 무엇일까요?
우선 이 두 가지 개념에 대해서 간단히 설명하고 넘어가도록 하겠습니다.
LangChain이란?
LangChain은 대규모 언어 모델(LLM)을 기반으로 한 애플리케이션을 개발하기 위한 오픈 소스 프레임워크입니다. 개발자들이 기존의 언어 모델을 쉽게 연동하고 확장할 수 있도록 다양한 도구와 인터페이스를 제공합니다. 따라서 LangChain은 특히 대화형 AI 시스템을 구축하는 데 많이 사용되고 있습니다.
LLM이란?
LLM(Large Language Models)은 대규모 언어 모델을 의미하며, 대량의 데이터셋을 학습하여 자연어 이해 및 생성 능력을 갖춘 모델입니다. 딥러닝 방식으로 패턴을 분석하고 의미를 추출하여 인간의 방식으로 답을 생성하도록 훈련되었습니다. OpenAI의 ChatGPT, 메타(구 페이스북)의 LLaMA와 같은 모델이 대표적인 LLM 모델입니다.
주요 개념에 대해서 알아 보았으니 지금부터 LangChain을 사용하는 LLM app을 생성해 보도록 하겠습니다.
Streamlit Docs 중 "Build an LLM app using LangChain" 문서를 참고하여 생성합니다.
하기와 같은 페이지가 뜨면 [+ Create new secret key]를 클릭하여 새로운 API Key를 생성합니다.
API Key의 이름을 입력한 후 [Create secret key] 버튼을 클릭합니다.
하기 스크린샷과 같이 API Key가 출력되면 [Copy] 버튼을 클릭하여 해당 Key를 복사합니다.
(해당 키는 해당 창을 나가면 다시 볼 수 없기 때문에 꼭 메모장과 같은 곳에 저장해 두어야 합니다.)
정상적으로 생성이 되면 하기와 같이 Project API keys 리스트에 방금 생성한 API Key가 출력되게 됩니다.
다시 Visual Studio Code로 돌아와pip install openai langchain명령어를 입력하여 필요한 Python 라이브러리를 설치합니다. (Streamlit은 이미 설치했기 때문에 생략합니다.)
그 다음 현재 폴더에 requirements.txt라는 파일을 생성합니다.
그리고streamlit openai langchain를 해당 파일에 적어 줍니다.
app.py 파일에 하기 코드를 입력해 줍니다.
import streamlit as st
from langchain.llms import OpenAI
st.title('🦜🔗 Quickstart App')
openai_api_key = st.sidebar.text_input('OpenAI API Key', type='password')
def generate_response(input_text):
llm = OpenAI(temperature=0.7, openai_api_key=openai_api_key)
st.info(llm(input_text))
with st.form('my_form'):
text = st.text_area('Enter text:', 'What are the three key pieces of advice for learning how to code?')
submitted = st.form_submit_button('Submit')
if not openai_api_key.startswith('sk-'):
st.warning('Please enter your OpenAI API key!', icon='⚠')
if submitted and openai_api_key.startswith('sk-'):
generate_response(text)
코드에 대해 간략하게 설명을 해보자면 다음과 같습니다.
Line 1, 2를 통해 필요한 Python 라이브러리를 import 합니다.
Line 4를 통해 페이지의 제목을 적어줍니다.
Line 6을 통해 OpenAI API Key를 입력할 수 있는 input text box를 생성합니다.
Line 8-10을 통해 OpenAI API Key를 가지고 Open AI에 인증하고, prompt를 보내고 AI가 생성한 응답을 받을 수 있도록 하는 함수를 정의합니다. 이 함수는 user의 요청을 받아 AI가 생성한 응답을 st.info를 사용하여 파란색 박스에 출력하도록 하는 함수입니다.
마지막으로 Line 12-18에서 st.form()을 사용하여 사용자 입력을 위한 text box를 생성합니다. st.text_area()를 사용자가 Submit이라는 버튼을 클릭하면,사용자의 입력을 인수로 사용하는generate-response()라는 함수가 호출됩니다.
파일을 저장한 후streamlit run app.py명령어를 실행합니다.
웹 페이지가 실행되면서 하기와 같은 화면이 출력됩니다.
앞서 생성한 OpenAI API Key를 좌측 상단의 [OpenAI API Key] 박스에 입력한 후 질문을 입력합니다.
"What is a dog?"라는 질문에 대한 대답이 하기 스크린샷과 같이 파란색 박스 안에 출력되는 것을 알 수 있습니다.
2.3 간단한 app 만들어 보기
마지막으로 문장을 입력하면 image를 생성해 주는 app에 대한GitHub 소스 코드를 clone 해서 애플리케이션을 build 해 보겠습니다.
설치가 완료되면 하기 스크린샷에 있는 "OPENAI_API_KEY"라는 변수에 대한 값을 입력해 주기 위해현재 폴더 내에.env라는 파일을 하나 생성합니다.
그리고 .env 파일에 다음과 같이 작성합니다.
Key 값은 2.2 과정에서 사용했던 OpenAI API Key를 입력해 주면 됩니다.
파일을 저장한 후에 터미널에서streamlit run app.py명령어를 실행합니다.
만약 웹 페이지 실행 시하기와 같은 에러가 발생할 경우,
OSError: [WinError 126] The specified module could not be found. Error loading "C:\Users\hyein\AppData\Local\Programs\Python\Python312\Lib\site-packages\torch\lib\c10.dll" or one of its dependencies.