지난 3달 간 정말 급하게 ‘ AI 서비스 개발 ‘을 완료했습니다. 이 과제를 수행하기 전 미리 알면 좋은 것들 혹은 알았으면 좋았을 것들을 기록해봅니다.
AI 서비스 개발 시 기획자가 알면 좋았을 것들
- LLM 모델 API는 chatGPT와 같은 chat 기능이 완성되어 있는 것이 아니다.
- LLM 모델 API는 굉장히 low level의 기능만 제공한다.
- 대화의 context를 기억, web search 연결과 같은 기능을 API에서 기본으로 제공하지는 않는다
- 정확도와 비용은 trade off 관계
- LLM 특징인 환각을 줄이고 정확도를 높이려면 어쩔 수 없이 여러 비용(API 사용 비용, 시간, 개발 시간 등)이 증가 될 수 밖에 없다
- LLM 특징인 환각을 줄이고 정확도를 높이려면 어쩔 수 없이 여러 비용(API 사용 비용, 시간, 개발 시간 등)이 증가 될 수 밖에 없다
- 사용자는 항상 올바른 입력을 하지 않는다.
- 사용자가 맥락에서 벗어나거나 잘못된 내용을 입력했을 때 이를 감지할 수 있어야 한다.
- 사용자가 맥락에서 벗어나거나 잘못된 내용을 입력했을 때 이를 감지할 수 있어야 한다.
- 사용자가 진행상태를 파악할 수 있어야 한다.
- 요구사항이 복잡할 수록 planner가 복잡해지고 소요시간이 길어진다.
- 진행 상태를 파악하지 못한다면 사용자는 분석이 진행 중인지 멈춘 것인지 알 수 없다.
- 데이터 프라이버시와 윤리적 고려사항을 초반부터 반영해야 한다.
- 스케일링을 미리 계획해야 한다.
- 초기 프로토타입은 잘 작동할 수 있지만, 사용자 수가 증가하면 API 호출 비용과 지연 시간이 폭증할 수 있다.
- 특히나 OpenAI는 TPM을 늘린다고 해도 TimeOutError가 종종 발생할 수 있음에 유의해야 한다.
- 사용자 피드백 루프를 설계해야 한다.
- AI 서비스는 완벽하지 않기 때문에, 사용자가 도구 호출 여부나, 출력 결과를 평가하거나 수정할 수 있는 기능을 추가하면 서비스 품질이 지속적으로 개선된다.
- 어느 단계에서 HITL(Human In the Loop)가 개입되면 좋은지 미리 설계하는 게 좋다.
AI 서비스 개발 시 개발자가 알면 좋았을 것들
- GPT는 Anthropic에 비해 확실히 성능이 떨어진다.
- planning이 복잡해지고 활용해야 되는 데이터가 많아지면 context engineering이 중요하다
- 각 단계마다 선택적으로 이용할 데이터를 이용하거나 요약한 데이터를 이용하거나 대화 내역을 이용하거나 하는 것을 잘 조절해야 성능이 좋아진다.
- 각 단계마다 선택적으로 이용할 데이터를 이용하거나 요약한 데이터를 이용하거나 대화 내역을 이용하거나 하는 것을 잘 조절해야 성능이 좋아진다.
- context engineering도 중요하지만 prompt engineering도 여전히 중요하다.
- LLM에게 복잡한 요구사항을 전달해야 하는 경우가 존재한다. 이런 경우 prompt engineering이 더욱 중요하다
- LLM에게 복잡한 요구사항을 전달해야 하는 경우가 존재한다. 이런 경우 prompt engineering이 더욱 중요하다
- Langchain, Langgraph와 같은 툴을 사용하더라도 native 라이브러리를 사용해야 할 때가 있다.
- langchain, langgraph은 각각 사용법이 다른 여러 LLM 모델과 벡터 DB들을 랩핑하여 하나의 문법으로 제공해준다.
- 이는 개발 중 상황에 따라 다른 도구들을 유연하게 활용할 수 있게 도와준다.
- 하지만 개발 편리성은 성능과 trade off 관계다. 성능을 높이려면 native 라이브러리를 써야 할 때도 있다.
- 테스트와 모니터링을 기간을 오래 잡아야 한다.
- LLM의 비결정적 특성 때문에 단위 테스트가 어렵지만, golden dataset을 만들어 반복 테스트 하는 게 좋다.