o3-mini vs. DeepSeek-R1: API 설정, 성능 테스트 및 모델 평가
API를 통해 OpenAI o3-mini를 설정하고 실행하는 방법을 알아보고, 유연한 추론 노력 설정을 탐색하며, W&B Weave Evaluations를 사용해 DeepSeek-R1과의 성능을 비교하세요. 이 글은 AI 번역본입니다. 오역이 있다면 댓글로 알려주세요.
Created on September 12|Last edited on September 12
Comment
새로 시작하여 실행하기 OpenAI의 o3-mini 모델 API를 통해 사용하는 방법은 놀랄 만큼 간단하며, ChatGPT 인터페이스나 GPT-4o에서 경험할 수 있는 것보다 훨씬 폭넓은 유연성을 제공해 더 많은 작업을 수행할 수 있습니다.
이 가이드는 o3-mini로 추론을 실행하는 방법과, 그 성능을 다음과 비교하는 방법을 설명합니다 DeepSeek-R1 AIME 데이터셋에서 사용하여 Weave Evaluations연구나 소프트웨어 개발에 AI를 도입하려는 분이라면, 이 글이 시작하는 데 도움이 될 것입니다 OpenAI의 최신 모델.
더 빠르게 직접 시도해 보고 싶다면, 이 Colab에서 스크립트를 테스트해 보세요:
참고: 현재 o3 시리즈 모델은 티어 3–5 계정이 있는 경우에만 API로 접근할 수 있습니다.
안타깝지만 해당 조건을 충족하지 못하면 ChatGPT 인터페이스를 통해서만 o3에 접근해야 합니다.
모델 접근이 더 폭넓게 열릴 때를 대비해 이 글을 북마크해 두시길 권장합니다.
💡

목차
W&B Weaveo3-mini와 R1 가격 비교 o3-mini Python 퀵스타트Weave로 o3-mini 평가하기 API 실패 처리 및 신뢰할 수 있는 비교 보장결과 Weave 비교 대시보드 결론
💡
W&B Weave
Weave의 핵심 기능은 @weave.op 데코레이터. 파이썬에서 데코레이터는 함수의 동작을 확장하며, 이를 적용함으로써 @weave.op, 해당 함수의 입력과 출력을 자동으로 기록합니다. 이를 통해 모델을 거치는 데이터 흐름을 손쉽게 추적할 수 있습니다.
실행이 완료되면 Weave가 이러한 로그를 수집해 대화형 대시보드에 시각화하여 함수 호출, 입력, 출력에 대한 인사이트를 제공합니다. 이를 통해 디버깅이 강화되고 실험 데이터가 체계적으로 정리되며, 특히 o3-mini와 다른 AI 모델을 사용할 때 모델 개발이 한층 간소화됩니다.
o3-mini와 R1 가격 비교
DeepSeek-Reasoner (R1)은 입력 토큰 100만 개당 0.55달러(캐시 미스 기준)를 청구하며, o3-mini는 100만 개당 1.10달러입니다. 출력 토큰의 경우 R1은 100만 개당 2.19달러, o3-mini는 4.40달러입니다. OpenAI는 Batch API를 제공하여 입력 토큰 비용을 100만 개당 0.55달러, 출력 토큰 비용을 100만 개당 2.20달러로 낮출 수 있습니다. Batch API는 여러 요청을 동시에 처리하여 효율성을 높이고 비용을 절감합니다.


