랭체인이란?
LangChain is a framework for developing applications powered by large language models (LLMs).
→ LangChain은 대형 언어 모델(LLM)에 의해 구동되는 애플리케이션을 개발하기 위한 프레임워크입니다.
* powerd by : 구동되는,제공되는
주제 : 식사 메뉴 추천 받기
내용 : 아침,점심,저녁 등 메뉴 추천해달라고 하고 추천 받기.
1. 파이썬 설치 (https://www.python.org) - 버전 상관 없음.
2. vsCode 설치(https://code.visualstudio.com)
3. openai API 코드 받기 (유료) (https://platform.openai.com)
4. openai 설치 (pip로)
5. 랭체인설치 (pip로)
6. streamlit 설치 (pip로)
파이썬 설치

1) Add python.exe to PATH 체크
2) Customize installation 클릭
3) 다음 화면에서는 모두 선택하고 진행
vsCode 설치

1) 편집기 최강! 무료임, 다운로드 받아서 설치. 확장프로그램도 쉽게 깔수 있음.
2) 확장프로그램에 들어가서 phthon 설치 할것

openai API 코드 받기
1) 로그인 한 후에 https://platform.openai.com/settings/organization/billing/overview 화면으로 진입.
2) Billing > Add payment details 메뉴로 들어가면 카드 정보를 등록할 수 있는 팝업이 뜬다. 국내전용 카드는 안됨.... VISA 로 하니까 되더라~

3) API 키 생성하기 https://platform.openai.com/api-keys 화면으로 들어가서 [ + Create new secret key ] 버튼 클릭!

4) 키값을 잘 보관해 둔다. 복사는 최초 한번 밖에 안됨. 나중에 코드에서 써먹을 것임~

본격적으로다가 코딩을 시작해 보자!!!
1) 프로젝트 담을 폴더 생성 후 vscode에서 폴더 열어준다.
tip! 해당 폴더까지 들어와서 cmd 치고 명령 프롬프트에서 code . 을 쓰고 엔터 치면 vscode 바로 열림.

2) pip로 install 할것들 vscode 터미널 열어서 아래 3가지 인스톨 한다.
- python-dotenv(선택)
- openai
- 랭체인
- streamlit

환경변수에 아까 발급 받은 API 키를 보관해서 쓰려면
1. .env 파일을 생성하고 코드를 삽입해준다
1-1) .env 파일을 열어서 아래처럼 API 키값을 입력하고 저장한다

OPENAI_API_KEY=API 키 값 작성
1-2). python-dotenv를 설치한다
pip install python-dotenv
1-3) main.py 파일 생성하고 아래 코드를 작성한다
#환경변수 호출
from dotenv import load_dotenv
load_dotenv()
2. 랭체인,openai를 설치한다
pip install -U langchain-community langchain-openai
pip install openai
3. 코드 작성하고 결과값 출력하기
#환경변수 호출
from dotenv import load_dotenv
load_dotenv()
import os
import sys
from langchain_openai import OpenAI
# 콘솔 인코딩 설정을 UTF-8로 변경
sys.stdout.reconfigure(encoding='utf-8')
# OpenAI LLM 인스턴스 생성
llm = OpenAI()
result = llm.invoke("오늘 저녁 뭐먹지? 추천해줘")
print(result)
결과

저녁추천 해주는 테스트 해봄. 잘 추천해 주는구만.
이제 streamlit 을 이용해서 웹화면에서 보이도록 하는 작업을 해보자.
streamlit이란
A faster way to build and share data apps
→데이터 앱을 더 빠르게 만들고 공유하는 방법
All in pure Python. No front‑end experience required.
Streamlit은 데이터 스크립트를 몇 분 만에 공유 가능한 웹 앱으로 변환합니다.
오직 순수 파이썬으로만 가능합니다. 프론트엔드 경험이 필요 없습니다.
파이썬을 웹에 표현하려면 플라스크나 장고를 배워서 했어야 했는데.... 스트림릿을 이용하면 별도로 랭귀지를 배우지 않아도 된다. 이미 파이썬으로 다 만들어져 있는 라이브러리다.
우리는 그저 가져다 쓰기만 하면 된다!! 유~후
바로 테스트 해보자. Let's get it~
1. streamlit 을 설치하자
pip install streamlit
2. 코드를 작성한다
import streamlit as st
st.title('This is a title')
st.title('_Streamlit_ is :blue[cool] :sunglasses:')
스타트시켜서 웹에서 내용 보기
D:\study\langchain\poet> streamlit run main.py
아래 화면 처럼 보임

