On the journey of
[AWS 사전공인교육] 5.AWS에서 ChatGPT 구현하기(2) (5-3.Cloud9-Langchain을 이용한 GPT 서비스~5-4.Cloud9 -ChatGPT Data Aware) 본문
Experiences & Study/AWS
[AWS 사전공인교육] 5.AWS에서 ChatGPT 구현하기(2) (5-3.Cloud9-Langchain을 이용한 GPT 서비스~5-4.Cloud9 -ChatGPT Data Aware)
dlrpskdi 2023. 10. 19. 01:55Langchain은 하나 디지털 파워 온 프로젝트에서 사용해본 이후로 제대로 공부해본 적이 없었는데 개인적으로는 그래서 반가웠다 :)
환경 준비
- AWS 서비스 → 검색 → Cloud9
- Create environment
- m5.4xLarge, Amazon Linux2 선택
- 생성 완료되면 생성된 인스턴스 Open
Python 환경 설정
- requirements.txt 생성(아래 코드 참조)
langchain==0.0.165
openai==0.27.6
chromadb==0.3.22
tiktoken==0.4.0
2. pip 로 python 3rd party library 설치 (터미널에서 아래 명령어 실행)
pip install -r requirements.txt
2-1. 도중에 No space left of device 오류가 발생하면 python 3rd party library 설치에 device 공간이 부족하여 오류가 발생한 것이므로 공간을 늘려야 함!
3. 공간 늘리고 다시 pip install -r requirements.txt 명령어로 설치
: 아래와 같이 나오면 정상적으로 설치된 것
소스 코드
- chatGPT 에 물어볼 기사 내용이나 특정 정보를 입력함
- root 경로에 article.txt 파일을 생성하고 특정 기사 내용을 입력함
- 기사 sample
대한치과협회가 ‘간호법 및 의사면허취소법(의료법 개정안) 폐기’를 요구하는 보건복지의료연대(의료연대) 파업에 동참하기로 한 11일, 우려했던 치과 공백 대란은 발생하지 않았다. 일부 치과가 휴진 안내문을 내걸고 파업에 동참하면서 환자들이 불편을 겪었지만 세계일보가 현장을 살펴본 치과 대부분은 정상 운영했다.
이날 오전 세계일보 취재진은 서울 용산구 치과 20곳을 돌아봤다. 그 결과 단 2곳만이 집회 참여를 위해 휴진한다고 안내했다. 그 중 한곳은 오후에만 휴진했다.
다른 지역에도 파업을 위해 문을 닫은 치과는 많지 않았다. 서울 송파구에서 치과를 운영하는 A씨는 “치과협회의 협조 공문을 받았지만 이미 예약이 많아서 휴진할 수 없다”면서 “내 코가 석자”라고 말했다. 경기 성남시의 한 치과 원장 B씨는 “간호사법에 찬성하기 때문에 파업에 참여하지 않는다”고 밝혔고, 부산의 한 치과 원장 C씨는 “간호사법과 면허취소법에 모두 반대하는 입장이지만 개인병원이라 휴진은 어렵다”고 밝혔다.
치과 종사자들의 인터넷 커뮤니티에서도 비슷한 분위기가 읽힌다. ‘11일 파업하는 치과가 있느냐’고 묻는 글에 11개의 댓글 중 휴진한다는 글은 한 개 뿐이었다. 나머지는 “원래 목요일은 휴진”이라거나 “전혀 신경쓰지 않는다. 야간까지 진료한다” 등이 주를 이뤘다.
다른 글에도 대부분 “쉬지 않는다”, “파업은 금시초문이다”란 반응이 많았다. “원래 치과는 단합이 잘 안된다”, “치과계 파업은 0.8%도 안될 거다”란 의견도 있었다.
앞서 지난달 29일 대한치과협회는 대의원 총회를 열고 파업을 결의했다. 이어 전국 치과에 공문을 보내 11일 휴진하고 집회에 참여해 줄 것을 요청했다.
박태근 치과협회장은 “전국 치과의 80∼90%인 2만여곳이 휴진할 것으로 예상한다”고 밝힌 바 있다.
치과에서 일하는 간호사 인력은 매우 적기 때문에 치과는 간호법과 큰 관련이 없다. 그런데도 대한의사협회, 대한간호조무사협회 등 13개 단체가 참여하는 의료연대에 합류한 까닭은 간호법과 함께 통과된 ‘의사면허취소법’을 저지하기 위해 힘을 합치려는 의도로 풀이된다.
지난달 27일 국회 본회의에서 통과된 의료법 개정안에는 의료인이 중범죄(금고형 이상)를 저지를 경우 최대 5년까지 의사 면허를 취소하는 내용이 포함됐다.
현행법은 의료관계법령 위반 범죄행위만 의료인 결격 및 면허취소 사유로 규정하고 있어, 강력범죄나 성폭력범죄를 저지른 의료인이 계속 의료행위를 할 수 있다는 지적을 받아왔다. 이 때문에 법안 처리를 주도한 야당과 상당수 국민여론은 의료법 개정안을 지지하고 있다.
하지만 의료계는 의료행위와 무관한 사유로 지나치게 긴 기간 불이익을 주는 것은 불합리한 차별이며 직업의 자유를 침해하고 과잉금지 원칙에 위배되는 것이라는 등의 이유를 들어 반대하고 있다.
국제 간호사의 날을 하루 앞둔 11일 서울 용산구 대통령집무실 앞에서 민주노총 공공운수노조 의료연대본부 관계자들이 '간호사 1인당 담당 환자수 법제화'를 위한 간호인력인권법 제정 촉구 기자회견에서 인력충원 거부하는 정부 및 병원 규탄 퍼포먼스를 하고 있다.
의료연대는 지난 3일 1차 연가투쟁에 이어 이날 2차 연가투쟁을 실시하면서 대통령이 법안 거부권을 행사하지 않으면 총파업에 돌입하겠다고 예고했다.
이에 맞서 간호사 단체는 국회를 통과한 간호법을 조속히 공포해 시행해야 한다며 농성을 이어가고 있다.
당분간 의료계 직역간 충돌과 단체행동으로 인한 국민 불편은 지속될 전망이다. 보건복지부는 전날 긴급상황 점검 회의를 열고 의료 공백을 최소화 하도록 필요한 조치를 시행하기로 했다.
2. python code 작성
- root 경로에 test.py 파일 생성하고 아래 코드 입력
import os
os.environ["OPENAI_API_KEY"] = ":+:+:+:your__openai__api__key__here:+:+:+:"
from langchain.indexes import VectorstoreIndexCreator
with open('article.txt') as fr:
direct_texts = fr.read()
from langchain.schema import Document
documents = Document(page_content=direct_texts, metadata={})
index = VectorstoreIndexCreator().from_documents([documents])
while True:
query = input('question : ')
if query == '' or query == 'q':
break
result = index.query(query)
print(result)
3. 터미널에서 아래 명령어 실행
python test.py
4. question: 에 질문을 입력해서 결과 확인.
이때 종료는 ‘q’ 또는 빈값 입력 후 Enter하면 된다.
5-4. Cloud9 - ChatGPT Data Aware
- 특정 데이터(ex: 기사 내용, 가이드..)에 대해서 알려주고, 그 내용 안에서 대답하도록 한다.
- langchain, openai library 사용
- 응용
import os
import streamlit as st
from langchain.indexes import VectorstoreIndexCreator
api_key = st.text_input('openai_api_key')
if api_key:
os.environ["OPENAI_API_KEY"] = api_key
article = st.text_area('article')
if article:
from langchain.schema import Document
documents = Document(page_content=article, metadata={})
index = VectorstoreIndexCreator().from_documents([documents])
query = st.text_input('query')
if article and query:
result = index.query(query)
print(result)
st.write(result)
'Experiences & Study > AWS' 카테고리의 다른 글
[AWS 사전공인교육] 6-1. Lambda-Selenium으로 크롤링하기 (0) | 2023.10.20 |
---|---|
[AWS 사전공인교육] 5. AWS에서 ChatGPT 서비스 구현하기 (1) (1) | 2023.10.13 |
[AWS 사전공인교육] 4. AWS의 서비스 종류 (0) | 2023.10.11 |
[AWS 사전공인교육] Streamlit 활용하기 (2) (1) | 2023.10.07 |
[AWS 사전공인교육] Streamlit 활용하기 (1) (1) | 2023.10.04 |