Python

openAI API, Text & Image 생성 예제

강의소개

소스 참조

  • 후루카와 히데카즈 저/트랜스메이트 역. (2023). GPT-4, ChatGPT, 라마인덱스, 랭체인을 활용한 인공지능 프로그래밍 한권으로 끝내는 OpenAI API 기반 LLM 애플리케이션 구축. 위키북스, 판매처 : https://www.yes24.com/Product/Goods/122533123

라이브러리 설치

  • openai 패키지를 설치한다.
!pip install openai
Collecting openai
  Obtaining dependency information for openai from https://files.pythonhosted.org/packages/26/a1/75474477af2a1dae3a25f80b72bbaf20e8296191ece7fff2f67984206f33/openai-1.12.0-py3-none-any.whl.metadata
  Downloading openai-1.12.0-py3-none-any.whl.metadata (18 kB)
.
.
.
[notice] A new release of pip is available: 23.2.1 -> 24.0
[notice] To update, run: python.exe -m pip install --upgrade pip

환경변수 준비

  • python-dotenv를 설치 한다.
!pip install python-dotenv
Collecting python-dotenv
  Obtaining dependency information for python-dotenv from https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl.metadata
  Downloading python_dotenv-1.0.1-py3-none-any.whl.metadata (23 kB)
Downloading python_dotenv-1.0.1-py3-none-any.whl (19 kB)
Installing collected packages: python-dotenv
Successfully installed python-dotenv-1.0.1

[notice] A new release of pip is available: 23.2.1 -> 24.0
[notice] To update, run: python.exe -m pip install --upgrade pip

.env 파일 저장

  • .env 파일 생성 후, OpenAI Key값을 아래와 같이 저장한다.
OPENAI_API_KEY = 'your_id'

저장한 값 불러오기

  • OPENAI_API_KEY를 불러오고 싶다면 다음 코드를 사용한다.
import dotenv
import os
env_file = dotenv.find_dotenv()
dotenv.load_dotenv(env_file)
print(os.environ['OPENAI_API_KEY'])
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

프롬프트 준비

  • 여러줄에 걸친 문자열 정의
prompt = '''다음 이야기를 써주세요기타를 좋아하지만 컴맹인 여고생이 어떤 계기로 록밴드에 가입하고, 낯선 인간관계를 통해 활동하게 되는 이야기'''
import os
from openai import OpenAI
client = OpenAI(
    # This is the default and can be omitted    api_key=os.environ.get("OPENAI_API_KEY"),
)
response = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "이 채팅은 좋습니다. 남동생과 대하를 하겠습니다. "},
    {"role": "user", "content": "안녕"},
    {"role": "assistant", "content": "남동생은 현재 컴퓨터를 하고 있습니다."},
    {"role": "user", "content": "너 지금 뭐하고 있어?"}
  ],
   temperature=0)
response.choices[0].message.content
'남동생은 지금 사용자와 대화하고 있습니다. 대하를 하고 있습니다.'

이미지 생성

from openai import OpenAI
client = OpenAI(
    # This is the default and can be omitted    api_key=os.environ.get("OPENAI_API_KEY"),
)
response = client.images.generate(
  model="dall-e-3",
  prompt="cat dancing on car",
  size="1024x1024",
  quality="standard",
  n=1,
)
image_url = response.data[0].url
image_url
'https://oaidalleapiprodscus.blob.core.windows.net/private/org-znknr4OkH2n7N79B7CFhmUj9/user-fyfrdMeg75Lew6QIXrb6JCzr/img-QI9YCiwm7w4N99SeSaFuverT.png?st=2024-02-27T05%3A20%3A01Z&se=2024-02-27T07%3A20%3A01Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2024-02-26T20%3A01%3A40Z&ske=2024-02-27T20%3A01%3A40Z&sks=b&skv=2021-08-06&sig=O9MYsIZUoSy2jjDjTVLeHbhPGyWtnHP%2BfFEJUgVNSvU%3D'

st-pages 라이브러리 소개

강의소개

개요

  • Streamlit 생태계에 기반한 Components를 살펴본다.
  • st-pages 라이브러리를 확인한다.