OpenAI o3-mini는 낮음, 보통, 높음의 세 가지 단계로 구성된 유연한 추론 노력 설정을 제공합니다. 이를 통해 사용자는 필요에 따라 속도 또는 정확도에 최적화할 수 있습니다. 기본적으로 ChatGPT는 보통 수준의 추론 노력으로 동작하여 효율성과 성능 사이의 균형을 유지하며, STEM 과제에서 OpenAI o1과 유사한 특성을 보입니다.
단순한 추론으로 빠른 응답이 필요한 작업에는 낮음 설정이 계산 오버헤드를 줄여, 신속하고 간단한 업무에 적합합니다. 반면 높음 설정은 문제 해결 능력을 강화하여 AIME와 GPQA 같은 복잡한 벤치마크에서 정확도를 크게 끌어올립니다. 이 설정은 o3-mini가 고급 평가에서 이전 모델들을 능가하도록 해주지만, 약간의 지연 증가라는 트레이드오프가 따릅니다.
이러한 옵션을 통해 개발자는 실시간 애플리케이션에 최적화하든, 심층 분석적 추론을 다루든, 다양한 작업 부하에 맞춰 성능을 정교하게 조정할 수 있습니다.

o3-mini Python 퀵스타트
바로 시작하겠습니다. 이 튜토리얼은 유효한 OpenAI API 키와 Python이 설치되어 있으며, 다음 pip 패키지들이 함께 설치되어 있다고 가정합니다:
pip install weave openai datasets
먼저 o3-mini와 Weave로 추론을 실행하는 간단한 스크립트를 작성해 보겠습니다:
import osfrom openai import OpenAI# Option to hardcode API key (leave empty to use env variable)OPENAI_API_KEY = ""# Use hardcoded key if provided, else fetch from environmentapi_key = OPENAI_API_KEY if OPENAI_API_KEY else os.getenv("OPENAI_API_KEY")if not api_key:raise ValueError("No API key provided. Set it manually or through the environment variable.")O3_MODEL = "o3-mini" # Replace with actual o3 model ID# Initialize OpenAI clientopenai_client = OpenAI(api_key=api_key)# Math problemproblem = "Find the derivative of f(x) = 3x^2 + 5x - 7."# Run inferencetry:response = openai_client.chat.completions.create(model=O3_MODEL,messages=[{"role": "user", "content": problem}])print(response.choices[0].message.content)except Exception as e:print(f"Failed to get OpenAI response: {e}")
여기서 Weave는 모델의 입력과 출력을 기록합니다. 우리는 심지어 추가할 필요도 없었다는 점에 주목하세요 @weave.op이는 Weave가 이미 OpenAI Python 라이브러리와 통합되어 있고, 추론 호출을 Weave에 로깅하는 데 필요한 것은 단지 import 그리고 init Weave!
Weave로 o3-mini 평가하기
이제 추론 파이프라인을 설정했으니, AIME 데이터셋에서 OpenAI의 o3-mini 모델과 R1을 평가하겠습니다. 이 데이터셋은 박사급 과학 문제로 구성되어 있어, AI 추론 능력을 평가하기 위한 엄격한 벤치마크로 사용됩니다.
우리는 Weave Evaluations를 사용해 o3 mini의 응답을 정답과 비교하겠습니다. 평가 과정에서는 o3 mini로 답안을 생성한 뒤, GPT-4o를 심판으로 활용해 정답 여부를 채점합니다. 이 평가를 자동화하면 o3 mini가 복잡한 학술적 추론을 얼마나 잘 처리하는지 정량적으로 측정할 수 있습니다.
API 실패 처리 및 신뢰할 수 있는 비교 보장
이전 평가 과정에서 DeepSeek-R1의 API 호출이 무작위로 실패하며 빈 응답이나 형식이 잘못된 응답을 반환하는 문제가 있었습니다. 최근에는 DeepSeek-R1의 장애도 발생하고 있으니, API 호출 실패 가능성에 유의하세요. 현재로서는 코드에서 R1 관련 부분을 주석 처리하고 OpenAI의 o3만으로 평가를 실행하거나, DeepSeek 671B 파라미터 모델을 제공하는 다른 공급자를 찾는 것이 가장 좋은 해결책입니다.
다음으로 평가 파이프라인을 실행하고 결과를 분석하겠습니다:
import osimport asyncioimport requestsfrom datasets import load_datasetfrom openai import OpenAIimport jsonimport weave; weave.init("aime_evaluation")# API Keys and Clientsopenai_client = OpenAI(api_key="your api key")deepseek_client = OpenAI(api_key="your-deepseek-key",base_url="https://api.deepseek.com")# Model constantsO3_MINI = "o3-mini"JUDGE_MODEL = "gpt-4o-2024-08-06" # For evaluation# Consistent system messagesystem_message = "Solve the following problem. put your final answer within \\boxed{}: "def run_openai_inference(prompt: str) -> str:"""Run inference using OpenAI API"""try:response = openai_client.chat.completions.create(model=O3_MINI,messages=[{"role": "user", "content": prompt}])return response.choices[0].message.contentexcept Exception as e:print(f"Failed to get OpenAI response: {e}")return Noneclass O3MiniModel(weave.Model):@weave.opasync def predict(self, text: str) -> str:print("running inference")return run_openai_inference(f"{system_message}{text}")class DeepseekR1(weave.Model):@weave.opasync def predict(self, text: str) -> str:try:response = deepseek_client.chat.completions.create(model="deepseek-reasoner",messages=[{"role": "user", "content": system_message + text}])return response.choices[0].message.contentexcept Exception as e:print(f"Failed to get Deepseek response: {e}")return None@weave.opasync def gpt4_scorer(label: str, model_output: str) -> dict:"""Score the model's output by comparing it with the ground truth."""query = f"""YOU ARE A LLM JUDGE DETERMINING IF THE FOLLOWING MODEL GENERATED ANSWER IS THE SAME AS THE CORRECT ANSWERI WILL GIVE YOU THE LAST 100 CHARS OF THE MODEL'S REASONING PATH, WHICH WILL CONTAIN THE FINAL ANSWER ->Model's Answer (last 100 chars): {str(model_output)[-100:]}Correct Answer: {label}Your task:1. State the model's predicted answer (answer only).2. State the ground truth (answer only).3. Determine if the model's final answer is correct (ignore formatting differences, etc.). RESPOND with the predicted and ground truth answer, followed with a JSON object containing the correctness encapsulated within the following delimiters:```json{{ "correctness": true/false }}```"""try:response = openai_client.chat.completions.create(model=JUDGE_MODEL,messages=[{"role": "user", "content": query}])response_text = response.choices[0].message.contentjson_start = response_text.index("```json") + 7json_end = response_text.index("```", json_start)correctness = json.loads(response_text[json_start:json_end].strip()).get("correctness", False)return {"correctness": correctness, "reasoning": response_text}except Exception as e:print(f"Scoring failed: {e}")return {"correctness": False, "reasoning": str(e)}def load_ds():print("Loading AIME dataset...")dataset = load_dataset("Maxwell-Jia/AIME_2024")["train"]return [{"text": row["Problem"], "label": row["Answer"]} for row in dataset]async def run_evaluations():print("Loading dataset...")dataset = load_ds()print("Initializing models...")models = {"o3-mini": O3MiniModel(),"deepseek-r1": DeepseekR1()}print("Preparing dataset for evaluation...")dataset_prepared = [{"text": row["text"], "label": row["label"]} for row in dataset]print("Running evaluations...")scorers = [gpt4_scorer]for model_name, model in models.items():print(f"\nEvaluating {model_name}...")evaluation = weave.Evaluation(dataset=dataset_prepared,scorers=scorers,name=f"{model_name} Evaluation")results = await evaluation.evaluate(model)print(f"Results for {model_name}: {results}")if __name__ == "__main__":asyncio.run(run_evaluations())
스크립트는 먼저 AIME 데이터셋을 로드하는 것으로 시작합니다. 허깅 페이스 load_dataset 함수. 이 데이터셋은 수학 경시대회 문제로 구성되어 있어, 복잡한 추론 능력을 평가하기에 강력한 벤치마크입니다. 각 항목에는 문제 설명(텍스트)과 정답(레이블)이 포함됩니다.
그다음 스크립트는 OpenAI의 o3-mini 모델과 DeepSeek API를 통한 DeepSeek-R1을 사용해 추론을 실행합니다. 각 모델은 데이터셋을 개별적으로 처리하며, 각 문항에 대한 응답을 생성합니다. 추론 과정은 다음과 같이 진행됩니다:
- o3-mini쿼리는 OpenAI의 API로 전송되며, 응답은 모델 출력으로 반환됩니다.
- DeepSeek-R1: 쿼리는 DeepSeek의 API를 통해 처리되며, 동일한 방식으로 응답이 반환됩니다.
결과
첫 실행에서는 추론 강도를 ‘medium’으로 설정했을 때, o3가 정확도 76%로 R1과 동일한 점수를 기록했습니다. 궁금하신 분들은 추론 강도를 “high”로 올려 평가를 돌려 보세요. o3가 R1을 능가할 수 있을지 확인해 보세요!
다음은 Weave 평가 화면의 스크린샷으로, R1과 o3를 비교해 보여줍니다:

