
AI 서비스의 과금 모델을 구분하여 사용함으로써 비용과 출력 품질을 최적화하기
요약
AI 서비스 이용 시 비용 효율성을 높이기 위해 정액제와 종량제 모델을 구분하여 사용하는 전략을 제안합니다. 브레인스토밍과 프롬프트 설계는 정액제 모델로, 최종 결과물 생성은 고성능 종량제 모델로 분리하여 토큰 비용을 최적화합니다.
핵심 포인트
- 정액제는 아이디어 확장 및 프롬프트 수정 등 시행착오 단계에 적합
- 종량제는 확정된 프롬프트를 통한 고성능 모델의 최종 결과물 생성에 활용
- 작업 단계별 모델 분리를 통해 불필요한 토큰 비용 발생을 방지
- ChatGPT로 기획 후 Claude로 실행하는 워크플로우 예시 제시
AI를 더 활용하고 싶다.
그렇게 생각하는 한편, 고성능 모델을 사용하면 사용할수록 이용 요금은 쌓여갑니다.
특히 종량제 (Pay-as-you-go) 방식의 AI 서비스에서는 기대한 출력을 얻지 못해 프롬프트 (Prompt)를 몇 번이고 수정하는 사이에 예상 이상의 비용이 발생하기도 합니다.
"AI는 쓰고 싶다. 하지만 돈이 너무 많이 들어서 어쩔 수가 없다……"
이 기사는 그러한 고민을 가진 분들을 위해, 제가 현재 실천하고 있는 AI 서비스의 구분 사용법을 정리한 것입니다.
아울러, 종량제 측면에서의 무의미한 시행착오를 줄이기 위해 앞으로 시도해보고 싶은 대책도 소개합니다.
이 기사에서 소개하는 방법은 완성된 베스트 프랙티스 (Best Practice)는 아닙니다.
시행착오를 계속하고 있는 제가 현시점에서 생각하는 "지금의 나에게 있어 최적해"입니다.
또한, 이 기사에서 대상으로 하는 것은 간단한 질문이나 짧은 문장 작성과 같은 가벼운 작업이 아닙니다.
장문 생성, 복잡한 프로그램 작성, 여러 조건을 포함하는 성과물 생성 등, 한 번의 출력에 많은 토큰 (Token)을 사용하는 무거운 작업을 전제로 하고 있습니다.
그 점을 고려하여 읽어 내려가 주시기 바랍니다.
생성형 AI 서비스의 과금 형태는 크게 다음 두 가지로 나뉩니다.
- 월 정액 요금을 지불하는 정액제 (Subscription)
- 토큰 수나 실행 횟수에 따라 요금이 발생하는 종량제 (Pay-as-you-go)
정액제는 이용 요금을 너무 신경 쓰지 않고 AI와의 대화를 반복하기 쉽다는 점이 장점입니다.
아이디어를 내거나, 목적을 정리하거나, 프롬프트를 수정하는 것과 같이 시행착오가 많은 작업에 적합합니다.
반면, 종량제는 용도에 따라 모델을 선택하기 쉬우며, 필요한 순간에만 고성능 모델을 이용할 수 있습니다.
단, 입력이나 출력이 늘어날수록 요금도 늘어납니다. 고성능 모델로 시행착오를 반복하면 그만큼 비용이 불어납니다.
사용하면서 느끼는 점: "정액제로는 부담 없이 몇 번이고 질문할 수 있지만, 종량제로는 입력할 때마다 조금 긴장하게 됩니다."
그래서 저는 모든 작업을 하나의 AI 서비스로 완결짓는 것이 아니라, 작업 단계에 따라 정액제와 종량제를 구분하여 사용하고 있습니다.
현재는 다음과 같은 흐름을 기본으로 하고 있습니다.
ChatGPT의 정액 플랜으로 브레인스토밍(벽치기) 하기
↓
목적, 요건, 출력 형식을 정리하기
...
각각의 역할을 간단히 나누면 다음과 같습니다.
-
아이디어를 확장하기
-
목적을 정리하기
-
요건을 언어화하기
-
프롬프트를 만들기
-
출력 형식을 결정하기
-
문제점을 찾아내기
-
정리된 프롬프트를 실행하기
-
고성능 모델로 성과물을 생성하기
-
장문이나 복잡한 태스크 (Task)를 처리하기
-
최종적인 품질을 높이기
즉, 생각하는 작업이나 시행착오는 정액제 측에서 수행합니다.
요건이 확정된 후의 본 작업은 종량제 측의 고성능 모델에 맡깁니다.
현재의 구분 사용법: "ChatGPT로 여러 번 브레인스토밍을 하여 프롬프트가 확정되면 Claude에게 넘긴다. 이 흐름이 현시점에서는 가장 사용하기 편하다고 느끼고 있습니다."
이 방법에는 한 가지 큰 문제가 있습니다.
ChatGPT로 충분히 브레인스토밍을 했다고 생각해도, Claude에 프롬프트를 전달한 후에 부족한 조건을 깨닫는 경우가 많기 때문입니다.
예를 들어, 다음과 같은 케이스가 있습니다.
- 예상했던 출력 형식과 다르다
- 문장의 톤 (Tone)이 맞지 않는다
- 대상 독자 설정이 모호했다
- 넣고 싶은 정보가 빠져 있다
- 불필요한 설명이 많다
- 수정할 때마다 다른 부분이 무너진다
- 나 자신이 완성 조건을 명확히 하지 못했다
"ChatGPT로 제대로 브레인스토밍을 했다고 생각했는데, Claude의 출력을 보는 순간 '아, 이 조건을 전달하지 않았구나'라고 깨닫는 일이 여러 번 있었습니다."
부족한 조건을 깨달을 때마다 Claude 측에서 프롬프트를 수정하여 재실행합니다.
하지만 종량제에서는 입력과 출력 시마다 요금이 발생합니다.
게다가 대화를 계속할수록 과거의 주고받은 내용도 입력에 포함되기 때문에, 1회당 처리량이 늘어나는 경우도 있습니다.
"조금만 고칠 생각이었는데, 또 전체 문장을 생성하게 되어 버렸다……. 지금 주고받은 내용으로 비용이 얼마나 들었을까."
현재의 과제는 다음과 같이 표현할 수 있습니다.
정액제 측에서 수행하는 브레인스토밍의 정밀도가 낮기 때문에, 종량제 측에서 값비싼 시행착오가 발생하고 있습니다.
종량제 측에서 사용하는 모델을 저렴한 것으로 바꾸는 것만으로는 근본적인 해결책이 되지 않습니다.
먼저 개선해야 할 것은 종량제 측으로 넘기기 전의 설계입니다.
프롬프트의 정밀도를 높이는 방법으로, 용도별 템플릿을 만드는 안이 있습니다.
예를 들어, 다음과 같은 분류입니다.
- 기사 작성용
- 요약용
- 조사용
- 프로그램 생성용
- 코드 리뷰 (Code Review)용
- 메일 작성용
용도별로 최적화된 템플릿이 있다면, 프롬프트의 누락을 줄일 수 있을지도 모릅니다.
하지만 저는 그렇게 많은 템플릿을 관리하고 싶지 않습니다.
"기사 작성용, 요약용, 코드용…… 이렇게 템플릿을 늘려가다 보면 끝이 없습니다. 애초에 관리하는 것 자체가 번거롭습니다."
용도별로 템플릿을 만들기 시작하면 다음과 같은 문제가 발생합니다.
- 어떤 템플릿을 사용해야 할지 망설여짐
- 비슷한 템플릿이 늘어남
- 오래된 템플릿이 계속 남아 있음
- 템플릿 수정 및 관리에 시간이 걸림
- 템플릿을 채우는 것 자체가 목적이 됨
비용을 줄이기 위해 시작한 일인데, 템플릿 관리에 시간을 써버린다면 의미가 없습니다.
자신에게 맞는 운용 방식을 고민한 결과, "번거로운 구조를 만들어도 저는 아마 계속하지 못할 것입니다. 가능한 한 관리할 것을 늘리지 않고, 최소한의 절차로 개선하고 싶습니다"라고 결론지었습니다.
그래서 용도별 템플릿을 대량으로 만드는 대신, 가능한 한 심플한 방법을 생각했습니다.
용도별 템플릿을 대량으로 만드는 것이 아니라, 기본이 되는 범용 포맷을 딱 하나만 준비합니다.
# 목적
무엇을 달성하고 싶은가
# 배경
...
매번 모든 항목을 채울 필요는 없습니다.
태스크 (Task)와 관련된 항목만 사용하고, 부족한 정보가 없는지 확인합니다.
예를 들어, 프로그램 생성이라면 다음 내용을 추가합니다.
- 사용하는 언어와 버전
- 입력과 출력
- 실행 환경
...
템플릿 자체를 늘리는 것이 아니라, 기본 구조는 하나로 두고 필요한 확인 항목만 교체합니다.
이 방법이라면 계속할 수 있을 것 같습니다! "템플릿을 여러 종류로 나누어 쓰는 것은 번거롭지만, 하나라면 관리할 수 있을 것 같습니다."
Claude에게 프롬프트를 전달하기 전에, 필요한 정보가 갖춰져 있는지 확인합니다.
체크 항목의 예는 다음과 같습니다.
- 이 작업의 목적이 명확한가
- 누가 결과물을 읽는가
- 최종적으로 무엇을 만드는가
...
여기서 중요한 것은 프롬프트를 길게 만드는 것이 아닙니다.
필요한 조건이 빠지지 않은 상태를 만드는 것입니다.
조건을 대량으로 추가하면 지시 사항끼리 충돌하거나, 정말 중요한 내용이 묻힐 가능성이 있습니다.
따라서 체크리스트는 프롬프트를 비대하게 만들기 위해서가 아니라, 부족한 정보를 찾기 위해 사용합니다.
"프롬프트의 문장을 깔끔하게 만드는 것보다, 필요한 조건이 빠지지 않았는지 확인하는 것이 더 중요할지도 모릅니다."
작성한 프롬프트를 바로 Claude에게 보내지 않고, 먼저 ChatGPT에게 리뷰를 시킵니다.
예를 들어, 다음과 같이 의뢰합니다.
다음 프롬프트를 다른 생성 AI에 전달할 예정입니다.
실행 전에 다음 관점에서 문제점을 지적해 주세요.
- 모호한 지시
...
포인트는 "더 좋은 프롬프트로 만들어 주세요"라고 통째로 맡기지 않는 것입니다.
통째로 맡기면 필요 이상으로 길고 복잡한 프롬프트가 돌아올 수 있습니다.
우리가 원하는 것은 완벽해 보이는 장문의 프롬프트가 아닙니다.
여기서 중요한 것은, Claude 측에서 재작업 (rework)이 발생할 법한 문제를 사전에 발견하는 것입니다.
자신에게는 없었던 관점에서 문제를 지적받고, Claude에게 전달하기 전에 프롬프트를 브러시업 (Brush-up)합니다.
"프롬프트를 화려하게 만들고 싶은 것이 아닙니다. 종량제 과금 측면에서 다시 작업해야 하는 원인을 사전에 줄이고 싶은 것입니다."
AI에게 무언가를 만들게 하기 전에, "어떤 상태가 되어야 완성인가"를 결정합니다.
완성 조건을 정하지 않은 채 생성하면, 출력을 보고 나서 "왠지 다르다"고 느껴도 무엇을 고쳐야 할지 판단할 수 없는 경우가 있습니다.
"출력을 보고 위화감은 느껴지는데, 어디가 잘못되었는지 스스로 설명하지 못할 때가 있습니다."
예를 들어, 프로그램 생성이라면 다음과 같은 완성 조건을 설정할 수 있습니다.
- 지정한 언어와 버전에서 동작함
- 필요한 기능이 모두 구현됨
- 예상한 입력에 대해 올바른 결과를 반환함
...
이 완성 조건은 출력 후의 리뷰에도 그대로 이용할 수 있습니다.
다음 결과물이 완성 조건을 충족하는지 확인해 주세요.
조건별로 다음 3단계로 평가해 주세요.
- 충족함
...
완성 조건이 결정되어 있으면 출력 후에 무엇을 수정해야 할지 판단하기 쉬워집니다.
또한, 전체를 처음부터 다시 만드는 것이 아니라 수정이 필요한 부분만 특정하기 쉬워집니다.
문장으로 조건을 설명할 뿐만 아니라, 기대하는 출력의 특징도 전달합니다.
예를 들어, 다음과 같은 정보를 프롬프트에 포함합니다.
기대하는 출력:
- 결론을 먼저 작성할 것
- 한 문장을 짧게 할 것
...
"적당히 잘 해주세요"와 같은 추상적인 지시보다, 판단 기준을 전달하는 것이 출력의 방향성을 맞추기가 더 쉽습니다.
단, 조건을 너무 많이 늘리지 않도록 주의해야 합니다.
조건이 너무 많으면 정말 중요한 지시사항이 묻혀버릴 수 있습니다.
기대하는 것과 피하고 싶은 것을 각각 몇 가지로 압축하여 전달하는 것이 좋습니다.
어려운 점: "조건이 부족하면 기대한 대로 나오지 않습니다. 하지만 조건을 너무 늘리면 이번에는 프롬프트가 다루기 어려워집니다."
현재 저의 구분 사용 방식은 다음과 같습니다.
생각하기, 시도하기, 정리하기
→ ChatGPT의 정액제 플랜
정리된 요구사항을 고성능 모델로 실행하기
...
이 방법의 과제는 정액제 측에서의 브레인스토밍(Wall-hitting)이 불충분할 경우, 종량제 측에서 반복적인 재실행이 발생한다는 점입니다.
그 대책으로서 현재는 다음과 같은 방법을 검토하고 있습니다.
- 관리하는 템플릿을 늘리지 않고, 범용 포맷을 하나만 사용한다
- 실행 전 체크리스트로 누락 여부를 확인한다
- 프롬프트를 실행하기 전에 리뷰하게 한다
- 완성 조건을 먼저 결정한다
- 기대하는 출력과 피하고 싶은 출력을 전달한다
단, 모든 대책을 한꺼번에 도입할 필요는 없습니다.
오히려 운영이 번거로워져서 지속하지 못하게 되는 상황을 더 피하고 싶습니다.
현시점에서의 결론: "정액제로 시행착오를 거치고, 종량제로는 필요한 상황에서만 고성능 모델을 사용한다. 그리고 종량제 측으로 넘기기 전의 설계 정밀도를 무리가 없는 범위 내에서 높여 나간다."
정액제와 종량제는 어느 한 쪽을 선택하는 것이 아닙니다.
각각이 잘하는 작업을 맡기고, 공정에 따라 구분하여 사용하는 것이 중요합니다.
이것이 현시점에서의 저의 최적해입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기