전체 글 108

LLM을 덜 호출하는 시스템 설계: Semantic Router와 Cache

LLM 에이전트를 운영하면서 가장 자주 고민하게 되는 문제 중 하나는 비용이다.트래픽이 늘어나면 LLM 호출 비용도 거의 선형으로 증가한다. 호출량을 줄이지 않은 채 더 저렴한 모델만 찾는 방식에는 한계가 있다.Azure OpenAI의 PTU는 예약 할인을 적용하더라도 확보한 처리 용량만큼 비용이 발생한다. 결국 단가 최적화뿐 아니라 필요한 PTU 규모 자체를 줄이는 설계가 필요하다.처음에 생각했던 내용은 단순했다.Classification은 생성형 AI가 상용화되기 이전부터 인공지능 모델이 잘하던 작업이다. 출력이 정해진 라벨 중 하나라면 모든 요청을 LLM에 보내야 할 이유는 없다.에이전트 구조의 일부는 discriminative model만으로도 충분하거나, 이를 보조적인 수단으로 활용할 수 있어 ..

개발업무/개발 2026.08.03

AICE Associate 합격후기

회사에서 AICE Associate 시험 지원을 해주어서 시험을 보게 되었습니다.AICE Associate 시험이란?AICE : AI Certificate for Everyone의 약자로, 인공지능에 대한 지식뿐만 아니라 데이터를 분석하고 인공지능 기술을 실제 문제에 활용할 수 있는지를 평가하는 자격시험KT가 개발하고 한국경제신문과 함께 주관하는 시험입니다. AICE Associate는 AICE 등급 중 국가공인을 받은 공인민간자격입니다.Jupyter 환경에서 파이썬 코드를 작성하거나 기존 코드를 완성하면서 데이터 분석, 데이터 전처리, 머신러닝 및 딥러닝 모델링 과정을 수행해야 한다응시료는 8만원이며 3년 자격증 유효기간입니다 출제 범위데이터 분석필요 라이브러리 설치데이터 구성 및 특성 파악데이터 품질..

인공지능 2026.08.01

AWS 저비용 GPU에서 Llama 3.1 8B 서빙 성능 측정

LLM을 서빙하려면 항상 비용이 부족합니다. 작은 GPU에서 정확한 성능 측정을 위해 저렴한 GPU로 얼마만큼의 성능을 내는지 g4dn.xlarge에 Llama 3.1 8B INT4 모델을 vLLM으로 배포하고, 요청 패턴별 처리량과 지연시간, 비용을 측정했습니다 항목구성GPU 서버AWS g4dn.xlarge, NVIDIA T4 16GB부하 발생기t3.medium모델Llama 3.1 8B Instruct AWQ INT4서빙 엔진vLLM 0.6.3통신동일 VPC 내부 private IP인프라Terraform원격 실행AWS Systems Manager결과 저장S3별도의 t3.medium에서 요청을 발생시키고, GPU 서버는 모델 서빙에만 사용하도록 분리했습니다. 로컬에서 부하를 발생시키면 igw에 의해 네트..

Strands Agents와 LangGraph: model이 주도할까, 코드가 주도할까

Strands Agents란?AWS가 공개한 오픈소스 에이전트 SDK. python과 typescript를 지원합니다 Langgraph vs Strands Agents비교에 들어가기 전에 짚을 게 있습니다. 한쪽만 되고 다른 쪽은 안 되는 식의 기능 비교를 하려 하면, 대부분 성립하지 않습니다.지금은 두 프레임워크 모두 model-driven loop, graph, supervisor/swarm 같은 multi-agent, human-in-the-loop와 같은 것들을 다 지원합니다. LangGraph도 prebuilt agent(create_agent)로 model-driven loop를 그대로 주고, Strands에도 실행 순서를 구조로 정의하는 GraphBuilder가 있습니다그러니 진짜 비교 축은..

개발업무/개발 2026.06.07

카카오톡 챗봇 ChatGPT 연동하기

카카오톡 챗봇은 사용자는 앱을 새로 설치하거나 웹사이트에 접속할 필요가 없기 때문에 카카오톡에 챗봇을 만들면 접근성이 좋다 카카오톡 챗봇에서 ChatGPT를 직접 호출하는 것은 아니다.중간에 별도 서버가 필요하다 사용자: ChatGPT가 뭐야?카카오 챗봇→ 내 FastAPI 서버 호출→ FastAPI 서버가 OpenAI API 호출→ GPT 답변 생성→ FastAPI가 카카오 응답 JSON으로 변환→ 카카오톡 말풍선 출력 프로젝트 구성가장 간단하게 잡았다kakao-gpt-bot/├── main.py└── .env .envOPENAI_API_KEY=본인의_OPENAI_API_KEYOPENAI_MODEL=gpt-4o-miniAPI키는 OpenAI 플랫폼에서 생성한다https://platform.openai...

개발업무/개발 2026.05.19

OpenAI LLM API: Responses, Chat Completions, Batch

LLM API에는 아직 하나의 공식 표준이 없다. 하지만 OpenAI의 Chat Completions 형식은 너무 널리 쓰이게 되면서 사실상 표준처럼 자리 잡았다. 그래서 대부분의 LLM 서비스는 Chat Completions와 호환되게 LLM Endpoint를 제공한다 Chat Completions API오랫동안 OpenAI 기반 챗봇 개발의 표준처럼 사용되던 방식.messages 배열의 입력을 받고 각 message는 system, user, assistant 같은 role을 가진다대화를 구성하는 메시지 목록을 주면 모델이 응답을 반환한다SDK 함수는 실제로 /v1/chat/completions를 호출한다from openai import OpenAIclient = OpenAI()completion =..

개발업무/개발 2026.04.25

OAuth란

OAuth란?OAuth 2.0는 제3자 애플리케이션이 HTTP 서비스에 대해 제한된 접근 권한을 얻을 수 있게 한다.(출처 : https://datatracker.ietf.org/doc/html/rfc6749)유의할 점은, OAuth는 인증이 아니라 권한부여를 토큰으로 표준화한 방식이다 OAuth를 처음 접하면 "구글로 로그인 = OAuth"처럼 보이지만, 정확히 말하면 비밀번호를 공유하지 않고도, 필요한 권한만 위임해서 API를 안전하게 호출하는 것이다. OAuth가 해결하려는 문제Linkedin을 구글을 통해 로그인 할때 다음과 같이 할 수 있다이 방식은 다음 문제가 크다.- 제3자(Linkedin)가 비밀번호를 보관하게 됨- 최소권한(조회만 허용 등) 통제 어려움- 사고 시 피해 범위가 큼OAuth..

개발업무/개발 2026.03.21

LLM이 Temperature=0으로 고정했는데도 결과가 바뀌는 이유

https://github.com/jhong92-pro/llm-batch-invariance/blob/main/llm-batch-invariance.ipynb 결합법칙LLM의 대부분 연산은 matmul / reduction인데, GPU에서는 병렬 합산이 일어나며 합치는 순서가 바뀌면 반올림 오차가 달라질 수 있다import torcha = torch.Tensor([1e16])b = torch.Tensor([-1e16])c = torch.Tensor([1])print("(a + b) + c :" , (a + b) + c)print("a + (b + c) :" , a + (b + c))(a + b) + c : tensor([1.])a + (b + c) : tensor([0.])수학적으로는 둘 다 1이어야 할..

인공지능 2026.01.31