OpenAI o1 API 추론 기능 사용법 및 사용 제한
인공지능 기술의 발전은 놀라운 속도로 이루어지고 있습니다. 특히 OpenAI의 새로운 o1 API는 기존 모델들의 한계를 뛰어넘는 추론 능력을 보여주고 있어 많은 개발자들의 관심을 받고 있습니다. 이 글에서는 OpenAI o1 API의 추론 기능 사용법과 현재의 사용 제한에 대해 자세히 알아보겠습니다.
OpenAI o1 API 소개
OpenAI o1 는 기존 모델들보다 더 깊이 있는 사고와 추론을 할 수 있도록 설계된 새로운 모델 시리즈입니다. 이 모델은 복잡한 과제를 해결하고 과학, 코딩, 수학 분야에서 더 어려운 문제들을 풀 수 있는 능력을 갖추고 있습니다.
OpenAI o1 시리즈 모델
현재 API를 통해 사용 가능한 두 가지 추론 모델이 있습니다:
- o1-preview: 광범위한 일반 지식을 활용하여 어려운 문제를 추론하도록 설계된 o1 모델의 초기 버전입니다.
- o1-mini: o1의 더 빠르고 저렴한 버전으로, 특히 광범위한 일반 지식이 필요하지 않은 코딩, 수학, 과학 과제에 능숙합니다.
o1 모델은 추론 능력에 있어 중요한 진전을 보여주지만, 모든 사용 사례에서 GPT-4o를 대체하기 위한 것은 아닙니다. 이미지 입력, 함수 호출 또는 일관되게 빠른 응답 시간이 필요한 애플리케이션의 경우 GPT-4o와 GPT-4o mini 모델이 계속해서 적합한 선택이 될 것입니다.
현재 o1 시리즈에는 두 가지 모델이 있습니다:
- o1-preview: 강력한 추론 능력과 폭넓은 세계 지식을 갖춘 대형 모델
- o1-mini: o1-preview보다 80% 저렴하면서도 경쟁력 있는 성능을 제공하는 소형 모델
OpenAI o1 모델의 주요 특징
-
향상된 추론 능력: o1 모델은 응답하기 전에 더 많은 시간을 들여 '생각'합니다. 이를 통해 복잡한 문제에 대해 더 정확하고 깊이 있는 해답을 제공할 수 있습니다.
-
다양한 분야에서의 활용: 과학, 코딩, 수학 등 다양한 분야에서 뛰어난 성능을 보입니다.
-
비용 효율성: o1-mini 모델은 o1-preview에 비해 80% 저렴하면서도 특히 코딩 작업에서 경쟁력 있는 성능을 보여줍니다.
-
빠른 처리 속도: 특히 o1-mini 모델은 빠른 속도를 자랑합니다.
OpenAI o1 API 사용법
o1 API를 사용하기 위해서는 다음과 같은 단계를 따르면 됩니다:
- OpenAI 개발자 계정 생성
- API 키 발급
- API 엔드포인트 설정
- 프로그래밍 언어별 SDK 또는 HTTP 요청을 통한 API 호출
구체적인 개발자 생성 및 시작 방법은 OpenAI API 사용법을 참고하시기 바랍니다.
예를 들어, Python에서 o1 API를 사용하는 방법은 다음과 같습니다:
o1-preview와 o1-mini는 모두 채팅 완성(chat completions) 엔드포인트를 통해 사용할 수 있습니다. 다음은 o1-preview 모델을 사용하는 간단한 예시입니다:
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="o1-preview",
messages=[
{
"role": "user",
"content": "Write a bash script that takes a matrix represented as a string with format '[1,2],[3,4],[5,6]' and prints the transpose in the same format."
}
]
)
print(response.choices[0].message.content)
문제의 복잡성에 따라 이러한 요청은 몇 초에서 몇 분까지 소요될 수 있습니다.
베타 버전 제한 사항
베타 단계에서는 많은 채팅 완성 API 매개변수를 아직 사용할 수 없습니다. 주요한 제한 사항은 다음과 같습니다:
- 모달리티: 텍스트만 지원되며, 이미지는 지원되지 않습니다.
- 메시지 유형: 사용자 및 어시스턴트 메시지만 지원되며, 시스템 메시지는 지원되지 않습니다.
- 스트리밍: 지원되지 않습니다.
- 도구: 도구, 함수 호출 및 응답 형식 매개변수가 지원되지 않습니다.
- 로그 확률: 지원되지 않습니다.
- 기타: temperature, top_p, n은 1로 고정되어 있으며, presence_penalty와 frequency_penalty는 0으로 고정되어 있습니다.
- Assistants 및 Batch: 이 모델들은 Assistants API 또는 Batch API에서 지원되지 않습니다.
추론 작동 방식
o1 모델은 '추론 토큰'이라는 새로운 개념을 도입했습니다. 모델은 이 추론 토큰을 사용하여 '생각'하며, 프롬프트에 대한 이해를 세분화하고 응답을 생성하기 위한 여러 접근 방식을 고려합니다. 추론 토큰을 생성한 후, 모 델은 가시적인 완성 토큰으로 답변을 생성하고 추론 토큰을 컨텍스트에서 삭제합니다.
추론 토큰은 API를 통해 볼 수 없지만, 여전히 모델의 컨텍스트 창에서 공간을 차지하며 출력 토큰으로 청구됩니다. 사용된 추론 토큰의 정확한 수는 채팅 완성 응답 객체의 사용량 객체에서 확인할 수 있습니다:
usage: {
total_tokens: 1000,
prompt_tokens: 400,
completion_tokens: 600,
completion_tokens_details: {
reasoning_tokens: 500
}
}
컨텍스트 창 관리
o1-preview와 o1-mini 모델은 128,000 토큰의 컨텍스트 창을 제공합니다. 각 완성에는 최대 출력 토큰 수에 대한 상한선이 있으며, 이는 보이지 않는 추론 토큰과 보이는 완성 토큰을 모두 포함합니다:
- o1-preview: 최대 32,768 토큰
- o1-mini: 최대 65,536 토큰
완성을 생성할 때 추론 토큰을 위한 충분한 공간을 컨텍스트 창에 확보하는 것이 중요합니다. 문제의 복잡성에 따라 모델은 수백에서 수만 개의 추론 토큰을 생성할 수 있습니다.
비용 관리
o1 시리즈 모델의 비용을 관리하기 위해 max_completion_tokens
매개변수를 사용하여 모델이 생성하는 총 토큰 수(추론 및 완성 토큰 모두 포함)를 제한할 수 있습니다.
response = client.chat.completions.create(
model="o1-preview",
messages=[{"role": "user", "content": "Explain quantum computing"}],
max_completion_tokens=1000 # 추론 및 완성 토큰을 포함한 총 토큰 수 제한
)
OpenAI는 이러한 모델을 실험하기 시작할 때 추론과 출력을 위해 최소 25,000 토큰을 예약하는 것을 권장합니다. 프롬프트에 필요한 추론 토큰 수에 익숙해지면 이 버퍼를 적절히 조정할 수 있습니다.
프롬프트 작성 팁
이 모델들은 간단하고 직접적인 프롬프트에서 가장 잘 작동합니다. 몇 가지 모범 사례는 다음과 같습니다:
- 프롬프트를 간단하고 직접적으로 유지하세요.
- 체인-오브-쏘트(chain-of-thought) 프롬프트를 피하세요.
- 명확성을 위해 구분 기호를 사용하세요.
- 검색 증강 생성(RAG) 에서 추가 컨텍스트를 제한하세요.
예를 들어, 다음과 같이 간단하고 직접적인 프롬프트를 사용할 수 있습니다:
prompt = """
Instructions:
- Given the React component below, change it so that nonfiction books have red
text.
- Return only the code in your reply
- Do not include any additional formatting, such as markdown code blocks
- For formatting, use four space tabs, and do not allow any lines of code to
exceed 80 columns
const books = [
{ title: 'Dune', category: 'fiction', id: 1 },
{ title: 'Frankenstein', category: 'fiction', id: 2 },
{ title: 'Moneyball', category: 'nonfiction', id: 3 },
];
export default function BookList() {
const listItems = books.map(book =>
<li>
{book.title}
</li>
);
return (
<ul>{listItems}</ul>
);
}
"""
response = client.chat.completions.create(
model="o1-mini",
messages=[
{
"role": "user",
"content": prompt
}
]
)
print(response.choices[0].message.content)
OpenAI o1 사용 제한
OpenAI o1 API는 현재 베타 단계에 있어 몇 가지 사용 제한이 있습니다:
-
접근 제한: 현재 Usage Tier 5 이상의 개발자만 베타 버전에 접근할 수 있습니다.
-
요청 제한: 베타 기간 동안 분당 20 회의 요청(RPM) 제한이 있습니다.
-
시스템 메시지 미지원: 베타 단계에서는 시스템 메시지를 지원하지 않습니다.
-
내부 처리 과정 비공개: 모델의 내부 '사고' 과정은 공개되지 않습니다.
개인적으로 Tier 5 이상 이라 베타 버전에 접근하여 o1 API를 사용할 수 있었습니다.
OpenAI o1 API 사용 사례
OpenAI o1 API는 다양한 분야에서 활용 가능한 강력한 도구입니다. 아래 OpenAI Playground 에서 제공하는 예시를 통해 o1 API의 사례를 살펴보겠습니다: 위의 예시 처럼 간단하게 '복잡한 수학 문제를 풀어주세요.' 라는 질문을 입력하면, o1 preview와 o1 mini API는 다음과 같이 복잡한 수학 문제를 해결하는 과정을 보여줍니다:
OpenAI o1 preview API 응답 예시 at OpenAI Playground
OpenAI o1 preview API는 다음과 같이 복잡한 수학 문제를 해결하는 과정을 보여줍니다:
OpenAI o1 mini API 응답 at OpenAI Playground
OpenAI o1 mini API는 다음과 같이 뛰어난 추론 과정을 보여주며 OpenAI o1 preview 대비 80% 저렴하면서도 응답 속도도 빠릅니다:
OpenAI o1 API vs GPT-4 API
o1 API와 GPT-4는 각각의 장단점이 있습니다. 다음 표를 통해 비교해 보겠습니다:
특징 | o1 API | GPT-4 |
---|---|---|
추론 능력 | 매우 뛰어남 | 뛰어남 |
처리 속도 | 빠름 (특히 o1-mini) | 상대적으로 느림 |
비용 | o1-mini는 저렴함 | 상대적으로 비쌈 |
접근성 | 제한적 (베타) | 널리 사용 가능 |
다양성 | 과학, 코딩, 수학에 특화 | 범용적 사용 가능 |
결론
OpenAI o1 API는 인공지능의 추론 능력을 한 단계 더 발전시킨 혁신적인 모델입니다. 복잡한 문제 해결과 깊이 있는 사고를 요구하는 작업에서 뛰어난 성능을 보여주고 있습니다. 현재는 베타 단계로 접근이 제한적이지만, 향후 더 많은 개발자들에게 개방될 것으로 기 대됩니다.
o1 API를 활용하면 과학 연구, 코딩, 수학 등 다양한 분야에서 더욱 정교하고 정확한 결과를 얻을 수 있을 것입니다. 다만, 모델의 내부 처리 과정이 공개되지 않는 점은 일부 개발자들에게 아쉬움으로 남을 수 있습니다.
앞으로 o1 API가 어떻게 발전하고, 어떤 새로운 가능성을 열어줄지 기대가 됩니다. 인공지능 기술의 발전 속도를 고려할 때, 머지않아 우리는 o1 API를 통해 더욱 놀라운 결과들을 만나게 될 것입니다.
OpenAI o1 API의 세계로 뛰어들어 인공지능의 새로운 지평을 경험해보세요. 여러분의 프로젝트에 o1 API를 적용하여 어떤 혁신적인 결과를 얻을 수 있을지 상상해보시기 바랍니다.
참고자료
자세한 내용이 궁금하시다면 아래 링크를 참고 할 수 있습니다.
New reasoning models: OpenAI o1-preview and o1-mini - Announcements - OpenAI Developer Forum