📄 원문: Claude SWE-Bench Performance
- 출처: Claude SWE-Bench Performance
- 저자: Anthropic
- 원문 발행일: 2025년 1월 6일
- 라이선스: 저작권 Anthropic
- 번역일: 2025년 6월 27일
- 번역 및 감수: Claude and 공부하우
- 참고: 이 번역은 교육 목적으로 작성되었으며, Anthropic의 공식 번역이 아닙니다.
⚖️ 저작권 안내
이 번역문은 교육 및 정보 제공 목적으로 작성되었습니다. 원문의 저작권은 Anthropic에 있으며, 이 번역은 Anthropic의 공식 번역이 아닙니다.
본 번역은 다음과 같은 교육적 공정 사용(Fair Use) 원칙에 따라 제공됩니다:
- 비영리 교육 목적
- 원문 출처의 명확한 표시
- 한국어 사용자의 기술 이해 증진을 위한 변형적 사용
- 원저작물의 시장 가치에 부정적 영향을 미치지 않음
저작권 관련 문제가 제기될 경우, 즉시 적절한 조치를 취하겠습니다. 상업적 사용이나 재배포 전에 원저작권자의 허가를 받으시기 바랍니다.
문의사항이나 우려사항이 있으시면 오른쪽 템플릿 복사를 클릭 하신 뒤, 연락 페이지를 통해 알려 주시기 바랍니다.
Claude의 SWE-bench 성능: 최신 모델의 소프트웨어 엔지니어링 능력
우리의 최신 모델인 업그레이드된 Claude 3.5 Sonnet은 소프트웨어 엔지니어링 평가인 SWE-bench Verified에서 49%를 달성하여 이전 최고 성능 모델의 45%를 능가했습니다. 이 글에서는 모델을 중심으로 구축한 에이전트 (agent)에 대해 설명하고, 개발자들이 Claude 3.5 Sonnet에서 최상의 성능을 얻을 수 있도록 돕고자 합니다.
SWE-bench는 모델이 실제 소프트웨어 엔지니어링 작업을 완료할 수 있는 능력을 평가하는 AI 평가 벤치마크입니다. 구체적으로, 모델이 인기 있는 오픈소스 Python 저장소의 깃허브 이슈 (GitHub issues)를 어떻게 해결할 수 있는지 테스트합니다. 벤치마크의 각 작업에 대해 AI 모델에게는 설정된 Python 환경과 이슈가 해결되기 직전의 저장소 체크아웃 (checkout)(로컬 작업 복사본)이 제공됩니다. 그런 다음 모델은 제안된 솔루션을 제출하기 전에 코드를 이해하고, 수정하고, 테스트해야 합니다.
각 솔루션은 원래 GitHub 이슈를 종료한 풀 리퀘스트 (pull request)의 실제 단위 테스트에 대해 평가됩니다. 이는 AI 모델이 원래 PR의 인간 작성자와 동일한 기능을 달성할 수 있었는지 테스트합니다.
SWE-bench는 AI 모델을 단독으로 평가하는 것이 아니라 전체 "에이전트" 시스템을 평가합니다. 이 맥락에서 "에이전트"는 AI 모델과 그 주변의 소프트웨어 스캐폴딩의 조합을 의미합니다. 이 스캐폴딩 (scaffolding)은 모델에 들어가는 프롬프트를 생성하고, 모델의 출력을 파싱하여 작업을 수행하며, 모델의 이전 작업 결과가 다음 프롬프트에 통합되는 상호작용 루프를 관리하는 역할을 합니다. SWE-bench에서 에이전트의 성능은 동일한 기본 AI 모델을 사용하더라도 이 스캐폴딩에 따라 크게 달라질 수 있습니다.
대규모 언어 모델의 코딩 능력을 위한 다른 많은 벤치마크가 있지만, SWE-bench는 여러 가지 이유로 인기를 얻었습니다:
- 경쟁이나 인터뷰 스타일의 질문이 아닌 실제 프로젝트의 실제 엔지니어링 작업을 사용합니다
- 아직 포화 상태가 아닙니다 - 개선의 여지가 많습니다. 아직 어떤 모델도 SWE-bench Verified에서 50%를 넘지 못했습니다(이 글을 쓰는 시점에서 업데이트된 Claude 3.5 Sonnet은 49%입니다)
- 모델을 단독으로가 아닌 전체 "에이전트"를 측정합니다. 오픈소스 개발자와 스타트업은 동일한 모델 주변의 스캐폴딩을 최적화하여 성능을 크게 향상시키는 데 큰 성공을 거두었습니다
원래 SWE-bench 데이터셋에는 GitHub 이슈 외부의 추가 컨텍스트 없이는 해결할 수 없는 일부 작업이 포함되어 있습니다(예: 반환할 특정 오류 메시지). SWE-bench-Verified는 사람이 검토하여 해결 가능한지 확인한 SWE-bench의 500개 문제 하위 집합으로, 코딩 에이전트의 성능을 가장 명확하게 측정합니다. 이 글에서 참조할 벤치마크입니다.
최첨단 기술 달성
도구 사용 에이전트
업데이트된 Claude 3.5 Sonnet에 최적화된 에이전트 스캐폴드를 만들 때의 설계 철학은 언어 모델 자체에 가능한 한 많은 제어권을 주고 스캐폴딩을 최소화하는 것이었습니다. 에이전트에는 프롬프트, bash 명령 실행을 위한 Bash 도구 (Bash Tool), 파일과 디렉터리 보기 및 편집을 위한 편집 도구 (Edit Tool)가 있습니다. 모델이 완료되었다고 결정하거나 200k 컨텍스트 길이를 초과할 때까지 계속 샘플링합니다. 이 스캐폴드는 모델이 특정 패턴이나 워크플로우에 하드코딩되지 않고 문제를 추구하는 방법에 대한 자체 판단을 사용할 수 있도록 합니다.
프롬프트는 모델에 대한 제안된 접근 방식을 설명하지만 이 작업에 대해 지나치게 길거나 너무 자세하지 않습니다. 모델은 엄격하고 개별적인 전환을 갖는 대신 단계에서 단계로 이동하는 방법을 자유롭게 선택할 수 있습니다. 토큰에 민감하지 않다면 모델이 긴 응답을 생성하도록 명시적으로 권장하는 것이 도움이 될 수 있습니다.
다음 코드는 에이전트 스캐폴드의 프롬프트를 보여줍니다:
<uploaded_files>
{location}
</uploaded_files>
I've uploaded a python code repository in the directory {location} (not in /tmp/inputs). Consider the following PR description:
<pr_description>
{pr_description}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
I've already taken care of all changes to any of the test files described in the <pr_description>. This means you DON'T have to modify the testing logic or any of the tests in any way!
Your task is to make the minimal changes to non-tests files in the {location} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to explore the repo to familiarize yourself with its structure.
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the BashTool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
모델의 첫 번째 도구는 Bash 명령을 실행합니다. 스키마는 간단하며, 환경에서 실행할 명령만 받습니다. 그러나 도구의 설명은 더 많은 중요성을 가집니다. 입력 이스케이프, 인터넷 액세스 부족, 백그라운드에서 명령을 실행하는 방법을 포함한 모델에 대한 자세한 지침이 포함되어 있습니다.
다음은 Bash 도구의 사양을 보여줍니다:
{
"name": "bash",
"description": "Run commands in a bash shell\n
* When invoking this tool, the contents of the \"command\" parameter does NOT need to be XML-escaped.\n
* You don't have access to the internet via this tool.\n
* You do have access to a mirror of common linux and python packages via apt and pip.\n
* State is persistent across command calls and discussions with the user.\n
* To inspect a particular line range of a file, e.g. lines 10-25, try 'sed -n 10,25p /path/to/the/file'.\n
* Please avoid commands that may produce a very large amount of output.\n
* Please run long lived commands in the background, e.g. 'sleep 10 &' or start a server in the background.",
"input_schema": {
"type": "object",
"properties": {
"command": {
"type": "string",
"description": "The bash command to run."
}
},
"required": ["command"]
}
}
모델의 두 번째 도구(편집 도구)는 훨씬 더 복잡하며 모델이 파일을 보고, 생성하고, 편집하는 데 필요한 모든 것을 포함합니다. 다시 말하지만, 우리의 도구 설명에는 도구 사용 방법에 대한 모델에 대한 자세한 정보가 포함되어 있습니다.
우리는 다양한 에이전트 작업에서 이러한 도구의 설명과 사양에 많은 노력을 기울였습니다. 모델이 사양을 오해하거나 도구 사용의 가능한 함정을 발견하는 방법을 테스트한 다음 이러한 문제를 선제적으로 해결하기 위해 설명을 편집했습니다. 우리는 인간을 위한 도구 인터페이스를 설계하는 데 많은 관심을 기울이는 것과 같은 방식으로 모델을 위한 도구 인터페이스를 설계하는 데 훨씬 더 많은 관심을 기울여야 한다고 믿습니다.
다음 코드는 편집 도구에 대한 설명을 보여줍니다:
{
"name": "str_replace_editor",
"description": "Custom editing tool for viewing, creating and editing files\n
* State is persistent across command calls and discussions with the user\n
* If `path` is a file, `view` displays the result of applying `cat -n`. If `path` is a directory, `view` lists non-hidden files and directories up to 2 levels deep\n
* The `create` command cannot be used if the specified `path` already exists as a file\n
* If a `command` generates a long output, it will be truncated and marked with `<response clipped>` \n
* The `undo_edit` command will revert the last edit made to the file at `path`\n
\n
Notes for using the `str_replace` command:\n
* The `old_str` parameter should match EXACTLY one or more consecutive lines from the original file. Be mindful of whitespaces!\n
* If the `old_str` parameter is not unique in the file, the replacement will not be performed. Make sure to include enough context in `old_str` to make it unique\n
* The `new_str` parameter should contain the edited lines that should replace the `old_str`",
...
우리가 성능을 향상시킨 한 가지 방법은 도구를 "오류 방지"하는 것이었습니다. 예를 들어, 때때로 모델은 에이전트가 루트 디렉터리에서 이동한 후 상대 파일 경로를 엉망으로 만들 수 있습니다. 이를 방지하기 위해 우리는 단순히 도구가 항상 절대 경로를 요구하도록 만들었습니다.
우리는 기존 파일에 대한 편집을 지정하기 위한 여러 가지 다른 전략을 실험했으며 문자열 교체에서 가장 높은 신뢰성을 얻었습니다. 여기서 모델은 주어진 파일에서 new_str
로 교체할 old_str
을 지정합니다. 교체는 old_str
의 정확한 일치가 하나만 있는 경우에만 발생합니다. 일치 항목이 더 많거나 적으면 모델에 재시도할 수 있는 적절한 오류 메시지가 표시됩니다.
편집 도구의 사양은 다음과 같습니다:
...
"input_schema": {
"type": "object",
"properties": {
"command": {
"type": "string",
"enum": ["view", "create", "str_replace", "insert", "undo_edit"],
"description": "The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`, `undo_edit`."
},
"file_text": {
"description": "Required parameter of `create` command, with the content of the file to be created.",
"type": "string"
},
"insert_line": {
"description": "Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`.",
"type": "integer"
},
"new_str": {
"description": "Required parameter of `str_replace` command containing the new string. Required parameter of `insert` command containing the string to insert.",
"type": "string"
},
"old_str": {
"description": "Required parameter of `str_replace` command containing the string in `path` to replace.",
"type": "string"
},
"path": {
"description": "Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`.",
"type": "string"
},
"view_range": {
"description": "Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file.",
"items": {
"type": "integer"
},
"type": "array"
}
},
"required": ["command", "path"]
}
}
결과
일반적으로 업그레이드된 Claude 3.5 Sonnet은 이전 모델 및 이전 최고 성능 모델보다 더 높은 추론 (reasoning), 코딩 (coding) 및 수학적 능력 (mathematical abilities)을 보여줍니다. 또한 향상된 에이전트 기능 (agentic capabilities)을 보여줍니다: 도구와 스캐폴딩은 이러한 향상된 능력을 최대한 활용하는 데 도움이 됩니다.
모델 | Claude 3.5 Sonnet (신규) | 이전 SOTA | Claude 3.5 Sonnet (구) | Claude 3 Opus |
---|---|---|---|---|
SWE-bench Verified 점수 | 49% | 45% | 33% | 22% |
에이전트 동작의 예
벤치마크를 실행하기 위해 우리는 SWE-Agent 프레임워크를 에이전트 코드의 기초로 사용했습니다. 아래 로그에서는 모델의 텍스트 출력, 도구 호출 및 도구 응답을 THOUGHT, ACTION 및 OBSERVATION으로 렌더링합니다. 모델을 고정된 순서로 제한하지 않더라도 말입니다.
아래 코드 블록은 Sonnet 3.5가 SWE-bench 문제를 해결하는 일반적인 경우를 안내합니다.
이 첫 번째 블록에서 모델에 주어진 초기 프롬프트의 일부를 볼 수 있으며, {pr_description}
은 SWE-bench 작업의 실제 값으로 채워집니다. 중요한 것은 이 작업에 문제를 재현하는 단계가 포함되어 있어 모델이 조사를 시작하는 데 귀중한 출발점을 제공한다는 것입니다.
<uploaded_files>
/repo
</uploaded_files>
I've uploaded a python code repository in the directory /repo (not in /tmp/inputs). Consider the following PR description:
<pr_description>
linear_model.RidgeClassifierCV's Parameter store_cv_values issue
#### Description
Parameter store_cv_values error on sklearn.linear_model.RidgeClassifierCV
#### Steps/Code to Reproduce
import numpy as np
from sklearn import linear_model as lm
#test database
n = 100
x = np.random.randn(n, 30)
y = np.random.normal(size = n)
rr = lm.RidgeClassifierCV(alphas = np.arange(0.1, 1000, 0.1), normalize = True,
store_cv_values = True).fit(x, y)
#### Expected Results
Expected to get the usual ridge regression model output, keeping the cross validation predictions as attribute.
#### Actual Results
TypeError: __init__() got an unexpected keyword argument 'store_cv_values'
lm.RidgeClassifierCV actually has no parameter store_cv_values, even though some attributes depends on it.
모델이 응답하고 먼저 편집 도구를 사용하여 저장소 구조를 봅니다. THOUGHT 및 ACTION 아래에서 모델의 텍스트 출력 및 도구 호출 인수를 볼 수 있고 OBSERVATION 아래에서 도구 출력의 일부를 볼 수 있습니다:
THOUGHT:
I'll help you implement the changes to satisfy the PR description. Let's follow the steps you outlined.
1. First, let's explore the repo structure:
ACTION (str_replace_editor):
command:
view
path:
/repo
OBSERVATION:
Here's the files and directories up to 2 levels deep in /repo, excluding hidden items:
/repo
/repo/PULL_REQUEST_TEMPLATE.md
/repo/ISSUE_TEMPLATE.md
/repo/sklearn
/repo/sklearn/decomposition
/repo/sklearn/kernel_ridge.py
/repo/sklearn/model_selection
/repo/sklearn/covariance
/repo/sklearn/cluster
/repo/sklearn/base.py
/repo/sklearn/dummy.py
/repo/sklearn/naive_bayes.py
...
이제 모델이 저장소 구조를 더 잘 이해했으므로 편집 도구를 사용하여 문제를 재현하고 수정 사항을 테스트하는 데 사용할 새 스크립트를 만듭니다:
THOUGHT:
Based on the repository structure, we'll need to modify the Ridge Classifier in the `sklearn/linear_model` directory.
Let's create a script to reproduce the error:
ACTION (str_replace_editor):
command:
create
path:
/repo/reproduce_error.py
file_text:
import numpy as np
from sklearn import linear_model as lm
#test database
n = 100
x = np.random.randn(n, 30)
y = np.random.normal(size = n)
rr = lm.RidgeClassifierCV(alphas=np.arange(0.1, 1000, 0.1), normalize=True,
store_cv_values=True).fit(x, y)
OBSERVATION:
File created successfully at: /repo/reproduce_error.py
그런 다음 모델은 Bash 도구를 사용하여 작성한 스크립트를 실행하고 작업에서 문제를 성공적으로 재현합니다:
THOUGHT:
Let's verify that we can reproduce the error:
ACTION (bash):
command:
python3 /repo/reproduce_error.py
OBSERVATION:
Traceback (most recent call last):
File "/repo/reproduce_error.py", line 10, in <module>
store_cv_values=True).fit(x, y)
TypeError: __init__() got an unexpected keyword argument 'store_cv_values'
여기서부터 모델은 편집 도구를 사용하여 저장소의 소스 코드를 변경하고 스크립트를 다시 실행하여 변경 사항이 문제를 해결했는지 확인합니다:
THOUGHT:
The error is reproducible. Looking at the code, I can see that the issue is that while the `RidgeClassifierCV` class inherits from `_BaseRidgeCV`, it fails to pass the `store_cv_values` parameter from its constructor through to the base class constructor.
Let's fix this:
ACTION (str_replace_editor):
command:
str_replace
path:
/repo/sklearn/linear_model/ridge.py
old_str:
def __init__(self, alphas=(0.1, 1.0, 10.0), fit_intercept=True,
normalize=False, scoring=None, cv=None, class_weight=None):
super(RidgeClassifierCV, self).__init__(
alphas=alphas, fit_intercept=fit_intercept, normalize=normalize,
scoring=scoring, cv=cv)
self.class_weight = class_weight
new_str:
def __init__(self, alphas=(0.1, 1.0, 10.0), fit_intercept=True,
normalize=False, scoring=None, cv=None, class_weight=None,
store_cv_values=False):
super(RidgeClassifierCV, self).__init__(
alphas=alphas, fit_intercept=fit_intercept, normalize=normalize,
scoring=scoring, cv=cv, store_cv_values=store_cv_values)
self.class_weight = class_weight
이 특정 예에서 모델은 제출할 준비가 되었다고 결정하기 전에 12단계 동안 작업했습니다. 그런 다음 작업의 테스트가 성공적으로 실행되어 모델의 솔루션이 문제를 해결했음을 확인했습니다. 일부 작업은 모델이 솔루션을 제출하기 전에 100회 이상의 턴이 걸렸습니다. 다른 작업에서는 모델이 컨텍스트가 부족할 때까지 계속 시도했습니다.
업데이트된 Claude 3.5 Sonnet과 이전 모델의 시도를 검토한 결과, 업데이트된 3.5 Sonnet은 더 자주 자기 수정을 합니다. 또한 같은 실수를 반복해서 하는 대신 여러 가지 다른 솔루션을 시도하는 능력을 보여줍니다.
과제
SWE-bench Verified는 강력한 평가이지만 간단한 단일 턴 평가보다 실행하기가 더 복잡합니다. 다음은 우리가 사용하면서 직면한 과제들이며, 다른 AI 개발자들도 마주칠 수 있는 과제들입니다.
- 지속 시간 및 높은 토큰 비용. 위의 예는 12단계에서 성공적으로 완료된 경우입니다. 그러나 많은 성공적인 실행은 모델이 해결하는 데 수백 턴과 10만 개 이상의 토큰이 필요했습니다. 업데이트된 Claude 3.5 Sonnet은 끈질깁니다: 충분한 시간이 주어지면 종종 문제를 해결할 방법을 찾을 수 있지만 비용이 많이 들 수 있습니다
- 채점. 실패한 작업을 검사하는 동안 모델이 올바르게 동작했지만 환경 설정 문제가 있거나 설치 패치가 두 번 적용되는 문제가 있는 경우를 발견했습니다. 이러한 시스템 문제를 해결하는 것은 AI 에이전트의 성능을 정확하게 파악하는 데 중요합니다
- 숨겨진 테스트. 모델은 평가되는 테스트를 볼 수 없기 때문에 작업이 실제로 실패했을 때 종종 성공했다고 "생각"합니다. 이러한 실패 중 일부는 모델이 잘못된 추상화 수준에서 문제를 해결했기 때문입니다(더 깊은 리팩토링 대신 반창고 적용). 다른 실패는 조금 덜 공정하게 느껴집니다: 문제를 해결하지만 원래 작업의 단위 테스트와 일치하지 않습니다
- 멀티모달. 업데이트된 Claude 3.5 Sonnet이 뛰어난 비전 및 멀티모달 기능을 갖추고 있음에도 불구하고 파일 시스템에 저장되거나 URL로 참조되는 파일을 볼 수 있는 방법을 구현하지 않았습니다. 이로 인해 특정 작업(특히 Matplotlib의 작업) 디버깅이 특히 어려워지고 모델 환각이 발생하기 쉬워졌습니다. 개발자가 개선할 수 있는 여기에 확실히 쉬운 성과가 있습니다. SWE-bench는 멀티모달 작업에 초점을 맞춘 새로운 평가를 시작했습니다. 가까운 미래에 개발자들이 Claude와 함께 이 평가에서 더 높은 점수를 달성하는 것을 기대합니다
업그레이드된 Claude 3.5 Sonnet은 간단한 프롬프트와 두 개의 범용 도구로 SWE-bench Verified에서 49%를 달성하여 이전 최고 성능(45%)을 능가했습니다. 우리는 새로운 Claude 3.5 Sonnet으로 구축하는 개발자들이 여기서 처음 시연한 것보다 SWE-bench 점수를 개선하는 새롭고 더 나은 방법을 빠르게 찾을 것이라고 확신합니다.
감사의 말
Erik Schluntz가 SWE-bench 에이전트를 최적화하고 이 블로그 게시물을 작성했습니다. Simon Biggs, Dawn Drain, Eric Christiansen이 벤치마크 구현을 도왔습니다. Shauna Kravec, Dawn Drain, Felipe Rosso, Nova DasSarma, Ven Chandrasekaran 및 다른 많은 사람들이 Claude 3.5 Sonnet을 에이전트 코딩에 탁월하도록 훈련하는 데 기여했습니다.
아래 내용은 독자의 이해를 돕기 위해 공부하우가 추가한 설명입니다. 원문에는 없는 내용입니다.
주요 용어 설명
이 문서에서 사용된 주요 기술 용어들을 설명합니다:
AI 에이전트 관련 용어
에이전트 (Agent)
이 문서의 맥락에서 에이전트는 AI 모델과 그 주변의 소프트웨어 시스템을 합친 전체 시스템을 의미합니다. 단순히 AI 모델만이 아니라, 모델에 입력을 주고 출력을 처리하는 전체 프로세스를 포함합니다.
스캐폴딩 (Scaffolding)
건축에서 비계를 의미하는 것처럼, AI 시스템에서는 모델을 지원하는 소프트웨어 구조를 의미합니다. 프롬프트 생성, 출력 파싱, 도구 호출 관리 등을 담당합니다.
소프트웨어 개발 용어
깃허브 이슈 (GitHub Issues)
GitHub에서 프로젝트의 버그, 기능 요청, 질문 등을 추적하는 시스템입니다. 개발자들이 문제를 보고하고 해결 방법을 논의하는 공간입니다.
풀 리퀘스트 (Pull Request, PR)
코드 변경사항을 프로젝트에 병합하기 위한 요청입니다. 다른 개발자들이 검토하고 승인한 후 메인 코드베이스에 반영됩니다.
체크아웃 (Checkout)
Git 버전 관리 시스템에서 특정 시점의 코드 상태로 작업 디렉토리를 전환하는 작업입니다. 이 문서에서는 문제가 발생한 시점의 코드 상태를 의미합니다.
AI 평가 관련 용어
SOTA (State-of-the-Art)
특정 분야에서 현재까지 달성된 최고 성능을 의미합니다. 이 문서에서는 SWE-bench에서 가장 높은 점수를 받은 모델을 지칭합니다.
컨텍스트 길이 (Context Length)
AI 모델이 한 번에 처리할 수 있는 텍스트의 최대 길이입니다. Claude 3.5 Sonnet의 경우 200,000 토큰까지 처리할 수 있습니다.
기술적 능력 용어
추론 (Reasoning)
AI 모델이 정보를 분석하고 논리적인 결론을 도출하는 능력입니다. 문제를 이해하고 해결책을 찾는 과정을 포함합니다.
코딩 (Coding)
프로그래밍 언어를 사용하여 소프트웨어를 작성하는 능력입니다. 이 문서에서는 AI가 실제 코드를 작성하고 수정하는 능력을 의미합니다.
수학적 능력 (Mathematical Abilities)
수학 문제를 이해하고 해결하는 능력입니다. 계산, 논리적 추론, 패턴 인식 등을 포함합니다.
에이전트 기능 (Agentic Capabilities)
AI가 자율적으로 작업을 수행하는 능력입니다. 도구 사용, 계획 수립, 문제 해결 등 복잡한 작업을 독립적으로 수행하는 능력을 의미합니다.