터미널 커스터마이징 mac을 구매하고 처음 터미널을 열면 검은 바탕에 흰 글씨만 보인다. 개발자스러운 디자인이지만, 실제 개발자들은 대부분 이대로 사용하지 않는다. 가독성이 떨어질 뿐만 아니라, 화면에 보이는 정보들도 적고 타이핑도 느려져 생산성이 떨어진다. 따라서 생산성과 효율성을 중요시하는 개발자들은 자신의 필요에 맞게 다양한 기능을 추가하고, 여러가지 색깔로 자신만의 터미널을 꾸민다. 그런데 이렇게 터미널을 꾸미는 일은 자주 일어나지 않는다. 기껏해야 3~4년에 한 번쯤 회사에서 장비를 교체할 것이고, 집에서는 mac을 사용한다고 해도 5년정도는 사용할 것이기 때문이다. 그래서 항상 구글에 맥북 초기 세팅을 검색하고, 블로그의 글을 보고 oh-my-zsh과 iTerm2를 설치하게 된다. 그런데 이 ..
Function Calling https://openai.com/blog/function-calling-and-other-api-updates Function calling and other API updates We’re announcing updates including more steerable API models, function calling capabilities, longer context, and lower prices. openai.com OpenAI는 올해 7월부터 API에서 function calling 기능을 추가한다고 발표했다. 이것은 이름 그대로 사용자가 정의한 함수를 호출할 수 있는 기능인데, 독특한 것은 함수의 호출을 사용자가 판단하는 것이 아니라 언어 모델이 판단한다는 것이..
Rate Limits Rate Limit이란 말 그대로 API 요청의 속도를 제한한다는 뜻이다. 무료로 사용하는 것도 아니고, 돈을 지불하고 쓰겠다는데 속도 제한을 걸 이유가 있을까?라고 생각할 수도 있겠지만, 서비스를 운영하면 생각보다 이상한 사람들이 많다. 특히나 OpenAI같이 글로벌한 서비스를 운영하려면 온갖 공격으로부터 방어를 해야한다. 예를 들어, API요청을 엄청나게 많이 보내서 서버를 다운시킨 다음, 자신들의 서비스를 2배의 가격으로 제공할 수도 있을 것이다. 어쨌든, 이러한 공격들로부터 방어하여 서비스를 안정적으로 운영하기 위해서 Rate Limit을 만든 것이다. Rate Limit은 3가지가 존재한다. 가장 먼저 RPM은 Requests Per Minute의 약자로, 1분동안 보낸 요..
OpenAI API 응답 속도 OpenAI API를 사용하다보면 생각보다 응답 속도가 느려서 당황스러울 때가 많다. API를 한 번 호출하는데 10초가 넘게 걸리는 경우도 흔하다. 아래와 같이 간단한 질문에 걸리는 시간을 측정해보자. import time start = time.time() response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "코카콜라 제로도 많이 먹으면 몸에 해로울까?"}] ) end = time.time() print("%0.3f초" % (end - start)) print("---------------") print(response["choices"][0..
Prompt Engineering 지금까지 OpenAI API의 사용 방법과 언어모델에서 사용할 수 있는 여러 기능들을 살펴보았다. 그러나 축구 규칙을 안다고 해서 누구나 프로 축구선수가 될 수는 없다. 중요한 것은 어떻게 해야 'Goal'을 넣을 수 있는가이다. 언어모델의 'Goal'은 사용자가 원하는 대답을 얻는 것이다. 대화를 통해 원하는 대답을 얻기 위해서는 언어모델을 잘 구슬려서 원하는 대답을 내뱉도록 만드는 사용자의 화술이 중요하다. 언어모델에 주는 사용자의 입력을 '프롬프트'라고 하기도 하는데, 이 프롬프트를 잘 작성하기 위한 기술을 '프롬프트 엔지니어링'이라고 한다. OpenAI는 수많은 연구끝에 얻은 좋은 프롬프트를 작성하기 위한 6가지 방법들을 공개했는데, 덕분에 우리는 거인의 어깨에 ..
ChatCompletion 파라미터 이전 글에서 ChatCompletion의 가장 중요한 부분인 messages에 대해 살펴보았다. ChatCompletion에는 messages 이외에도 이미 사용해봤던 model을 포함해 다양한 파라미터들이 존재한다. 또, 이러한 파라미터들의 값이 따라 응답값이 달라지기 때문에 용도에 맞게 튜닝하기 위해서는 잘 알아두는 것이 중요하다. ChatCompletion의 다양한 파라미터들은 OpenAI의 공식 API reference에서 확인할 수 있다. https://platform.openai.com/docs/api-reference/chat/create OpenAI Platform Explore developer resources, tutorials, API docs, ..
ChatCompletion 이전 글에서 OpenAI API를 소개하면서 ChatCompletion을 사용해보았다. ChatCompletion은 말 그대로 대화를 완성해주는 것이다. GPT 같은 생성형 언어모델은 이전 대화의 내용들을 입력하면 다음에 어떤 말을 할 것인지 예측한다. 따라서 API에 이전 대화 내용을 입력하면 다음 내용을 출력해주는데, 이러한 API를 쉽게 사용할 수 있도록 만든 것이 ChatCompletion이다. response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "user", "content": "GPT-3.5 모델에 대해 설명해줘"} ] ) GPT-3.5는 OpenAI가 개발한 자연어 처..
OpenAI API ChatGPT로 유명한 OpenAI에서는 다양한 모델을 사용할 수 있는 API를 제공하고있다. OpenAI에서 제공하는 ChatGPT와 DallE 서비스가 존재하지만, OpenAI의 다양한 모델들을 사용해 자신만의 서비스를 만들어보고 싶은 개발자들을 위해 API를 공개해 주었다. 기본적으로 유료이지만, 처음 가입하면 3개월동안 사용할 수 있는 5달러의 크레딧을 받을 수 있다. GPT-3.5 Turbo 모델 기준 1000개의 토큰당 0.0015달러, 한화로 2원정도이기 때문에 간단한 테스트를 해보기에는 충분할 것이다. 아래 링크를 클릭하면 OpenAI API 페이지로 갈 수 있다. https://platform.openai.com/ OpenAI Platform Explore develo..