Components

  • Components는 Streamlit Community와 Creators가 직접 개발한 Streamlit 관련 라이브러리를 말한다.
  • 여기에는 다양한 라이브러리들이 존재한다.

Untitled

활용법 주의

Untitled

OpenAI API 인증키 발급

강의소개

개요

  • OpenAI API 인증키 발급
  • OpenAI 회원가입을 이미 한 것으로 전제

인증키 발급

Untitled

  • API를 선택한다.

Untitled

  • 왼쪽 메뉴에서 API Keys를 선택한다.

Untitled

  • API Key 획득을 위해 Create New Secret Key 버튼을 클릭한다.

Untitled

creating multipages in streamlit web using official docs

강의소개

개요

Streamlit에서 multipage란 무엇인가?

  • 앱의 크기가 커질수록 다중 페이지 구성은 관리와 탐색의 용이성을 제공함.
  • Streamlit은 이를 쉽게 가능하게 하며, 클릭 한 번으로 해당 페이지에 빠르게 이동할 수 있다.

폴더 및 파일 구조

  • Home.py 파일을 만든 후에는 엔트리포인트 파일과 관련된 pages/about.py 파일을 만들어 페이지를 추가할 수 있다. 다음은 다중 페이지 앱에 유효한 디렉토리 구조는 아래와 같다.

Screenshot 2024-02-25 at 11.44.33 AM.png

django tutorial - pyburger 3

공지

  • 멀티캠퍼스 수업 보조자료로 활용하기 위해 아래 교재 내용을 발췌하였음을 알립니다.

Untitled

Github에서 프로젝트 내려받기

Untitled

  • 다음 명령어를 실행하여 Local의 적당한 곳에서 다운로드 받는다.

폴더 수정

  • .DS_Store 파일은 삭제한다
  • 폴더명은 pyburger로 변경한다.

Untitled

VS Code로 폴더 열기

  • 아래와 같이 VS Code로 pyburger 폴더를 연다.

Untitled

프로젝트 설정

  • 가상환경을 설정하고 django를 설치한다.
$ virtualenv venv
$ source venv/Scripts/activate
(venv) $ pip install 'django<5'

첫번째 확인사항

  • runserver를 실행하여 정상적으로 작동하는지 확인한다.
(venv) $ python manage.py runserver

Untitled

django tutorial - pyburger 2

공지

  • 멀티캠퍼스 수업 보조자료로 활용하기 위해 아래 교재 내용을 발췌하였음을 알립니다.

Untitled

별도의 app 추가

  • application을 생성하는 명령어를 활용하여 app을 생성한다.
python manage.py startapp burgers
  • 트리 구조는 다음과 같다.
$ tree -L 2
.
|-- burgers
|   |-- __init__.py
|   |-- admin.py
|   |-- apps.py
|   |-- migrations
|   |-- models.py
|   |-- tests.py
|   `-- views.py
|-- config
|   |-- __init__.py
|   |-- __pycache__
|   |-- asgi.py
|   |-- settings.py
|   |-- urls.py
|   |-- views.py
|   `-- wsgi.py
|-- db.sqlite3
|-- manage.py
|-- templates
|   |-- burger_list.html
|   `-- main.html
`-- templates.zip

새 Application을 Django 등록

  • confing/settings.py 에서 INSTALLED_APPS 리스트에 아래와 같이 추가
INSTALLED_APPS = [
    "burgers", 
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
]

Model 클래스 구현

  • Model 클래스 정의하기 전에 햄버거를 나타낼 수 있는 정보를 몇 가지 정리한다.
    • 이름
    • 가격
    • 칼로리
  • burgers/models.py 에서 아래와 같이 코드를 생성한다.
from django.db import models

# Create your models here.
class Burger(models.Model):
    name  = models.CharField(max_length=20)
    price = models.IntegerField(default=0)
    calories = models.IntegerField(default=0)

데이터베이스 마이그레이션

  • 새로운 테이블을 만들기 위해 다음 명령어를 사용한다.
python manage.py migrate

Untitled

django tutorial - pyburger 1

Django Pyburger - 1, 맛보기

