1. Streamlit
파이썬으로 데이터 분석을 위한 웹앱을 쉽게 개발할 수 있게 도와주는 라이브러리입니다.
간단한 코드로 웹 애플리케이션을 만들고 빠르게 프로토타입을 구축하고 시각적으로 공유하기 위해 사용합니다.
설치 pip install streamlit
설치 확인 및 데모 확인 streamlit hello
입력했을 때, 처음엔 이메일을 입력하라고 안내가 뜹니다. 이메일을 입력했을 때 Streamlit창이 열리면 설치 완료입니다.
실행 streamlit run app.py
https://streamlit.io/
import streamlit as st
st.title('Hello World!')
st.write('여기는 텍스트 구간')
"""
# 여기는 제목
## 여기는 작은 제목
- 첫번째
- 두번째
- 세번째
"""
# 주석문을 쓰고 내용을 입력하면 마크다운으로 입력 가능
text = st.text_input("text input")
st.write(text)
selected = st.checkbox("개인정보 사용에 동의하시겠습니까?")
if selected:
st.success("동의했습니다!")
market = st.selectbox('시장', ('코스닥', '코스피', '나스닥'))
st.write(f"selected market: {market}")
options = st.multiselect('종목', ['카카오', '네이버', '삼성', '정다운'])
st.write(', '.join(options))
st.metric(label="카카오", value="40000원", delta="1000원")
2. ChatGPT
ChatGPT는 OpenAI에서 개발한 대화형 인공 지능 모델 중 하나입니다. 모델이 대규모 텍스트 데이터를 학습하고 그 학습 결과를 기반으로 문장을 생성하거나 이해하는 데 사용됩니다. ChatGPT는 이러한 GPT 모델 중에서도 대화형 응용에 특화된 버전으로, 사용자와의 대화를 주로 다룹니다.
ChatGPT는 대화에서 나오는 문맥을 이해하고, 자연어 처리와 생성 모델을 결합하여 사용자의 입력에 응답하는 등 다양한 대화 상황에서 활용될 수 있습니다. 하지만 ChatGPT는 특정 시점의 정보까지만 알고 있으며, 지식의 최신성은 2022년 1월까지의 것입니다.
[ prompt에 질문 잘 하는 법 ]
1. 영어로 질문
- 기본적으로 영어로 세팅
- 다국어를 이용시 영어에 비해 느리고 정보량이 부족
2. 상황을 구체적으로 기술
- streamlit에 대해 설명해줘 -> 나는 AI 개발자야. 직원을 교육하고 있는데 streamlit에 대해 개념을 설명하는 자료를 만들어줘.
3. 챗GPT에게 역할을 부여
- 너는 스타트업 개발 팀장이야. 팀장처럼 행동해줘. 네가 질문을 하면 내가 대답을 할게. 첫번째 질문을 생성해줘.
[문제]
GPT API를 이용하여 간단한 번역기를 만들어봅니다.
import openai
import streamlit as st
openai.api_key = "https://openai.com/pricing#language-models 사이트에서 발급받은 개인key"
example = {
"한국어":["오늘 날씨 어때","딥러닝 기반의 AI기술이 인기를 끌고있다"],
"영어":["How is the weather today","AI technology based on deep learning is gaining popularity"],
"일본어":["今日の天気はどう","ディープラーニング基盤のAI技術が人気を集めている"]
}
def translate_text_using_chatgpt(text, src_lang, trg_lang):
# 번역을 돌리기 전에 간단한 예시를 통해 gpt에 원하는 바를 좀 더 구체적으로 입력하게끔
# 예시 만드는 함수를 내부에 만듬
def build_fewshot(src_lang, trg_lang): # 한국어, 영어일 경우
src_examples = example[src_lang]
trg_examples = example[trg_lang]
fewshot_messages = []
# {"role": "user", "content": }{"role":"assistant", "content": }는 gpt가 요구하는 질문형식
for src_text, trg_text in zip(src_examples,trg_examples):
# example에 있는 문장 하나씩 text로 들어감.
fewshot_messages.append({"role": "user", "content": src_text})
fewshot_messages.append({"role":"assistant", "content": trg_text})
return fewshot_messages
번역을 돌리기 전에 gpt에게 좀 더 정확하게 원하는 답을 얻기 위해 간단한 예시를 만드는 함수를 번역 함수 내부에 만들어줍니다. src_lang을 한국어, trg_lang을 영어로 설정하면 예시에는 아래와 같은 문장들이 담기게 됩니다.
src_examples = ["오늘 날씨 어때","딥러닝 기반의 AI기술이 인기를 끌고있다"]
trg_examples= ["How is the weather today","AI technology based on deep learning is gaining popularity"]
{"role": "user", "content": }{"role":"assistant", "content": }는 gpt에게 입력할 질문 형식입니다.
import openai
import streamlit as st
openai.api_key = "https://openai.com/pricing#language-models 사이트에서 발급받은 개인key"
example = {
"한국어":["오늘 날씨 어때","딥러닝 기반의 AI기술이 인기를 끌고있다"],
"영어":["How is the weather today","AI technology based on deep learning is gaining popularity"],
"일본어":["今日の天気はどう","ディープラーニング基盤のAI技術が人気を集めている"]
}
def translate_text_using_chatgpt(text, src_lang, trg_lang):
def build_fewshot(src_lang, trg_lang): # 한국어, 영어일 경우
src_examples = example[src_lang]
# src_examples = ["오늘 날씨 어때","딥러닝 기반의 AI기술이 인기를 끌고있다"]
trg_examples = example[trg_lang]
# trg_examples=
["How is the weather today","AI technology based on deep learning is gaining popularity"]
fewshot_messages = []
# {"role": "user", "content": }{"role":"assistant", "content": }는 gpt가 요구하는 질문형식
for src_text, trg_text in zip(src_examples,trg_examples):
# example에 있는 문장 하나씩 text로 들어감.
fewshot_messages.append({"role": "user", "content": src_text})
fewshot_messages.append({"role":"assistant", "content": trg_text})
return fewshot_messages
#gpt에게 입력할 명령문
system_instruction = f"assistant는 번역앱으로서 동작한다.
{src_lang}을 {trg_lang}으로 적절하게 변역하고 번역된 텍스트만 출력한다."
# 위에 만들어둔 예시 함수 실행
fewshot_messages = build_fewshot(src_lang=src_lang, trg_lang=trg_lang)
messages = [{"role": "system", "content": system_instruction}, *fewshot_messages, {"role":"user", "content": text}]
response = openai.chat.completions.create(
model = "gpt-3.5-turbo",
messages= messages
)
# print(response)
return response.choices[0].message.content
# streamlit 이용
st.title("간단 번역 서비스")
text = st.text_area("번역할 내용을 입력하세요", "")
src_lang = st.selectbox("번역 전 언어",["영어", "일본어", "한국어"])
trg_lang = st.selectbox("번역 후 언어",["한국어", "일본어", "영어"])
if st.button("번역하기"):
translated_text = translate_text_using_chatgpt(text, src_lang, trg_lang)
st.success(translated_text)
완성된 번역 함수 모습입니다!!
'파이썬' 카테고리의 다른 글
파이썬 예외처리 (0) | 2023.09.17 |
---|---|
파이썬 스페셜 메소드 (0) | 2023.09.17 |
파일 입출력 라이브러리2 (0) | 2023.09.14 |
파일 입출력 라이브러리 (0) | 2023.09.14 |
super()메소드와 다중상속 (0) | 2023.09.13 |