랭체인으로 코드 문제 및 테스트케이스 생성기 만들기_241007

배경 및 목적

코딩 문제를 도메인에 맞게 제출해주고, 15분~1시간 정도의 시간을 재 주는 웹 서비스를 만드려고 함.

참고 자료

https://wikidocs.net/233780

활용 툴

Langchain

Langsmith

ChatGPT

CursorAI

Streamlit

실행 과정

streamlit 라이프사이클이 문제로 보여서, 스크립트 실행으로 복잡도를 낮추려고 함

한국어 텍스트가 표시된 컴퓨터 화면의 스크린샷

위 참고자료를 기반으로 MVC 제작에 성공함

결과 및 인사이트

  • LangSmith 연동에 성공함

한국어 문자 메시지의 스크린샷

  • API 파라미터로 quiz_domain, estimate_time를 변수화할 예정

  • ChatGPT에게 질문한 다음 내용을 바탕으로, 이 스크립트를 LangServe와 LangSmith로 만드려고 함

langchain을 사용한 webapp을 운영할 때 필요한 고려사항은 뭐가 있을까?
* 인프라 및 스케일링:

서버 자원 관리: 사용자 수 증가에 대비하여 서버의 CPU, 메모리, 네트워크 자원을 효율적으로 관리해야 합니다.
오토스케일링: 클라우드 서비스의 오토스케일링 기능을 활용하여 트래픽 변화에 유연하게 대응합니다.
로드 밸런싱: 여러 서버에 트래픽을 분산시켜 서비스 안정성을 높입니다.
API 비용 및 속도 제한:

* 비용 관리: LLM API 호출은 비용이 발생하므로 예산을 고려한 호출 전략이 필요합니다.
속도 제한 대응: API 제공자의 속도 제한(rate limit)을 준수하고, 이를 초과하지 않도록 요청을 관리합니다.
데이터 프라이버시 및 규제 준수:

* 개인정보 보호: 사용자 데이터가 외부로 유출되지 않도록 암호화와 접근 제어를 적용합니다.
규제 준수: GDPR, CCPA 등 지역별 개인정보 보호법을 준수해야 합니다.

* 프롬프트 엔지니어링:

효율적인 프롬프트 설계: 원하는 결과를 얻기 위해 프롬프트를 최적화하고 불필요한 토큰 사용을 최소화합니다.
콘텍스트 관리: 대화의 문맥을 유지하기 위해 필요한 정보만 포함시킵니다.
캐싱 및 응답 최적화:

* 결과 캐싱: 동일한 입력에 대한 응답을 캐싱하여 API 호출 수와 비용을 줄입니다.
지연 시간 최소화: 사용자 경험을 향상시키기 위해 응답 시간을 단축합니다.
모니터링 및 로깅:

* 애플리케이션 모니터링: 시스템 상태를 실시간으로 모니터링하여 이슈를 신속하게 파악합니다.
로그 관리: 에러 로그와 사용자 활동 로그를 저장하고 분석합니다.
보안 고려사항:

* 인증 및 권한 부여: OAuth, JWT 등을 사용하여 안전한 인증 체계를 구축합니다.
취약점 방지: XSS, CSRF, SQL 인젝션 등의 웹 보안 취약점을 방지합니다.
API 키 관리: API 키와 시크릿 정보를 안전하게 저장하고 관리합니다.
모델 선택 및 관리:

* 적절한 모델 선택: 애플리케이션의 목적에 맞는 LLM 모델을 선택합니다 (예: GPT-3.5, GPT-4 등).
모델 업데이트: 새로운 모델이나 업데이트된 버전이 나오면 성능 향상을 위해 검토합니다.
사용자 경험(UX):

* 응답 시간 개선: 비동기 처리나 로딩 애니메이션을 사용하여 대기 시간을 체감적으로 줄입니다.
에러 처리: 오류 발생 시 사용자에게 친숙한 메시지를 제공하고 재시도를 유도합니다.
오류 처리 및 예외 관리:

* 예외 처리 로직 구현: API 호출 실패 시 대체 로직이나 재시도 메커니즘을 마련합니다.
시간 초과 처리: 응답 지연 시 타임아웃 설정을 통해 시스템의 안정성을 확보합니다.
테스트 및 품질 보증:

* 단위 테스트: 개별 기능이 정상적으로 동작하는지 확인합니다.
통합 테스트: 시스템 전반의 연동과 데이터 흐름을 검증합니다.
부하 테스트: 예상되는 최대 트래픽에서도 시스템이 안정적으로 운영되는지 확인합니다.
배포 및 CI/CD 파이프라인:

* 자동화된 배포 프로세스: 코드 변경이 신속하고 안전하게 배포되도록 CI/CD를 구축합니다.
버전 관리: 코드와 설정의 변경 사항을 추적하고 관리합니다.
라이선스 및 서비스 이용 약관 준수:

* API 이용 약관 확인: OpenAI 등의 API 제공자의 이용 약관과 정책을 준수합니다.
콘텐츠 필터링: 부적절한 콘텐츠 생성 방지를 위한 필터링 로직을 구현합니다.
확장성 및 유지보수성:

* 코드 구조화: 모듈화와 디자인 패턴을 활용하여 유지보수가 용이한 코드를 작성합니다.
문서화: 코드, API, 시스템 아키텍처 등에 대한 문서를 작성하여 지식 공유를 촉진합니다.
사용자 피드백 수집 및 개선:

* 피드백 메커니즘 구축: 사용자로부터 직접 피드백을 받을 수 있는 채널을 제공합니다.
데이터 분석: 사용자 행동 데이터를 분석하여 서비스 개선에 활용합니다.

👉 이 게시글도 읽어보세요