공지

  • 멀티캠퍼스 수업 보조자료로 활용하기 위해 아래 교재 내용을 발췌하였음을 알립니다.

Untitled

Django 설치

  • 터미널에서 django를 설치한다.
pip install 'django<5'

Untitled

Django 버전 확인

  • 터미널에서 Django의 버전을 확인한다.
django-admin --version
4.2.9

Django 프로젝트 생성

  • 다음 명령어를 실행하여 django 프로젝트를 생성한다.
  • djang-admin은 터미널에서 실행할 수 있는 프로그램이며, django 프로젝트를 관리하는 여러 기능들을 가지고 있음
  • startproject는 django 프로젝트의 기반 구조를 만드는 기능
django-admin startproject config .
$ tree -L 2
.
|-- README.md
|-- config
|   |-- __init__.py
|   |-- asgi.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
|-- manage.py
`-- venv
    |-- Lib
    |-- Scripts
    `-- pyvenv.cfg

4 directories, 8 files

개발용 서버 동작 확인

  • 명령어는 다음과 같다.
    • 이 때 manage.py 가 있는 프로젝트 경로에서 실행해야 한다.
python manage.py runserver

Untitled

kaggle 한글폰트 적용

개요

  • 캐글에서 한글폰트를 적용하는 방법에 대해 알아본다.
  • 가장 간편한 방법은 폰트를 업로드 한 뒤 업데이트 하는 방식이다.

폰트 확인

  • 폰트는 아래 사이트에서 다운로드 받는다.
  • 사이트 : https://hangeul.naver.com/font
  • 여기에서 나눔글꼴을 다운로드 받았다.

Untitled

폰트 압축풀기

  • 다운로드 폰트를 압축 풀기 하면 매우 다양한 폰트가 확인이 된다.
  • 여기에서 나눔스퀘어 > NanumFontSetup_TTF_SQUARE 파일에서 폰트 목록을 확인한다.

Untitled

폰트 업로드

  • 이제 현재 사용하는 캐글 노트북에 추가한다.
  • 임의의 font 폴더명을 입력했다.

Untitled

  • Create 버튼을 클릭한다.

Untitled

  • 업로드 이후에 폴더에 폰트가 들어간 것을 확인한다.

Untitled

statsmodels를 활용한 회귀분석 (feat. 범주형 데이터)

개요

  • statsmodels를 활용하여 범주형 데이터가 포함된 회귀식을 산정해본다.
  • 범주형 데이터의 특정 값을 변동하는 방법을 배운다.
  • 더불어서 R로 간단한 회귀식도 만들어보자!

강의소개

라이브러리 확인

import statsmodels
import seaborn as sns 
import pandas as pd

print(statsmodels.__version__) 
print(sns.__version__) 
print(pd.__version__)
0.14.1
0.12.2
1.5.3

데이터 불러오기

  • seaborn에서 tips 데이터를 불러온다.
tips = sns.load_dataset('tips')
tips.head()

Untitled

conda vs virtualenv 라이브러리 관리 비교

개요

  • 파이썬에는 가상환경이 다양하게 존재한다.
  • 이 중, conda와 virtualenv 가상환경에서 라이브러리 관리를 어떻게 하는지 비교를 해보도록 한다.

프로젝트 폴더 생성

  • 폴더명은 virtualTest로 명명했다.

Conda

  • 먼저 가상환경을 만들어본다.
conda create -n virtualTest python=3.10

Untitled

  • conda 가상환경에 접속하는 방법은 다음과 같다.
conda activate virtualTest

Untitled

environment.yml

  • 라이브러리 관리를 위해 아래와 같이 샘플 코드를 생성한다.
name: virtualTest
channels:
  - defaults
dependencies:
  - python=3.10
  - numpy
  - pandas
  - pip:
    - streamlit
  • 실행 코드는 아래와 같다.
conda env create -f environment.yml
  • 라이브러리 추가 설치를 한다.
conda install matplotlib
  • 추가된 라이브러리를 추출한다.
conda env export > env_file.yml
  • 파일을 확인하면 아래와 같이 복잡하게 나타난다.

Untitled