내가 원하는 구성으로 바꿔보기
- 타이틀
- 입력폼 : 먹고 싶은 식사 때
- 스피너 : 결과값 가져오는 동안 로딩바를 돌린다
- 결과값 출력






드디어~ 토큰이 모지라서.... 글은 좀 잘리지만~ 일단 노출 성공!

여기까지 소스 정리
진짜 몇줄 코드 안쓰고도 나만의 ai 만듦...
마트 정보를 연결해서 바로 구매로 연결해도 좋을것 같고....
#환경변수 호출
from dotenv import load_dotenv
load_dotenv()
# import os
import sys
import streamlit as st
import time
from langchain_openai import OpenAI
# 콘솔 인코딩 설정을 UTF-8로 변경
sys.stdout.reconfigure(encoding='utf-8')
# OpenAI LLM 인스턴스 생성
llm = OpenAI()
st.title('오늘 뭐 먹지?')
content = st.text_input("언제 먹을 메뉴를 고르고 있나요?", "오늘 저녁")
st.write(content,"에 먹을 메뉴를 추천해 드리겠습니다. 추천 버튼을 클릭하세요" )
if st.button("추천하기"):
with st.spinner('Wait for it...'):
result = llm.invoke(content+" 뭐먹지? 메뉴 하나 추천해주고, 레시피도 알려줘")
st.write(result)
# result = llm.invoke(content+" 뭐먹지? 추천해주고, 레시피도 알려줘")
# print(result)
Stremlit은 클라우드도 무료로 제공하고 있으니까 실제 웹서비스 처럼 올려본다.
1. 깃허브 계정이 있어야함.
2. 깃허브에 올려두고 연결.
2-1 레포지토리를 등록하고
깃허브에 로그인 하면 아래 화면이 나오는데, 초록색 new 버튼을 클릭해서 레포지토리를 등록한다.


