
AI Agent에 대한 생각들최근 생성형 AI가 떠오르면서 동시에 떠오르고 있는 개념이 AI Agent이다. 모두가 에이전트를 외치는 가운데 이제 막 떠오르는 개념이라 그런지 모두가 다른 에이전트를 말할 때도 있다. 요즘 떠오르고 있는 에이전트란 LLM을 바탕으로 한 에이전트를 말하는 듯 하지만 일단은 그냥 알아서 해주는 것, 알아서 해주는 것 등의 개념으로 통용되고 있는 듯 하다 .이렇게 산개되어있는 개념을 하나씩 정리해보려고 한다.AI 산업에서의 AgentAI 산업에 있어 agent 는 센서를 통해 주변 환경을 인식하고 그에 맞게 움직이는 독립적인 프로그램이나 존재이다.에이전트는 주변을 감지하고 생각한 뒤 행동하기 위해 자신의 actuator(동작 장치)를 사용한다.에이전트의 일반적인 예시에는 다음이..

Django, Node.js, Flask, FastAPI, Express 등등, 스크립팅 언어의 프레임워크를 쓸 때는 API endpoint path의 순서를 조심해야한다. 나같은 경우엔 React와 Django에서 이 순서를 조심하다가 FastAPI에서 이 순서를 간과하여 굉장한 삽질을 해버렸다. 알고보니 대부분의 스크립팅 언어 프레임워크는 리퀘스트가 들어오면 내가 정의한 코드의 순서대로 경로를 매칭한다는 것이다. 즉, 광범위한 path를 코드 제일 위에 위치시키면 그것만 매칭해버린다는 것이다. 아래의 API 코드를 보자. @app.route('/users') def get_users(): ... @app.route('/users/') def get_user(user_id): ... 이 경우엔 /use..

DIP - 의존 역전 원칙(Dependency inversion principle) 고차원 모듈은 저차원 모듈에 의존하면 안 된다. 이 두 모듈 모두 다른 추상화된 것에 의존해야 한다. 추상화된 것은 구체적인 것에 의존하면 안 된다. 구체적인 것이 추상화된 것에 의존해야 한다. 로버트 C. 마틴은 DIP에 대해 이렇게 말했다. 이것만 보면 이 말이 의존 역전 원칙이라는 용어와 잘 맞물리지 않는다. 고차원 모듈은 뭐고 저차원 모듈은 뭐지? 먼저 이것부터 알아보자. 고차원 모듈(High Level Module) : Interface/abstraction 같이 저차원 모듈을 조종하는 모듈 저차원 모듈(Low Level Module) : 고차원 모듈이 일을 할 수 있게 도와주는 작은 모듈들 예를 들어 고차원 모..

객체 지향 설계 5원칙 - SOLID SOLID란? SOLID란 용어는 로버트 C.마틴(aka Uncle Bob)가 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙으로 제시한 원칙을 마이클 페더스가 앞글자만 따서 만들어진 용어이며. 다섯가지 원칙은 다음과 같다. SRP(Single Reponsibility Principle) : 단일 책임 원칙 OCP(Open Closed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존 역전 원칙 SOLID는 기존의 높은 응집도..

Clean Code 1. 깨끗한 코드 의도를 분명하게 이름을 지으라. 나쁜 예 int d; 좋은 예 int elapsedTimeDate; int daysSinceCreation; 코드의 맥락이 코드 자체에 명시적으로 드러나게 하여 정보를 충분히 제공해야한다. 그릇된 정보를 피하자 일관성을 유지하여 깔끔한 정보를 주자. 미리 정해진 예약어는 피해서 깔끔한 정보를 주자. l과 1, o와 0과 같이 헷갈릴 수 있는 문자를 피하자. 불용어를 쓰지 말자. class라는 이름을 이미 사용하고 있어서 klass라고 하고싶은가? 하지말자. 불용어는 중복이기도 하다. money와 moneyObject가 있다면 무엇을 뒤져야 하는지 헷갈리지않겠는가! 쓰지말자. 발음하기 쉬운 이름을 사용하자. 프로그래밍은 사회활동이다. a..