Skip to main content

OpenAI API로 실행하는 o1 모델 Python 퀵스타트

OpenAI API를 사용해 Python에서 새로운 o1 모델을 설정하고 실행하는 방법. 여기서는 o1-preview를 사용합니다. 이 글은 AI 번역본입니다. 오역이 의심되는 부분은 댓글로 알려주세요.
Created on September 15|Last edited on September 15
OpenAI의 새로운 o1 모델을 API로 실행하기 시작하는 과정은 놀랄 만큼 간단하며, ChatGPT 인터페이스나 GPT-4를 통해 경험하는 것보다 훨씬 더 다양한 활용과 유연성을 제공합니다.
이 o1-preview 모델 빠른 시작에서는 약 5분 만에 바로 실행할 수 있도록 안내합니다.
더 빨리 직접 해보고 싶다면, 이 Colab에서 스크립트를 테스트해 보세요.


참고: 현재 o1 시리즈 모델은 Tier 5 계정이 있어야만 API로 사용할 수 있습니다.
안타깝지만 그렇지 않다면 ChatGPT 인터페이스를 통해서만 o1-preview에 접근해야 합니다.
모델이 보다 폭넓게 공개될 때를 대비해 이 글을 즐겨찾기에 추가해 두는 것을 권장합니다.
GPT-4o로 먼저 시작했다가 나중에 코드를 업그레이드하고 싶다면, 이를 위한 튜토리얼이 준비되어 있습니다 여기.
💡
이 빠른 시작 튜토리얼에서 다룰 내용은 다음과 같습니다:

목차



이제 막 시작했고 아직 Python을 실행할 환경을 설정하지 않았다면, 빠르게 따라할 수 있는 튜토리얼을 준비했습니다 여기 몇 분 안에 바로 시작할 수 있도록 도와줍니다.

또한, 필요한 경우 OpenAI API 시작 가이드, 아마도 다음과 같은 점을 확인하게 될 것입니다 여기.
💡

W&B Weave

W&B Weave 프로젝트에서 모델 출력의 추적과 분석을 더 쉽게 만들어 줍니다. Weave를 시작하려면 먼저 라이브러리를 임포트하고 프로젝트 이름으로 초기화하세요.
두드러지는 특징 중 하나는 @weave.op 데코레이터. Python에서 데코레이터는 함수의 동작을 확장하는 강력한 도구입니다. 다음과 같이 배치하여 @weave.op 코드에서 어떤 함수 위에든 해당 데코레이터를 붙이면, Weave가 그 함수의 입력과 출력을 자동으로 기록합니다. 이렇게 하면 어떤 데이터가 들어가고 무엇이 나오는지 추적하기가 매우 쉬워집니다.
코드가 실행되면 이러한 로그가 Weave 대시보드에 표시되며, 함수 호출의 상세한 시각화와 트레이스를 확인할 수 있습니다. 이는 디버깅에 도움이 될 뿐만 아니라 실험 데이터를 구조화하는 데도 유용하여 o1-preview 같은 모델을 개발하고 미세 조정하기가 훨씬 쉬워집니다.

Python에서 o1 모델 빠른 시작

바로 시작해 봅시다. 이 튜토리얼은 Jupyter 노트북에서 작업한다고 가정하지만, 물론 코드는 다른 애플리케이션에서도 잘 동작합니다.
이번 튜토리얼에서는 특히 o1-preview 모델을 사용합니다.

1단계: OpenAI o1-preview API 키

가장 먼저 해야 할 일은 o1-preview API 키를 정의하는 것입니다.
이를 위한 코드는 다음과 같습니다:
%env OPENAI_API_KEY=KEY
"KEY"를 OpenAI API 키로 바꿔 주세요.
셀을 실행하면 출력으로 키가 표시됩니다. 이는 환경 변수로 성공적으로 입력되었음을 확인해 줍니다.


2단계: OpenAI와 W&B Weave 설치