2-2 위에서 만든 파일 두개를 업로드 한다. 환경변수는 주석처리하고 main.py파일과, requirements.txt 파일을 업로드.
3. streamlit cloud 사이트에서(https://streamlit.io/cloud) 로그인 한 후에 Create app을 클릭하면 깃허브에 올려둔 소스코드를 연결할 수 있다.

3-1 create app 버튼을 클릭하고 들어오면 web app 정보를 등록할 수 있는 공간이 나온다.
위에서 부터 차례대로, 소스를 올려놓은 레포지토리 선택(깃허브에 내가 만들어둔 레포지토리가 셀렉트 박스로 제공된다.)
main.py 파일명으로 수정, Advanced settings 클릭해서 openapi key 값을 입력한다.
키값 입력할 때 양식은 아래와 같이 해준다.

마지막으로 Deploy! 클릭하면 간단하게 배포가 끝난다!!!

나의 웹앱을 공유하고 싶지 않다면 Settings 메뉴로 들어가서 Sharing 메뉴를 변경하면 된다.
그런데 only specific은 계정당 하나 밖에 안되는 것 같다.


최종 완성!!
https://rcmdmenu.streamlit.app/
App URL 부분에서 작성했던것이 도메인이 되어 이제 웹에서도 볼 수 있다.
Streamlit 매력이쒀~ 블로그 대신 여기다 작업을 해볼까? 공짜고 ai 관련 공부도 실컷 할 수 있을 것 같으니~
틈새영어공부
아니 chatGPT가 동시통역도 해준다는데 왜 난 영어공부를 더 해야 할것 같지? 아놔.....
OpenAI is American artificial intelligence (AI) research laboratory consisting of the non-profit OpenAI Incorporated and its for-profit subsidiary corporation OpenAI Limited Partnership. OpenAI conducts AI research with the declared intention of promoting and developing a friendly AI. OpenAI systems run on an Azure-based supercomputing platform from Microsoft.
The OpenAI API is powered by a diverse set of models with different capabilities and price points.
ChatGPT is the Artificial Intelligence (AI) chatbot developed by OpenAI.
→ OpenAI는 비영리 단체 OpenAI Incorporated와 그 자회사인 영리 법인 OpenAI Limited Partnership으로 구성된 미국의 인공지능(AI) 연구소입니다. OpenAI는 우호적인 AI를 촉진하고 개발하려는 명확한 의도로 AI 연구를 수행합니다. OpenAI 시스템은 Microsoft의 Azure 기반 슈퍼컴퓨팅 플랫폼에서 실행됩니다.
OpenAI API는 다양한 기능과 가격대를 가진 모델 세트를 통해 제공됩니다.
ChatGPT는 OpenAI에서 개발한 인공지능(AI) 챗봇입니다.
참내 길지도 않은 문장이 왜케 어려운지... ㅡㅡ;
*research laboratory : 연구소, 과학적 연구를 수행하는 시설이나 조직
예문: They work at a research laboratory focused on AI. (그들은 AI에 중점을 둔 연구소에서 일하고 있습니다.)
*consisting of : ~으로 구성된
예문: The team is consisting of experts from various fields. (그 팀은 다양한 분야의 전문가들로 구성되어 있습니다.)
*non-profit : 비영리의, 수익을 목적으로 하지 않는
예문: The organization operates as a non-profit entity. (그 조직은 비영리 단체로 운영됩니다.)
*Incorporated : 법인화된, 주식회사 (Inc. 또는 Incorporated는 법인 기업을 의미)
예문: OpenAI Incorporated is the non-profit arm of OpenAI. (OpenAI Incorporated는 OpenAI의 비영리 부문입니다.)
*for-profit :영리의, 수익을 추구하는
예문: For-profit companies aim to generate revenue. (영리 기업들은 수익을 창출하는 것을 목표로 합니다.)
*subsidiary : 자회사, 모회사에 의해 소유된 회사
예문: The company has several subsidiaries. (그 회사는 여러 자회사를 가지고 있습니다.)
*Limited Partnership : 유한 책임 파트너십, 일반 파트너와 유한 책임 파트너로 구성된 파트너십 형태
예문: OpenAI Limited Partnership is the for-profit arm of OpenAI. (OpenAI Limited Partnership은 OpenAI의 영리 부문입니다.)
*conducts : 수행하다, 실시하다
예문: The company conducts various research projects. (그 회사는 다양한 연구 프로젝트를 수행합니다.)
*the declared intention : 명시된 의도
예문: The declared intention of the project is to reduce carbon emissions. (그 프로젝트의 명시된 의도는 탄소 배출을 줄이는 것입니다.)
- declared: 선언된, 명시된
- intention: 의도, 목적
*of promoting : 촉진하는, 장려하는
예문: They are in charge of promoting the new product. (그들은 신제품을 촉진하는 일을 맡고 있습니다.)
- promoting: 촉진하다, 장려하다의 현재분사형
*diverse : 다양한
예문: The company offers a diverse range of products. (그 회사는 다양한 제품을 제공합니다.)
*capabilities : 능력, 기능
예문: The software has many advanced capabilities. (그 소프트웨어는 많은 고급 기능을 가지고 있습니다.)
*price points : 가격대, 가격 수준
예문: The store offers products at various price points. (그 가게는 다양한 가격대의 제품을 제공합니다.)
'AI Study > 랭체인' 카테고리의 다른 글
| streamlit sidebar 추가하기 (0) | 2024.05.28 |
|---|
댓글