인턴일기 - 34일차(DeepSeek Bedrock 토큰 계산 재정비 & 모델 성능비교보고서 작성)

2025. 6. 24. 22:32데이터분석 인턴일기

오늘의 업무

DeepSeek Bedrock 호출 코드 수정 및 토큰 수 재계산 로직 개선

Claude 3.7과 DeepSeek R1 챗봇 성능 및 비교 보고서 작성

Postman 툴 활용 학습

 

오늘은 LLM 성능 분석의 마지막 진짜 진짜 마지막 최종 토큰 단위 사용량을 정확하게 측정해보았다.

DeepSeek모델의 응답 토큰 수를 보다 정확하게 계산 할 수 있도록 API호출방식과 출력구조를 개선했고 이를 기반으로 비용산출을 다시 했다.

🛠 1. DeepSeek 호출 구조 및 토큰 계산 로직 수정

기존에는 DeepSeek 응답에서 출력된 텍스트만 가지고 Auto Tokenizer로 토큰 수를 유추하는 방식으로 계산을 했다.

계산결과가 Claude랑 별차이가 없어서 DeepSeek가 가격적인 메리트가 없는 것으로 보여졌고

팀장님께서 Bedrock에서 chat을 켜서 토큰수를 확인해 볼 수도 있다고 하셔서 그렇게 해보니 전혀.. 달랐다 (훨씬 적어야함)

오늘은 Bedrock API의 응답 구조를 정확히 파악하고 이에 맞게 코드 수정을 진행했다.

우선 API Respose 에 Input Token, Output Token이 들어있는데 내가 이걸 몰랐던것 

def call_deep_seek(prompt):
client = get_bedrock_client()

#DeepSeek R1 전용 프롬프트 포맷
formatted_prompt = f"<|begin_of_sentence|)<User|>{prompt|<|Assistant|><think>\n"

body = json.dumps({
	"prompt" : prompt,
    "max_token" : 512,
    "temperature" : 0.5,
    "top_p" : 0.95
})

try:
	respose = client.invoke_model(
    	modelId = MODEL_ID,
        body = body
       
    #응답 텍스트 추출
    body_str = reponse["body"].read().decode("utf-8")
    result = json.loads(body_str)

    #응답에서 텍스트 및 토큰 추출
    choice = result.get("choices",[])
    answer = choice[0]["text"] if choices else "[NO OUTPUT]"

    headers = respose["ResponseMetadata"]["HTTPHeaders"]
    input_tokens = int(headers.get("x-amzn-bedrock-input-token-count", -1))
    output_tokens = int(headers.get("x-amzn-bedrock-output-token-count",-1))

	return answer, input_tokens, output_tokens

except (ClientError, Exception) as e:
	print(f" error:Can't invoke'{MODEL_ID}'. Reason:{e}")
    return f"[ERROR] DEEPSEEK 호출 실패: {e}", -1, -1

 

API호출도 참 어려웠는데 

1. API호출 성공여부 확인

2. 응답전체를 출력해서 응답 구조 확인

처음부터 두개를 확인하고 시작했다면 훨씬 작업시간이 줄어들었을것 같다.

📑 2. Claude 3.7 vs DeepSeek R1 성능 비교 보고서 작성

성능 평가 실험을 기반으로, 응답 품질, 응답 길이, 토큰 사용량, 예상 비용 등을 종합 비교한 보고서를 작성했다.
비교 기준은 다음과 같다:

  • 🧠 의미 유사성 및 정보 정확도
  • 🔍 검색 문맥 활용률 (RAG 기반 응답 적절성)
  • 💬 응답 길이 및 표현력
  • 💸 사용된 입력/출력 토큰 수 및 단가 기반 총 비용

 

오늘은 DeepSeek R1 Bedrock 토큰 계산을 하다가 하루가 다지나갔다.

LLM에게 코드 수정방법을 문의했는데 비정확한 정보로 오히려 시간을 더 소모했고 팀장님의 도움으로 겨우 힌트를 얻어서 

API구조와 응답 방식을 확인해 겨우 해결 할 수 있었다. 

처음써본 Postman 툴도 매우 유용했고 앞으로도 API테스트나 디버깅에 적극적으로 활용 할 수 있을 것 같다.

결과는 다행히(?) DeepSeek R1의 비용이 훨씬 적었다.