Weave 비교 대시보드
평가가 완료되면 Weave가 결과를 인터랙티브 대시보드로 정리합니다. 이 강력한 도구로 다음 작업을 수행할 수 있습니다:
- 모델 출력을 나란히 비교하세요.
- 특정 매개변수로 결과를 필터링하고,
- 모든 함수 호출의 입력과 출력을 추적하세요.
이러한 구조적이고 시각적인 접근 방식 디버깅을 간소화하고 모델 성능에 대한 깊이 있는 인사이트를 제공합니다, Weave를 추적과 개선에 필수적인 도구로 만들어 줍니다 대규모 언어 모델.
DeepSeek-R1이 다루는 것처럼 추론 중심의 작업에서는, 비교 보기에서 단계별 추적 각 모델의 의사 결정 과정을 드러냅니다. 이 기능을 통해 논리적 실수, 프롬프트 해석 오류, 또는 O3-Mini처럼 한 모델이 다른 모델보다 뛰어난 영역을 쉽게 식별할 수 있습니다.
이처럼 세분화된 출력 결과를 분석하면 모델이 특정 작업에서 성공하거나 실패하는 이유를 더 잘 이해할 수 있습니다. 이러한 인사이트는 문제를 진단하고 모델을 개선하며, 복잡한 추론 상황에 맞춰 모델의 역량을 조정하는 데 매우 유용합니다.
비교 보기 화면은 다음과 같습니다:

이렇게 세분화된 출력 결과를 분석하면 비교 보기를 통해 모델이 특정 작업에서 어떻게, 그리고 왜 성공하거나 실패하는지 더 쉽게 이해할 수 있습니다. 이러한 수준의 세부 정보는 문제를 진단하고 모델을 개선하며, 까다로운 추론 시나리오에 맞게 모델의 역량을 조정하는 데 매우 중요합니다.
결론
OpenAI o3-mini는 특히 STEM 분야에서 추론 집약적인 작업에 강력하고 유연한 선택지를 제공합니다. 다양한 추론 노력 설정과 효율적인 API 통합을 통해, 개발자는 속도 또는 추론의 깊이 중 하나에 맞춰 최적화할 수 있습니다.
Weave Evaluations 프레임워크는 모델 출력의 체계적인 비교, 성능 추적, 워크플로 개선을 손쉽게 만들어 줍니다. 직접 추론을 실행하든 대규모 벤치마크를 수행하든, o3-mini는 확장 가능하고 비용 효율적인 해결책을 제공합니다.
API 접근이 확대되고 더 많은 사용자가 워크플로에 이 모델들을 통합함에 따라, o3-mini는 연구, 개발, 그리고 AI 기반 애플리케이션을 위한 핵심 도구로 자리매김할 것입니다.
Add a comment