HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
장지원 페이지/
몰입 캠프
몰입 캠프
/
#18. Using AI and Making other Tabs!

#18. Using AI and Making other Tabs!

URL
날짜
Jul 14, 2024
Project
project3
Itme tab flow
→ 우리가 만드는 item 몇 개 집어넣기
 
깃 커밋 방법
notion image
 
Diary Tab 프로토 제작 완료햣
  • user 고유 id 이용해서 diary 내용 불러오기 완료
  • diary 내용 입력하게 할 수 있는 tab 까지 만들었음
→ ToDo: diary 내용 서버 + 리사이클러 뷰에 저장하기 + 보기 더 깔끔하게 하기
Store 구상해 보기
OpenAI API 넣두기
 
내가 생각하는 앞으로의 어려움?
레벨 업 할 때마다 서버에 업데이트 하기 + 차트에 ranking 업데이트하기
→ 창 누를 때 마다 업데이트 되게 하기
체크리스트 00시에 생성되게 하기
store 구현
 

OpenAI API 사용법

[ChatGPT] ChatGPT API 사용하기
[ChatGPT] ChatGPT API 사용하기

[ChatGPT] ChatGPT API 사용하기

ChatGPT API 는 2023년 3월에 출시된 OpenAI의 새로운 서비스이다. ChatGPT 애플리케이션에 직접 접속해서 사용할 수 있지만, API를 사용하면 챗GPT를 앱이나 제품에 쉽게 적용할 수 있다.

Secret Key: sk-proj-Mvq2HLSZo0FmHsOP49hcT3BlbkFJulzKwqczqk6uBZ0ID4wW
 
  1. 키 받기
  1. base 코드 작성하기
    1. import openai # 발급받은 API 키 설정 OPENAI_API_KEY = "sk-proj-Mvq2HLSZo0FmHsOP49hcT3BlbkFJulzKwqczqk6uBZ0ID4wW" # openai API 키 인증 openai.api_key = OPENAI_API_KEY
 

How 코드 작성

내가 지피티한테 한 프롬프팅
import openai # 발급받은 API 키 설정 OPENAI_API_KEY = "sk-proj-Mvq2HLSZo0FmHsOP49hcT3BlbkFJulzKwqczqk6uBZ0ID4wW" # openai API 키 인증 openai.api_key = OPENAI_API_KEY --------------------------------------------------- 이거에 이어서 짜줘. 나는 매일매일 ToDo List를 작성해주는 ai를 만들거야. input는 hero와 그 날의 일기가 될거야 예를 들어 나의 영웅은 아이언맨이야. 그리고 나는 오늘 일기로 "오늘 운동이 너무 재미있었다. 내일은 공부를 할 것이다."를 적을거야
지피티가 짜준 코드
import openai import random # 발급받은 API 키 설정 OPENAI_API_KEY = "sk-proj-Mvq2HLSZo0FmHsOP49hcT3BlbkFJulzKwqczqk6uBZ0ID4wW" # openai API 키 인증 openai.api_key = OPENAI_API_KEY def generate_todo_list(hero, diary_entry): # OpenAI API를 사용하여 ToDo List 생성 response = openai.Completion.create( engine="text-davinci-003", prompt=f"Generate a ToDo list for a person named {hero} based on the following diary entry, in Korean:\n\n{diary_entry}\n\nToDo List (in Korean):", max_tokens=150, n=1, stop=None, temperature=0.7, ) # 응답에서 생성된 ToDo List 추출 todo_list = response.choices[0].text.strip() # ToDo List를 3개의 항목으로 제한 todo_items = todo_list.split('\n')[:3] # 각 항목에 유동적인 시간을 할당 time_options = ["30분", "1시간", "2시간", "45분", "1시간 30분"] todo_items_with_time = [f"{todo_items[i]} ({random.choice(time_options)})" for i in range(len(todo_items))] return '\n'.join(todo_items_with_time) def main(): # 사용자로부터 입력 받기 hero = input("당신의 영웅의 이름을 입력하세요: ") diary_entry = input("오늘의 일기를 입력하세요: ") # ToDo List 생성 todo_list = generate_todo_list(hero, diary_entry) # 생성된 ToDo List 출력 print(f"\n{hero}의 ToDo List:\n{todo_list}") if __name__ == "__main__": main()
지피티가 짜준 코드 리뷰
  • 기본 API 설정
  • 비밀 키 입력
