LangChain Agent 처음 만들기 — create_agent로 진짜 에이전트처럼 동작하는 흐름 이해하기여기서부터는 분위기가 조금 달라집니다.지금까지는 체인을 만들고,문서를 찾고,tool도 붙여봤죠.그런데 아직은 어딘가 “기능 조각” 느낌이 남아 있습니다.질문이 오면 우리가 미리 정한 흐름대로 움직이는 쪽에 더 가까웠어요.에이전트는 여기서 한 단계 넘어갑니다.질문을 보고, 지금 뭘 해야 하는지 판단하고, 필요한 tool을 고르고, 결과를 받아서, 최종 답을 만드는 루프가 생깁니다. LangChain 문서는 agent를 “언어 모델과 tools를 결합해 과제를 추론하고, 어떤 tool을 쓸지 결정하며, 반복적으로 해결해 나가는 시스템”으로 설명하고, 전형적인 agent loop는 모델 호출 → too..
로그인만 했다고 끝이 아니다 — Role, Authority, Scope로 관리자 API를 나누는 방법 (FastAPI · Spring Boot · Node.js)JWT를 검증해서 “현재 로그인 사용자”까지 꺼냈다면, 이제 진짜 다음 단계가 남습니다.바로 인가(Authorization) 예요.쉽게 말하면 “누구인지” 확인하는 인증(Authentication) 다음에, **“무엇을 할 수 있는지”**를 정하는 단계입니다. Spring Security 문서도 인증 아키텍처와 별개로 권한 부여(authorization)를 별도 구조로 다루고, FastAPI는 OAuth2 scopes를 통해 인증과 인가를 함께 표현할 수 있다고 설명합니다. (Home)이 주제는 초반에 진짜 많이 헷갈립니다.Role, Autho..
Python으로 공부하는 OpenAI 14편 — 재시도, 멱등성, 실패 복구를 붙여야 운영에서 안 무너집니다AI 기능은 처음엔 “되기만 하면 신기한 코드”처럼 느껴집니다.근데 서비스로 돌리기 시작하면, 진짜 문제는 기능 그 자체보다 실패했을 때 어떻게 버티는가에서 터집니다.특히 OpenAI 붙인 백엔드에서는 이런 일이 생각보다 자주 생깁니다.네트워크가 잠깐 흔들림429 rate limit이 걸림같은 job이 두 번 실행됨웹훅이 중복으로 들어옴워커가 중간에 죽어서 상태가 어정쩡하게 남음재시도를 걸었더니 오히려 중복 결과가 생김이때 필요한 게 바로 세 가지예요.재시도, 멱등성, 실패 복구.OpenAI 공식 Python 라이브러리는 일부 오류에 대해 기본 재시도를 제공하고, Rate limits 가이드는 ra..
LangChain으로 Tool Calling 제대로 다루기 — tool 설계, 설명문, 반환 형식이 품질에 미치는 영향지난 글에서 Tool Calling의 필요성을 봤다면,이번엔 한 단계 더 들어가야 합니다.왜 어떤 tool은 잘 호출되고,어떤 tool은 이상한 순간에 불리고,어떤 tool은 인자를 자꾸 틀리게 넣는지요.처음엔 모델 문제처럼 보일 수 있어요.근데 실제로는 꽤 자주 tool 설계 문제입니다.LangChain 공식 문서는 tool의 이름, 설명, 인자 이름, 인자 설명이 단순한 메타데이터가 아니라, 모델이 “언제 이 도구를 써야 하는지”와 “어떻게 써야 하는지”를 판단하는 데 직접 영향을 준다고 설명합니다. 또 @tool을 쓸 때 type hint는 입력 스키마를 정의하므로 필수이고, doc..
발급한 JWT를 이제 어디에 쓰지? 보호된 API에서 토큰 검증하고 현재 로그인 사용자를 꺼내는 방법 — FastAPI · Spring Boot · Node.js지난 글에서 세션과 JWT의 차이를 정리했죠.그런데 사실 인증은 “로그인 성공”에서 끝나지 않습니다.진짜 중요한 건 그다음이에요.보호된 API에서 토큰을 어떻게 읽는지이 토큰이 진짜인지 어떻게 검증하는지현재 로그인 사용자를 어디서 꺼내는지인증 안 된 요청은 어디서 막는지이 단계가 들어가야 비로소“로그인 기능이 있는 서비스”가 아니라“인증이 실제로 적용된 API 서버” 가 됩니다.이번 글에서는 그걸 FastAPI, Spring Boot, Node.js 기준으로 이어서 정리해보겠습니다.FastAPI는 OAuth2PasswordBearer를 통해 Be..
Python으로 공부하는 OpenAI 13편 — 오래 걸리는 AI 작업은 API 서버에서 바로 처리하지 말고, 백그라운드 작업으로 분리해야 합니다여기까지 시리즈를 따라오면, 슬슬 이런 순간이 옵니다.“기능은 다 되는데, 어떤 요청은 너무 오래 걸린다.”“문서 업로드하고 벡터 스토어 색인까지 한 번에 하려니까 API가 답답하다.”“긴 요약, 대량 생성, 대량 임베딩 작업을 요청-응답 한 번에 묶어두니 운영이 불안하다.”이때 필요한 감각이 바로 백그라운드 작업 분리입니다.솔직히 이 단계부터는 코드만 잘 짜는 문제가 아니라,AI 기능을 운영 가능한 백엔드 구조로 바꾸는 문제에 가까워집니다.OpenAI 공식 문서도 “Run and scale” 아래에 Background mode, Streaming, Webhoo..
Python으로 공부하는 OpenAI 12편 — 비용은 기능보다 늦게 터지지만, 한 번 터지면 훨씬 아픕니다OpenAI 기능은 처음 붙일 때 되게 재밌습니다.채팅 붙고, RAG 붙고, 스트리밍 붙고, 출처까지 붙으면 꽤 근사해 보여요.근데 서비스가 진짜 서비스가 되는 순간,거의 반드시 부딪히는 문제가 하나 있습니다.“이거 비용이 어디서 이렇게 많이 나가지?”이 질문은 늘 늦게 옵니다.처음엔 API 몇 번 호출하니까 체감이 잘 안 돼요.근데 사용자 수가 조금만 늘어도 바로 보입니다.히스토리를 너무 많이 보내고 있나?RAG chunk를 너무 많이 넣고 있나?출력이 너무 길게 나오나?캐시될 수 있는 프롬프트를 매번 바꾸고 있나?로그는 많은데, 정작 어디서 새는지 모르나?이번 글은 바로 그 얘기입니다.기능 얘기..
Tool Calling이 진짜 중요한 이유 — LLM이 답변만 하는 걸 넘어서 외부 기능을 쓰게 만드는 방법RAG까지 오면 한 번 이런 생각이 듭니다.“이제 문서도 찾고, 답도 하네. 그럼 거의 다 된 거 아닌가?”근데 막상 서비스로 가면 바로 한계가 보입니다.사용자가 묻는 건 꼭 “설명”만이 아니거든요.오늘 환율 알려줘내 주문 상태 조회해줘이 숫자들 평균 계산해줘이 API에서 최신 데이터 가져와줘사용 가능한 일정 찾아줘이건 문서 검색만으로는 안 됩니다.왜냐면 여기서는 지식을 말하는 것이 아니라, 외부 기능을 실제로 써야 하기 때문이죠.그래서 Tool Calling이 중요합니다.LangChain 문서는 tools를 “에이전트가 할 수 있는 일을 확장하는 장치”로 설명하고, 실시간 데이터 조회, 코드 실행..
세션이 좋을까, JWT가 좋을까? 로그인 이후 인증 상태를 유지하는 두 가지 방식 제대로 이해하기 — FastAPI · Spring Boot · Node.js비밀번호 해시까지 붙이고 나면, 이제 진짜로 다음 질문이 나옵니다.“로그인 성공한 사용자를 이제 어떻게 기억하지?”여기서 거의 무조건 나오는 단어가 두 개예요.세션(Session)JWT근데 이 주제는 늘 좀 이상하게 흘러갑니다.누군가는 “요즘은 무조건 JWT죠”라고 하고,또 누군가는 “아니, 세션이 더 안전해요”라고 하죠.솔직히 말하면… 둘 다 반쯤 맞고, 반쯤은 맥락이 빠진 말입니다.저도 예전엔 JWT가 더 최신이고 멋진 방식처럼 느껴졌어요.토큰 하나 들고 다니면 되니까 뭔가 더 현대적이고, 마이크로서비스랑도 잘 맞고, 모바일 앱에도 잘 어울려 보..
비밀번호를 그대로 저장하면 왜 위험할까? 해시, 검증, 인증의 첫 단추 제대로 끼우기 — FastAPI · Spring Boot · Node.js여기까지 시리즈를 따라오면서 회원가입 구조, 서비스 계층, repository, 트랜잭션까지 왔잖아요.이쯤 되면 진짜 자연스럽게 붙는 질문이 하나 있어요.“비밀번호는 이제 어떻게 저장하지?”이 질문이 은근히 무섭습니다.왜냐하면 여기서 대충 넘어가면, 앞에서 그렇게 열심히 구조를 잘 나눠놔도 한 번에 보안 구멍이 생기거든요.저도 아주 초반엔 이런 생각을 한 적이 있었어요.그냥 DB에 저장하면 안 되나?SHA-256 한 번 돌리면 되는 거 아닌가?어차피 내 서비스 작은데, 나중에 바꾸면 되지 않을까?근데 이게 진짜 위험한 생각이더라고요.비밀번호는 “그냥 저장하면 안..
- Total
- Today
- Yesterday
- NestJS
- ai철학
- seo 최적화 10개
- kotlin
- Next.js
- nextJS
- Python
- JWT
- 생성형AI
- Express
- fastapi
- DevOps
- nodejs
- CI/CD
- Prisma
- SEO최적화
- LangChain
- 백엔드개발
- JAX
- REACT
- flax
- node.js
- 개발블로그
- 쿠버네티스
- llm
- 웹개발
- PostgreSQL
- Docker
- 딥러닝
- rag
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |

