OpenAI API로 o1 모델을 사용하는 Python 퀵스타트
OpenAI API를 사용해 Python에서 새로운 o1 모델을 설정하고 실행하는 방법. 우리는 o1-preview로 작업합니다. 이 글은 AI 번역본입니다. 오역이 의심되면 댓글로 알려주세요.
Created on September 15|Last edited on September 15
Comment
OpenAI의 새로운 o1 모델을 API로 실행해 시작하는 과정은 놀라울 만큼 간단하며, ChatGPT 인터페이스나 심지어 GPT-4를 통해 경험하는 것 이상의 폭넓은 유연성을 제공합니다.
이 o1-preview 모델 퀵스타트에서는 약 5분 만에 바로 시작할 수 있도록 안내합니다.
더 빠르게 직접試해 보고 싶다면, 이 Colab에서 스크립트를 테스트해 보세요.
참고: 현재 o1 시리즈 모델은 Tier 5 계정이 있는 경우에만 API로 액세스할 수 있습니다.
아쉽지만 해당 조건을 충족하지 못하면 ChatGPT 인터페이스를 통해서만 o1-preview에 접근할 수 있습니다.
모델이 더 폭넓게 공개될 때를 대비해 이 글을 북마크해 두길 권장합니다.
💡
이 빠른 시작 튜토리얼에서 다룰 내용은 다음과 같습니다:
목차
W&B WeavePython에서 o1 모델 빠른 시작1단계: OpenAI o1-preview API 키2단계: OpenAI와 W&B Weave 설치3단계: 라이브러리를 임포트하고 OpenAI API 키를 전달하기4단계: 프롬프트 설정하기5단계: o1 모델로 콘텐츠 생성하기W&B Weave에서 o1 모델 출력 보기관련 문서
💡
W&B 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 셀을 실행하세요.

셀을 실행하면 대괄호 [ ] 안에 별표([*])가 표시됩니다. 이는 셀이 실행 중임을 의미하며, 이어서 다음을 해야 합니다 별표가 숫자로 바뀔 때까지 기다린 뒤 다음 단계로 진행하세요.
💡
이제 설치를 마쳤으니, 사용하기 위해 모듈을 임포트해야 합니다.
Python이 처음이라면 이렇게 생각해 보세요. 라이브러리를 설치하는 것은 서버에 이미지를 업로드해 리소스를 갖춰 두는 것과 같습니다. 임포트는 그 이미지를 웹페이지에 삽입해 코드에서 쓸 수 있게 만드는 것과 같습니다.
3단계: 라이브러리를 임포트하고 OpenAI API 키를 전달하기
이제 마법을 펼칠 준비를 하려면 필요한 라이브러리를 임포트하고, OpenAI에 API 키를 전달해 o1-preview 모델에 접근할 수 있도록 해야 합니다.
이 블록에서는 이미 설치한 OpenAI와 W&B Weave 라이브러리를 임포트합니다. 또한 정규식을 사용하기 위한 re와, 환경 변수를 가져오기 위한 os도 임포트합니다(이 경우 OpenAI API 키).
import osimport weavefrom openai import OpenAIimport re# Initialize Weave and W&Bweave.init('o1-preview-setup')# Initialize OpenAI clientclient = 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_promptprint(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 stepsdef 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 stepsdef 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 stepssteps_response = client.chat.completions.create(model="o1-preview",messages=steps_messages)steps_text = steps_response.choices[0].message.contentsteps_list = steps_text.split("\n") # Assuming steps are returned as a list-like formatreturn 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 strategysteps_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 strategystrategy_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 textreturn strategy_text
그리고 마지막으로…
# First, get the stepssteps = generate_steps("Initial assistant prompt", "desired user prompt")# Then, pass the steps to generate the content strategystrategy = generate_content_with_steps(o1_assistant_prompt, o1_user_prompt, steps)print(strategy)
실행하면 다음과 같이 표시됩니다:

W&B Weave에서 o1 모델 출력 보기
마지막 셀에서 출력 결과를 확인하고 그대로 복사할 수 있습니다. 내부 동작을 더 자세히 살펴보거나 과거 요청을 검토하고 싶다면(그렇게 하길 권합니다) Weights & Biases 대시보드로 이동하거나 응답과 함께 출력된 링크를 클릭하면 됩니다.
제 Traces 중 하나의 출력은 다음에서 확인할 수 있습니다:
https://wandb.ai/onlineinference/o1-preview-setup/weave/calls/01922af7-6e95-7600-aa6b-615147c1abd9
이는 해당 트레이스를 조사한 내용입니다:

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

바로 그 지점에서 Weave로 로깅하는 가장 큰 가치가 드러납니다. 출력이 o1 모델의 목록에 접근하지 못했음을 알고 있으므로, 결과가 완전하지 않거나 충분히 반영되지 않았을 가능성이 큽니다.
이 o1 모델 퀵스타트 튜토리얼이 도움이 되었길 바랍니다. 무엇을 작업하셨는지 댓글로 공유해 주세요!
관련 문서
Add a comment