Temperature는 무작위성을 제어합니다. 하지만 이것이 에이전트에게 더 중요한 이유는 무엇일까요?
요약
AI 모델은 토큰 단위로 답변을 생성하며, 이 과정에서 확률 기반의 샘플링이 무작위성을 도입합니다. Temperature는 이 샘플링 과정에서 각 토큰에 할당되는 확률 분포를 조절하는 매개변수입니다. 온도를 낮추면 예측 가능하고 일관된 출력이 나오며, 높이면 창의적이지만 산만해질 수 있습니다.
핵심 포인트
- Temperature는 모델이 다음 토큰을 선택할 확률 분포를 제어합니다.
- 낮은 Temperature는 일관성 및 예측 가능한 출력을 유도합니다.
- 높은 Temperature는 다양하고 창의적인 아이디어를 탐색하게 합니다.
- AI 에이전트는 관찰-추론-행동의 루프를 통해 작동하며, 온도는 이 과정에 영향을 줍니다.
안녕하세요, 저는 Rijul입니다. 저는 비즈니스 중요 시스템을 위해 설계된 폭발 반경 인식 AI 코드 리뷰 도구인 LiveReview를 만들고 있습니다. [저희 프로젝트를 스타]하여 개발자들이 이 프로젝트를 발견하고, 사용해보고, 제품 개선에 도움을 줄 피드백을 공유할 수 있도록 도와주세요.
AI에게 메시지를 입력하면, 모델은 답변 전체를 한 번에 작성하지 않습니다. 대신 작은 텍스트 조각(‘토큰’)을 하나씩 생성하며, 가능한 옵션들에 할당하는 확률에 기반하여 다음 토큰을 선택합니다.
예를 들어, 모델이 다음에 올 단어를 선택해야 한다고 가정해 봅시다. 모델은 다음과 같은 확률을 할당할 수 있습니다:
| 다음 단어 | 확률 |
|---|---|
| "search" | 70% |
| ... |
모델은 이 분포에서 샘플링(sampling)합니다. 마치 가중치 주사위를 굴리는 것과 같습니다. 'Search'가 가장 가능성이 높은 선택이지만, 'calculate'와 'email'도 가능한 옵션입니다.
이러한 샘플링 과정은 무작위성(randomness)을 도입하며, 이것이 동일한 질문에 대해 다른 답변이 나올 수 있는 이유 중 하나입니다.
Temperature는 무엇을 할까요?
Temperature는 모델이 가능한 다음 토큰들에 확률을 얼마나 급격하게 또는 균등하게 분포시킬지를 제어합니다.
기술적으로, 이는 모델의 원시 점수(raw scores)인 _logits_를 확률로 변환하기 전에 재조정(rescales)하는 과정입니다. 이 과정을 통해 각 토큰이 선택될 가능성이 달라집니다.
다양한 Temperature 설정이 동일한 선택에 어떻게 영향을 미칠 수 있는지 살펴보겠습니다.
| 다음 단어 | T = 0.5 | T = 1 | T = 2 |
|---|---|---|---|
| "search" | 88% | 70% | 55% |
| ... |
이 값들은 예시일 뿐입니다. 실제 확률은 모델의 원시 점수와 Temperature 설정에 따라 달라집니다.
- 낮은 온도 (Low temperature): 가장 가능성이 높은 옵션들이 더욱 지배적이 됩니다. 모델은 더 예측 가능한 출력을 생성하는 경향이 있습니다.
- 높은 온도 (High temperature): 확률 분포가 더욱 고르게 분산되어, 덜 가능성 있는 옵션들도 선택될 기회가 높아집니다. 출력은 더욱 다양하고 놀라워질 수 있습니다.
- 온도가 0에 가까울 때 (Temperature near zero): 모델은 가장 높은 확률의 토큰을 점점 더 선호합니다. 0일 경우, 많은 구현체는 그리디 디코딩(greedy decoding)을 사용하여 최상위 토큰을 직접 선택합니다.
이 온도를 모델의 선택에 무작위성이 얼마나 영향을 미치는지 제어하는 다이얼이라고 생각해보세요.
채팅봇에서 온도가 작동하는 방식 (How Temperature Affects a Chatbot)
채팅봇에서는 질문을 하고, 모델이 답변을 생성하며, 사용자가 그 결과를 읽습니다. 온도는 그 답변이 어떻게 표현될지, 그리고 어떤 아이디어를 탐색할지에 영향을 미칩니다.
- 낮은 온도: 답변은 더 일관되고, 초점이 맞추어져 있으며, 예측 가능합니다.
- 높은 온도: 답변은 더욱 다양하고 창의적일 수 있지만, 초점을 잃거나 오류가 발생하기 쉬워질 수도 있습니다.
만약 답변이 약간 틀렸다면, 사용자는 이를 알아차리고 다시 질문할 수 있습니다. 보통 인간이 결과를 확인합니다. 잘못된 선택의 비용은 어색한 문장이나 관련 없는 제안일 수 있습니다.
이제 같은 모델이 에이전트로 작동할 때 무슨 일이 일어나는지 고려해 봅시다.
AI 에이전트가 작동하는 방식 (How an AI Agent Works)
AI 에이전트는 일반적으로 다음과 같은 루프를 따릅니다:
- 현재 상황을 관찰합니다 (Observe the current situation).
- 웹 검색, 코드 실행, API 호출 또는 파일 편집 등 다음에 무엇을 할지 결정합니다.
- 행동을 실행합니다 (Execute the action).
- 결과를 검토합니다 (Examine the result).
- 작업이 완료될 때까지 반복합니다 (Repeat until the task is complete).
단일 작업은 10단계, 20단계, 심지어 100단계가 걸릴 수도 있습니다. 일부 단계는 인간이 모든 결정을 확인하지 않고 진행될 수 있습니다.
모델은 여전히 토큰을 선택하지만, 그 토큰들은 이제 이후의 모든 것을 좌우하는 행동들을 결정할 수 있게 됩니다. 이것이 온도를 고려해야 할 중요한 설정으로 만듭니다.
에이전트에서 온도가 더 중요한 이유 (Why Temperature Matters More in Agents)
1. 작은 오류가 누적될 수 있다 (Small Errors Can Compound)
에이전트가 20단계의 작업을 완료하고 각 단계가 정확할 확률이 98%라고 가정해 봅시다. 만약 이 단계들이 독립적이고 모든 단계가 정확해야 한다고 가정하면, 20단계 모두 성공할 확률은 다음과 같습니다:
0.98 ** 20 # 약 67%
각 단계의 신뢰도가 95%일 때는 이 확률이 약 36%로 떨어집니다. 99%라면 약 82%입니다.
이는 신뢰도가 긴 일련의 단계를 거치면서 어떻게 감소할 수 있는지를 보여줍니다.
더 높은 temperature가 모든 단계를 자동으로 덜 신뢰성 있게 만드는 것은 아닙니다. 하지만 부적절한 토큰이나 액션을 선택할 가능성을 높일 때, 그러한 실수는 이후 단계에 영향을 미칠 수 있습니다. 잘못된 초기 결정은 에이전트를 잘못된 경로로 이끌어 나머지 작업을 완료하기 더 어렵게 만들 수 있습니다.
챗봇의 경우, 부적절한 선택은 어색한 문장을 생성할 수 있습니다. 하지만 에이전트의 경우에는 전체 워크플로우를 망가뜨릴 수 있습니다.
2. 에이전트는 구조화된 출력을 자주 생성합니다
챗봇은 주로 사람이 읽을 수 있는 텍스트를 생성합니다. 반면, 에이전트는 도구 호출(tool calls), JSON 객체, API 매개변수와 같이 소프트웨어가 해석해야 하는 구조화된 출력을 자주 생성합니다.
예를 들어:
{
"tool": "search_files",
"query": "invoice_2026.pdf",
...
컴퓨터는 이 출력을 엄격한 규칙에 따라 처리합니다. 오타가 난 도구 이름, 유효하지 않은 매개변수, 또는 잘못된 JSON은 호출 실패를 야기할 수 있습니다. 시스템에 따라서는 부정확하지만 유효한 호출이 의도치 않은 행동을 수행하게 할 수도 있습니다.
구조화된 출력은 일반적인 산문보다 변동의 여지가 적은 경우가 많습니다. 이 때문에 에이전트가 도구와 상호 작용할 때 신뢰성 있는 생성이 특히 중요합니다.
3. 에이전트 액션은 실제 결과를 초래합니다
챗봇의 응답은 보통 화면상의 텍스트입니다. 하지만 에이전트는 이 응답을 기반으로 이메일 전송, 파일 삭제, 명령어 실행 또는 돈 지출과 같은 행동을 할 수 있습니다.
부적절한 선택은 더 이상 단순히 어색한 문장에 그치지 않습니다. 되돌리기 어려운 액션을 촉발할 수도 있습니다.
온도(Temperature)가 낮으면 토큰 선택이 더 예측 가능해지지만, 이것 자체가 안전장치인 것은 아닙니다. 에이전트는 여전히 권한 제한(permission limits), 입력 유효성 검사(input validation), 민감한 작업에 대한 인간 승인(human approval for sensitive actions), 그리고 파괴적인 작업을 실행하기 전의 확인 절차와 같은 보호 장치가 필요합니다.
4. 디버깅에는 재현 가능성이 요구됩니다
만약 에이전트가 30단계 작업 중 14단계에서 실패했다고 가정해 봅시다. 당신은 이를 다시 실행하여 실패를 재현하고 무엇이 잘못되었는지 파악하고 싶습니다.
온도가 높으면 샘플링(sampling) 과정에서 매번 다른 경로로 에이전트를 유도할 수 있습니다. 이 경우 실패가 사라져서 원인을 조사하기 더 어려워질 수 있습니다. 온도를 낮추면 에이전트의 행동이 더 재현 가능해지므로, 변경 사항을 테스트하고 결과를 비교하는 데 도움이 됩니다.
하지만 재현 가능성 또한 모델, 사용되는 도구(tools), 환경(environment), 그리고 외부 시스템의 상태와 같은 요인에 따라 달라집니다. 낮은 온도만으로는 동일한 실행을 보장할 수 없습니다.
에이전트의 온도를 항상 0으로 설정해야 할까요?
반드시 그렇지는 않습니다. 예측 가능한 행동은 에이전트에게 유용하지만, 온도를 0으로 설정하는 것이 만능 해결책은 아닙니다.
변동성(variation)이 가치 있는 상황들이 있습니다:
- 루프에 빠짐: 에이전트가 같은 실패한 행동을 반복적으로 선택할 수 있습니다. 대안적인 접근 방식을 탐색하는 것이 회복에 도움이 될 수 있습니다.
- 다양한 솔루션 탐색: 정보 찾기, 검색 쿼리 브레인스토밍(brainstorming), 또는 후보 솔루션 생성과 같은 작업은 변동성으로부터 이점을 얻을 수 있습니다.
- 워크플로우 내 창의적 작업: 초안 작성이나 아이디어 제안을 하는 에이전트는 다른 단계에서 더 예측 가능한 행동이 필요하더라도, 적당한 온도(moderate temperature)로부터 이점을 얻을 수 있습니다.
적절한 설정은 작업에 따라 다릅니다. 워크플로우는 또한 각기 다른 단계에 대해 서로 다른 온도를 사용할 수 있으며, 도구 호출에는 예측 가능한 출력을 선호하고 브레인스토밍 중에는 더 많은 변동성을 허용할 수 있습니다.
결론
Temperature는 언어 모델의 토큰 선택에 무작위성이 어떻게 영향을 미치는지 제어합니다. 챗봇의 경우, 이는 주로 응답의 다양성과 예측 가능성에 영향을 미칩니다. 하지만 에이전트의 경우, 그러한 선택은 일련의 도구 호출(tool calls)과 실제 세계 행동(real-world actions)에 영향을 줄 수 있습니다.
그렇기 때문에 temperature는 에이전트 워크플로우에서 더 많은 주목을 받을 자격이 있습니다. 개별 결정에서의 작은 차이가 더 긴 작업의 결과에 영향을 미칠 수 있으며, 예측 불가능한 동작은 실패를 재현하고 디버깅하기 어렵게 만들 수 있습니다.
목표는 모든 곳에서 무작위성을 제거하는 것이 아닙니다. 변화가 유용하고 예측 가능한 동작이 더 중요한 곳을 제어하는 것입니다.
_
팀의 관심은 제한적이며, AI로 생성된 코드의 홍수는 생산 시스템을 안정적이고 안전하게 유지하기 어렵게 만들고 속도까지 늦춥니다._
_
저는 비즈니스 중요 시스템을 위해 설계된, blast-radius를 인지하는(blast-radius aware) AI 코드 리뷰 도구인 LiveReview를 구축하고 있습니다.
모든 diff를 동일한 강조로 제시하는 대신, LiveReview는 각 변경 사항을 blast radius — 즉 호출 그래프(call graph)를 통해 그 영향이 얼마나 멀리 미치는지 — 에 따라 점수화하여, 실제로 중요한 곳에만 주의를 집중할 수 있도록 합니다.
비즈니스 위험이 가장 높은 곳에 코드 리뷰 노력을 투입하세요. 모든 diff에 고르게 분산시키지 마세요.
⭐ GitHub에서 별표하기:
GitHub logo HexmosTech / LiveReview
비즈니스 중요 시스템을 위한 위험 인지 AI 코드 리뷰
LiveReview: 비즈니스 중요 시스템을 위한 위험 인지 AI 코드 리뷰
LiveReview는 자주 배포하는(ship often) 엔지니어링 팀이면서도 고객에게 안정적인 운영 환경을 유지하는 것을 중요하게 생각하는 팀을 위해 구축되었습니다. 이 도구는 낮은 위험도의 변경 사항 중 약 40~50%를 자동으로 승인하며, 나머지 부분에 대해서는 팀이 다음 작업을 수행할 수 있는 도구를 제공합니다:
- 위험한 변경 사항을 더 빠르게 이해합니다.
- 해당 변경 사항의 문제를 사람의 주의가 필요한 작업에 집중하여 수정합니다.
- 엔지니어링 표준을 강제합니다.
- 인시던트(incidents), 롤백(rollbacks), 대기열 대기 시간(queue wait times)과 같은 운영 결과를 학습합니다.
- 시간이 지남에 따라 리뷰 프로세스를 개선하고 효율성을 높입니다.
- 팀이 이미 사용하고 있는 주요 엔지니어링 도구와 연결됩니다.
자동 승인: 인간의 개입 없이 안전한 50% 배포
풀 리퀘스트(Pull Requests)의 최대 50%를 안전하게 자동 승인합니다. 위험 점수화(Risk scoring)는 어떤 머지 리퀘스트(MRs)/PR이 사람의 검토 없이 배포할 만큼 충분히 안전한지를 결정하므로, 팀은 위험하고 중요한 변경 사항에만 리뷰 시간을 할애할 수 있습니다.
demo.mp4
LiveReview가 낮은 위험도의 변경 사항을 자동 승인하는 모습…
아래를 클릭하여 코드를 기반으로 LiveReview를 사용해 보세요:
_
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기