import openai import random # 발급받은 API 키 설정 OPENAI_API_KEY = "sk-proj-Mvq2HLSZo0FmHsOP49hcT3BlbkFJulzKwqczqk6uBZ0ID4wW" # openai API 키 인증 openai.api_key = OPENAI_API_KEY
  • 지피티 모델의 특정 버전 지정
  • 프롬프팅 → 내가 지피티에 프롬프팅하듯이 하면 될 듯 ++ ugrp에서도 이런식으로 하면 되나?
  • 생성할 최대 토큰
  • 답변의 개수
  • 응답 생성을 중지하기 위한 토큰 설정
  • 텍스트 생성의 창의성을 생성하기 위한 변수
response = openai.Completion.create( engine="text-davinci-003", prompt=f"Generate a ToDo list for a person named {hero} based on the following diary entry, in Korean:\n\n{diary_entry}\n\nToDo List (in Korean):", max_tokens=150, n=1, stop=None, temperature=0.7, )
  • todo list 추출
  • todo list 항목 3개로 제한
  • 시간 할당
  • join
    • ex.
      todo_list = "운동하기\n책읽기\n공부하기\n"
      이렇게 생성된 것에서 3개로 추리고, 시간을 join해서 나타낸다.
# 응답에서 생성된 ToDo List 추출 todo_list = response.choices[0].text.strip() # ToDo List를 3개의 항목으로 제한 todo_items = todo_list.split('\n')[:3] # 각 항목에 유동적인 시간을 할당 time_options = ["30분", "1시간", "2시간", "45분", "1시간 30분"] todo_items_with_time = [f"{todo_items[i]} ({random.choice(time_options)})" for i in range(len(todo_items))] return '\n'.join(todo_items_with_time)
  • Prompting
  • generate
  • print
def main(): # 사용자로부터 입력 받기 hero = input("당신의 영웅의 이름을 입력하세요: ") diary_entry = input("오늘의 일기를 입력하세요: ") # ToDo List 생성 todo_list = generate_todo_list(hero, diary_entry) # 생성된 ToDo List 출력 print(f"\n{hero}의 ToDo List:\n{todo_list}") if __name__ == "__main__": main()
 
되는 코드.. 위에 코드는 안돌아간다..
import openai import random # 발급받은 API 키 설정 OPENAI_API_KEY = "sk-proj-Mvq2HLSZo0FmHsOP49hcT3BlbkFJulzKwqczqk6uBZ0ID4wW" # openai API 키 인증 openai.api_key = OPENAI_API_KEY def generate_todo_list(hero, diary_entry): # 입력이 비어 있을 경우 기본값 설정 if not hero: hero = "영웅" if not diary_entry: diary_entry = "오늘은 매우 바쁜 하루였다. 내일은 더 나은 하루가 되기를 기대한다." # OpenAI GPT-3.5를 사용하여 ToDo 리스트 생성 response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "You are a helpful assistant. You need to generate a realistic ToDo list with exactly three items"}, {"role": "user", "content": f"다음은 {hero}의 일기 내용이다: \"{diary_entry}\". 이 내용을 바탕으로 {hero}의 ToDo 리스트를 만들어줘."} ], max_tokens=150, n=1, stop=None, temperature=0.7, ) todo_list = response.choices[0].message['content'].strip().split("\n") # ToDo List를 3개의 항목으로 제한하고 중복 시간 제거 todo_items = [] time_options = ["30분", "1시간", "2시간", "45분", "1시간 30분"] for item in todo_list: if len(todo_items) < 3: # 시간을 할당하고 중복된 시간을 제거 todo_items.append(f"{item.strip()} ({random.choice(time_options)})") return '\n'.join(todo_items) def main(): # 사용자로부터 입력 받기 hero = input("당신의 영웅의 이름을 입력하세요: ") diary_entry = input("오늘의 일기를 입력하세요: ") # ToDo List 생성 todo_list = generate_todo_list(hero, diary_entry) # 생성된 ToDo List 출력 print(f"\n{hero if hero else '영웅'}의 ToDo List:\n{todo_list}") if __name__ == "__main__": main()