o1-preview 모델을 시작하려면 OpenAI만 설치하면 됩니다. 다만 여러 출력을 더 간편하게 검토하는 방법으로 W&B Weave 사용법도 함��� 보여드릴 텐데, 이를 활용하면 전체 과정이 훨씬 효율적입니다.
지금이 정말 좋은 때입니다 Weights & Biases에 가입하기아직 하지 않았다면 지금 해 두세요. 나중에 작업 흐름을 끊지 않아도 됩니다.
이를 위한 코드는 다음과 같습니다:
!pip install openai weave
이 코드를 입력한 뒤 Jupyter 셀을 실행하세요.

셀을 실행하면 대괄호 [ ] 사이에 별표([*])가 표시됩니다. 이는 셀이 실행 중임을 의미하며, 계속하려면 별표가 숫자로 바뀔 때까지 기다렸다가 진행하세요.
💡
이제 설치를 마쳤으니, 사용하려면 모듈을 import해야 합니다.
파이썬이 처음이라면 이렇게 생각해 보세요. 라이브러리를 설치하는 것은 서버에 이미지를 업로드해 리소스를 확보하는 것과 같습니다. import는 그 이미지를 웹페이지에 삽입해, 코드에서 바로 쓸 수 있게 만드는 것입니다.

3단계: 라이브러리를 import하고 OpenAI API 키를 전달하기

이제 필요한 라이브러리를 import하고, OpenAI에 API 키를 전달해 o1-preview 모델에 접근할 수 있도록 하겠습니다.
이 블록에서는 이미 설치한 OpenAI와 W&B Weave 라이브러리를 import합니다. 또한 정규 표현식을 사용하기 위해 re를, 환경 변수를 가져오기 위해 os를 import합니다(이 경우 OpenAI API 키를 가져옵니다).
import os
import weave
from openai import OpenAI
import re

# Initialize Weave and W&B
weave.init('o1-preview-setup')

# Initialize OpenAI client
client = OpenAI(api_key=os.getenv('OPENAI_API_KEY'))
다음 줄에서: weave.init('o1-preview-setup')
o1-preview-setup은 원하시는 이름으로 변경해도 됩니다. 이는 Weights & Biases 안에서 사용될 프로젝트 이름입니다.

4단계: 프��프트 설정하기

다음 코드는 사용자가 채워 넣을 입력 항목을 생성합니다. 다음 정보를 요청합니다:
  • 모델이 어떤 역할로 행동해야 하는지. 이는 assistant 역할과 연결되며, 모델이 가져야 할 특성을 정의하는 데 사용됩니다. 예를 들어 “프롬프트에 답할 때 나는 어떤 역할을 해야 하나요?”라는 질문에 “SEO 전문가”라고 답할 수 있습니다.
  • 무엇을 해야 하는지에 대한 프롬프트. 이는 user 역할과 연결되며, 사용자에게 기대되는 바를 정의하는 데 사용됩니다.
o1_assistant_prompt = "You are a " + input ("Who should I be, as I answer your prompt?")
o1_user_prompt = input ("What prompt do you want me to do?")
o1_prompt = o1_assistant_prompt, o1_user_prompt
print(o1_prompt)
현재 이 모델은 assistant 역할과 user 역할만 지원합니다. 베타가 종료되면 system 역할도 사용할 수 있습니다.
💡

5단계: o1 모델로 콘텐츠 생성하기

이제 재미있는 부분에 도착했으니, 여기까지 오는 과정이 너무 힘들지 않았길 바랍니다.
스크립트를 더 쉽게 이해할 수 있도록 콘텐츠 생성과 로깅 단계를 두 부분으로 나누겠습니다. 첫 번째 셀에서는 함수를 정의하고, 두 번째 셀에서는 해당 함수들을 실행만 합니다.
이 함수들은 본질적으로 두 가지 일을 합니다:
  • o1-preview에 위에서 입력한 요청을 완료하기 위해 수행할 단계 목록을 생성해 달라고 요청하세요. 이 단계들은 최종 답변의 입력으로 사용되며, Weave에서도 입력으로 표시됩니다.
  • o1-preview가 생성한 목록을 일부 반영하여, GPT-4o에게 귀하의 요청에 대한 응답을 생성해 달라고 요청하세요.
