베이직 반
- input()과 input().strip()의 차이
아래의 코드들은 각각의 경우에 입력받은 문자열의 앞뒤 공백을 제거하는지 여부를 보여준다.
input() 사용
# 사용자가 입력: " Hello, World! "
user_input = input()
print(f"입력 결과: '{user_input}'")
# 출력 결과
입력 결과: ' Hello, World! '
input()만 사용하면 입력값의 앞뒤 공백이 그대로 유지된다.
input().strip() 사용
# 사용자가 입력: " Hello, World! "
user_input = input().strip()
print(f"입력 결과: '{user_input}'")
# 출력 결과
입력 결과: 'Hello, World!'
input().strip()을 사용하면 입력값의 앞뒤 공백이 제거된다.
따라서, 공백을 자동으로 제거하려면 input().strip()을 사용하면 되고, 공백을 그대로 받아야 하는 경우에는 input()만 사용하면 된다.
OpenAI API란?
ChatGPT는 텍스트 생성뿐만 아니라, 최근에는 이미지도 만들어주고 말도 해주는 등 다양한 기능을 한다. 해당 기능들이 모두 코드적으로 처리할 수 있도록, API 형태로 제공되고 있다. 이 API는 OpenAI라는 패키지 속에서 높은 레벨로 추상화된 다음 제공된다. 그런데 이API를 사용하려면 당연히 준비가 필요하다.
ChatGPT API 호출을 위한 기본 단계
1) OpenAI 계정 생성 및 로그인
OpenAPI는 아무에게나 API 호출을 열어주지 않는다. 먼저 계정을 생성하고, 로그인해야 한다.
2) API 키 발급
그런 다음, API 키 발급이라는 메뉴에 상세하게 들어가서 계정 정보를 클릭한다. 그러면 조직과 이름, API 키를 발급할 수 있는 부분이 있는데, 그 부분에 접근하면 된다. 이렇게 API 키를 생성한 후에는 안전한 곳에 복사해주자. 서비스의 형태에 따라서 API 키는 발급된 당시에만 볼 수 있고, 나중에는 다시 못 보게 하는 경우도 많다. 이 키는 API 호출에 사용되는데, API 호출에는 비용이 발생한다. 우리가 API 키를 관리해야 하는 가장 큰 이유가 이 비용 때문일 것이다. 그래서 우리는 API 키를 발급받거나, 발급해주는 상황에서 관리를 철저히 해주어야 한다.
3) API 호출 환경 설정
키를 발급받았다면, 프로그래밍 언어를 선택하고, 필요한 라이브러리를 설치해주어야 한다.
4) ChatGPT API 키 등록하기
API 키를 발급받았다면, 등록을 해주어야 우리가 정상적으로 API 를 사용할 수 있게 된다.
5) API 호출 결과 처리
API 호출 결과는 일반적으로 JSON 형식으로 반환된다. 이를 통해 모델의 출력과 메타데이터를 확인할 수 있다.
API 관리 방법
API 키를 관리하는 방법은 다양하다. 하지만 일반적으로 코드에 직접 포함하는 것은 관리라고 하지 않는다.
첫 번째는, 환경 변수에 저장하는 방법이다. 그리고 애플리케이션이 실행될 때, 이걸 참고해서 키를 읽어오는 방식이다. API 키를 코드에 직접 입력, 즉 하드코딩하지 않으므로, 키가 어떤 저장소나 타인에게 노출될 가능성이 적다.
두 번째는, .env 파일을 사용하는 것이다. .env 파일에 API 키와 같은 민감 정보를 저장해놓고, 이 파일을 어플리케이션에서 로드해서 사용하는 방법이다. 여기서 주의할 점은, 버전 관리 시스템에서 제외돼야 한다는 것이다. 장점은 코드랑 환경 변수를 쉽게 관리할 수 있다는 것이다. 여러 개발 환경에서 다양한 설정을 쉽게 관리할 수 있게 된다.
세 번째는, 시크릿 매니지먼트 서비스를 이용하는 것이다. 이는 높은 수준의 보안을 제공하고, 키 관리에 자동화가 많이 포함돼있다. 만료 등이 지원돼서 키를 안전하게 저장하고 접근 제어를 강화할 수 있다. 하지만 앞의 두 방법보다는 단계가 좀 더 많다.
네 번째는, CI, CD 시스템을 통해 관리할 수도 있다. 배포 파이프라인에서 민감 데이터를 보호할 수 있고, 자동화된 배포 프로세스에 통합돼있어서 실수가 적다.
마지막으로, 좀 복잡한 방식인데, API 키를 애플리케이션 구성 파일에 암호화시켜버리는 것이다. 그리고 애플리케이션 시작 시에 다시 이를 해독, 즉 복호화하는 것이다. 암호화를 통해 키를 보호할 수 있긴 한데, 다소간 복잡하다.
API 사용 시 주의사항
API 키 보안 유지
API 키가 관리되지 않으면, 일반적으로 우리가 사용하는 서비스를 넘어서 생각해봤을 때, 무단 접근이나 데이터 유출이 될 수 있다.
API 호출 제한
그리고 이는 우리에게 가까운 문제인데, 서비스 요금 폭탄이 나올 수 있다. API 키가 노출돼서 무단 사용자가 이를 대량으로 노출하면, 사용량이 급격히 증가하게 될 것이다. 그렇기에 주의가 필요하다. 또 법적 문제가 생길 수 있다.
적절한 에러 처리
API 호출 중 발생할 수 있는 다양한 에러에 대비해 적절한 예외 처리를 구현하는 것이 중요하다. 네트워크 오류, 인증 실패, 사용량 초과 등의 상황에 대한 대처가 필요하다.
강의 외부에서 추가로 알게 된 내용
- 이스케이프 처리
특별한 기능을 가진 문자 앞에 \를 붙여서 문자 그대로 출력하게 하는 방법이다. 파이썬에서는 문자열 내에서 \가 특정 의미를 지니는데, 예를 들어 \n은 줄바꿈, \t는 탭을 의미한다. \\는 \ 하나를 표현하고 싶을 때 사용하는 방법이다.
예를 들어, print("!@#$%^&*(\\'\"<>?:;")에서는 첫 번째 \\가 \ 하나로 출력되고, 이어지는 \'는 작은따옴표를 이스케이프 처리해서 문자 그대로 \'로 출력된다. 그리고 "를 문자 그대로 출력하려면 \"라고 입력해야 한다. 즉, 우리가 \' "를 출력하고 싶다면, \ \ ' \ " 라고 적어야 한다.