[PIPELINE] 각 부분 예외 처리 강화 및 가독성을 고려한 클래스, 메서드 이름 리팩터링#19
Conversation
Summary by CodeRabbit
Walkthrough이 변경사항은 기존의 Changes
Sequence Diagram(s)sequenceDiagram
participant Controller as PipelineController
participant Builder as TogetherPromptBuilder
participant Together as TogetherService
participant Generator as PromptGeneratorService
Controller->>Builder: buildPrompt(visionReport, location)
Builder->>Together: answer("Extract pet info from visionReport ...")
Together-->>Builder: extractedPetInfoJson
Builder->>Generator: generatePrompt(extractedPetInfoJson, location)
Generator-->>Builder: finalPrompt
Builder-->>Controller: finalPrompt
Possibly related PRs
Poem
✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
src/main/java/io/github/petty/pipeline/support/TogetherPromptBuilder.java (2)
20-24: 프롬프트 구성 문자열 개선 제안프롬프트 구성 문자열이 다소 길고 여러 부분이 연결되어 있습니다. 이 부분을 상수로 추출하거나 템플릿 형태로 관리하면 가독성과 유지보수성이 향상될 것입니다.
+ private static final String PET_INFO_EXTRACTION_PROMPT_TEMPLATE = + "%s -> 이 문장에서 반려동물의 이름(name), 종(species), 무게(weight), " + + "맹수 여부(is_danger(only true or false))를 JSON 형식으로 작성 + " + + "만약 반려동물의 종과 무게를 보았을 때, 입마개가 필요할 것 같다면 맹수 여부를 'true'로 작성 + " + + "무게는 kg 단위를 반드시 포함" + "no markdown, only JSON" + "최종 결과에 {}는 제거"; public String buildPrompt(String visionReport, String location) throws Exception { try { if (visionReport.isEmpty()) { throw new IllegalStateException("Vision API 에서 필수 정보를 받아오지 못했습니다."); } - String extractedPetInfoJson = togetherService.answer( - visionReport + " -> 이 문장에서 반려동물의 이름(name), 종(species), 무게(weight), 맹수 여부(is_danger(only true or false))를 JSON 형식으로 작성 + " + - "만약 반려동물의 종과 무게를 보았을 때, 입마개가 필요할 것 같다면 맹수 여부를 'true'로 작성 + " + - "무게는 kg 단위를 반드시 포함" + "no markdown, only JSON" + "최종 결과에 {}는 제거" - ); + String extractedPetInfoJson = togetherService.answer( + String.format(PET_INFO_EXTRACTION_PROMPT_TEMPLATE, visionReport) + );
27-29: 예외 처리 개선 제안현재 모든 RuntimeException을 포착하고 일반적인 메시지로 다시 던지고 있습니다. 원래 예외의 정보를 로깅하거나 예외 체인에 포함시키면 디버깅이 더 용이해질 것입니다.
} catch (RuntimeException e) { - throw new RuntimeException("프롬프트 빌드 중 예기치 못한 오류가 발생했습니다."); + throw new RuntimeException("프롬프트 빌드 중 예기치 못한 오류가 발생했습니다.", e);
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
src/main/java/io/github/petty/pipeline/controller/PipelineController.java(3 hunks)src/main/java/io/github/petty/pipeline/service/PromptAssemblyService.java(0 hunks)src/main/java/io/github/petty/pipeline/service/PromptAssemblyServiceImpl.java(0 hunks)src/main/java/io/github/petty/pipeline/service/PromptGeneratorServiceImpl.java(1 hunks)src/main/java/io/github/petty/pipeline/service/TogetherServiceImpl.java(2 hunks)src/main/java/io/github/petty/pipeline/support/TogetherPromptBuilder.java(1 hunks)
💤 Files with no reviewable changes (2)
- src/main/java/io/github/petty/pipeline/service/PromptAssemblyService.java
- src/main/java/io/github/petty/pipeline/service/PromptAssemblyServiceImpl.java
🔇 Additional comments (9)
src/main/java/io/github/petty/pipeline/service/TogetherServiceImpl.java (3)
21-22: API 모델을 설정 파일에서 주입하도록 개선했습니다.설정 파일에서 API 모델을 주입받는 방식으로 변경한 것은 좋은 개선입니다. 하드코딩된 값을 제거하고 외부 설정으로 관리함으로써 환경별 구성과 모델 변경이 용이해졌습니다.
30-30: API 요청 본문에 주입된 모델 변수를 사용하도록 수정했습니다.설정에서 주입받은
apiModel변수를 사용하도록 변경한 것이 잘 적용되었습니다. 이로써 모델 변경 시 코드 수정 없이 설정 파일만 변경하면 됩니다.
43-43: 예외 메시지를 더 명확하게 개선했습니다."잘못된 결과" 대신 "Together API를 호출하지 못하였습니다"로 변경하여 오류의 원인을 더 명확하게 표현한 것이 좋습니다. 오류 발생 시 문제 해결이 용이해질 것입니다.
src/main/java/io/github/petty/pipeline/service/PromptGeneratorServiceImpl.java (1)
10-14: 입력값 검증 로직 추가로 예외 처리가 강화되었습니다.필수 정보와 사용자 위치 정보에 대한 빈 값 체크를 추가한 것은 매우 좋은 개선입니다. 이를 통해 잘못된 입력으로 인한 문제를 사전에 방지하고, 사용자에게 명확한 오류 메시지를 제공할 수 있게 되었습니다. 예외 메시지도 구체적이고 이해하기 쉽습니다.
src/main/java/io/github/petty/pipeline/controller/PipelineController.java (3)
3-3: 불필요한 import 제거 및 새로운 컴포넌트 import 추가PromptAssemblyService 대신 새로운 TogetherPromptBuilder 컴포넌트를 import하도록 변경했습니다. 코드 정리가 잘 되었습니다.
17-17: 의존성 주입 개선PromptAssemblyService에서 TogetherPromptBuilder로 의존성이 변경되었습니다. 이는 PR 목표에 맞게 컴포넌트의 역할과 책임을 명확히 하는 좋은 리팩토링입니다.
33-33: 메서드 호출 변경assemblePrompt에서 buildPrompt로 메서드 호출이 변경되었습니다. 메서드 이름이 더 직관적으로 바뀌어 코드의 가독성이 향상되었습니다.
src/main/java/io/github/petty/pipeline/support/TogetherPromptBuilder.java (2)
8-14: 새로운 컴포넌트 구조가 잘 설계되었습니다.TogetherPromptBuilder 컴포넌트가 적절하게 구현되었습니다. 생성자 주입을 통해 의존성을 관리하고, 단일 책임 원칙을 준수하며, 프롬프트 생성 로직을 효과적으로 통합했습니다.
17-19: 입력값 검증 로직이 잘 추가되었습니다.Vision API 결과가 비어있는 경우에 대한 예외 처리가 적절히 구현되었습니다. 이러한 검증은 불필요한 API 호출을 방지하고 사용자에게 명확한 오류 메시지를 제공합니다.
✅ 리뷰
🔧 제안사항
|
[PIPELINE] 각 부분 예외 처리 강화 및 가독성을 고려한 클래스, 메서드 이름 리팩터링
📜 PR 내용 요약
⚒️ 작업 및 변경 내용
📚 기타 참고 사항