두 단계 모두에 o1-preview를 그대로 사용할 수도 있었지만, 현재 o1-preview에는 일부 파라미터가 없어 동일한 기능을 제공하지 못합니다. 또한 한 모델의 출력을 다른 모델에 입력으로 활용하는 방식을 보여 주기에도 적절하다고 판단했습니다. GPT-4o는 비용이 더 저렴하고 제약도 적기 때문에, 운영 환경에서는 이 구성이 합리적입니다.
# Function to parse steps_text into a list of steps
def parse_steps(steps_text):
steps = re.split(r'\n\s*\d+\.\s+|\n\s*-\s+|\n\s*\*\s+', steps_text.strip())
steps = [step.strip() for step in steps if step.strip()]
return steps

def generate_steps(o1_assistant_prompt: str, o1_user_prompt: str) -> list:
steps_prompt = f"You want to {o1_user_prompt}. Before generating the strategy, please outline the reasoning steps you would take to develop the strategy. The steps should be given as a simple list, avoiding commentary or unnecessary detail. Make your best guess at what you are being asked to create a list of reasoning steps for. List the steps numerically."
steps_messages = [
{"role": "assistant", "content": o1_assistant_prompt},
{"role": "user", "content": steps_prompt}
]
# API call to get steps
steps_response = client.chat.completions.create(
model="o1-preview",
messages=steps_messages
)
steps_text = steps_response.choices[0].message.content
steps_list = steps_text.split("\n") # Assuming steps are returned as a list-like format
return steps_list


@weave.op()
def generate_content_with_steps(o1_assistant_prompt: str, o1_user_prompt: str, steps_list: list) -> str:
# Step 2: Use the steps as input to generate the final content strategy
steps_text = "\n".join(f"{i+1}. {step}" for i, step in enumerate(steps_list))

strategy_prompt = (
f"Using the following steps, please generate a content strategy to {o1_user_prompt}:\n{steps_text}\n"
f"Please proceed directly without requesting additional information.")
strategy_messages = [
{"role": "assistant", "content": o1_assistant_prompt},
{"role": "user", "content": strategy_prompt}
]
# API call to generate the strategy
strategy_response = client.chat.completions.create(
model="gpt-4o",
messages=strategy_messages,
temperature=0.2,
max_tokens=1000,
frequency_penalty=0.0
)
strategy_text = strategy_response.choices[0].message.content
# Only return the strategy text
return strategy_text

그리고 마지막으로 …
# First, get the steps
steps = generate_steps("Initial assistant prompt", "desired user prompt")

# Then, pass the steps to generate the content strategy
strategy = generate_content_with_steps(o1_assistant_prompt, o1_user_prompt, steps)

print(strategy)
실행하면 다음과 같이 표시됩니다:


W&B Weave에서 o1 모델 출력 보기

마지막 셀에서 출력 결과에 접근해 그곳에서 복사할 수 있습니다. 내부 동작을 더 자세히 살펴보거나 과거 요청을 확인하고 싶다면(권장합니다) Weights & Biases 대시보드로 이동하거나 응답과 함께 출력된 링크를 클릭하면 됩니다.
제가 만든 Traces 중 하나의 출력은 여기에서 볼 수 있습니다:
이는 해당 트레이스에 대한 조사입니다.

물론 과거 데이터가 어떻게 수집되었는지 검토할 때도 유용하지만, 오류가 발생했을 때는 특히 더 도움이 됩니다:

Weave로 로깅할 때 가장 큰 가치를 주는 부분이 바로 여기입니다. o1 모델의 목록에 접근하지 못한 출력이라는 점을 알고 있으므로, 완전성이나 정보 면에서 부족했을 가능성이 큽니다.
이 o1 모델 퀵스타트 튜토리얼이 도움이 되었길 바랍니다. 무엇을 작업하셨는지 댓글로 공유해 주세요!

관련 읽을거리



이 글은 AI로 번역된 기사입니다. 오역이 의심되는 부분이 있으면 댓글로 알려 주세요. 원문 보고서는 다음 링크에서 확인할 수 있습니다: 원문 보고서 보기