티스토리 뷰
AI 프롬프트는 인공지능 모델이 사용자의 요청에 따라 정확한 결과를 생성하도록 지시하는 입력 텍스트입니다. 특히 개발분야에서 프롬프트를 통해 코드를 생성하거나 디버깅, 최적화 작업을 효율적으로 수행할 수 있습니다. 이 글에서는 프롬프트의 종류를 설명하고, 간단한 예제를 작성해 보겠습니다.
1. 프롬프트의 종류
1.1. 제로샷(Zero-Shot) 러닝
제로샷 러닝은 AI에게 추가 예시 없이 작업을 수행하도록 요청하는 방식입니다. 모델은 사전 학습된 지식을 기반으로 작업을 처리하므로, 명확하고 구체적인 지시가 필수적입니다. 간단한 코드 생성이나 빠른 디버깅에 적합하지만, 복잡한 작업에서는 세부 맥락 부족으로 출력이 제한적일 수 있습니다.
1.2. 원샷(One-Shot) 러닝
원샷 러닝은 하나의 예시를 제공하여 AI가 작업의 맥락과 형식을 이해하도록 돕는 방식입니다. 예시는 모델이 원하는 출력 스타일을 파악하는 데 도움을 주며, 소스 작성 시 단일 예시로 충분한 경우에 효과적입니다. 제로샷보다 더 정교한 결과를 얻을 가능성이 높습니다.
1.3. 퓨샷(Few-Shot) 러닝
퓨샷 러닝은 여러 예시를 제공하여 AI가 작업 패턴을 학습하도록 하는 방식입니다. 복잡한 소스의 일관된 구조를 요구할 때 유용하며, 다수 예시를 통해 모델이 세부 요구사항을 더 정확히 이해하도록 돕습니다. 이 방식은 정밀한 출력이 필요한 경우에 강력합니다.
2. 예시
2.1. 제로샷 러닝 예시
- 프롬프트
Java Spring Boot에서 JSON 응답을 반환하는 간단한 GET 엔드포인트를 작성해.
- 예상출력
@RestController
@RequestMapping("/api/products")
public class ProductController {
@GetMapping
public List<Product> getAllProducts() {
return productService.findAll();
}
}
- 설명 : 예시 없이 간단한 GET 엔드포인트를 요청했습니다. AI는 학습된 지식을 바탕으로 기본적인 REST API 코드를 생성합니다.
2.2. 원샷 러닝 예시
- 프롬프트
Java Spring Boot에서 REST API 엔드포인트를 작성해. JSON 응답과 예외 처리를 포함해야 해.
[예시]
- 입력: 'ID로 제품을 조회하는 GET 엔드포인트'
- 출력:
@RestController
@RequestMapping("/api/products")
public class ProductController {
private final ProductService productService;
public ProductController(ProductService productService) {
this.productService = productService;
}
@GetMapping("/{id}")
public ResponseEntity<Product> getProductById(@PathVariable Long id) {
try {
Product product = productService.findById(id);
return ResponseEntity.ok(product);
} catch (ProductNotFoundException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
}
}
}
[요청]
- 입력 : 제품 이름을 검색하는 GET 엔드포인트
- 출력 : ?
- 예상출력
@RestController
@RequestMapping("/api/products")
public class ProductController {
private final ProductService productService;
public ProductController(ProductService productService) {
this.productService = productService;
}
@GetMapping("/search")
public ResponseEntity<List<Product>> searchProductsByName(@RequestParam String name) {
try {
List<Product> products = productService.findByName(name);
return ResponseEntity.ok(products);
} catch (ProductNotFoundException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
}
}
}
- 설명 : 원샷 러닝의 특징인 단일 예시를 통해 SpringBoot 엔드포인트의 구조, 의존성 주입, 예외 처리 패턴을 전달했습니다. AI는 제공된 예시를 참고해 제품 이름 검색 엔드포인트를 동일한 스타일로 생성하며, @RequestParam 을 사용해 쿼리 파라미터를 처리하고 예외 처리 로직을 유지합니다. 이는 원샷 러닝이 단일 예시로 일관된 코드 패턴을 학습해 적용하는 데 효과적임을 보여줍니다.
2.3. 퓨샷 러닝 예시
- 프롬프트
Java Spring Boot에서 REST API 엔드포인트를 작성해. JSON 응답과 HTTP 상태 코드를 포함해야 해.
[예시1]
- 입력: '모든 사용자 목록을 반환하는 GET 엔드포인트'
- 출력:
```
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping
public ResponseEntity<List<User>> getAllUsers() {
List<User> users = userService.findAll();
return ResponseEntity.ok(users);
}
}
```
[예시2]
- 입력: 'ID로 사용자 삭제하는 DELETE 엔드포인트'
- 출력:
```
@RestController
@RequestMapping("/api/users")
public class UserController {
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
userService.deleteById(id);
return ResponseEntity.noContent().build();
}
}
```
[요청]
- 입력: '새로운 사용자를 생성하는 POST 엔드포인트'
- 출력: ?
- 예상출력
@RestController
@RequestMapping("/api/users")
public class UserController {
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user) {
User createdUser = userService.save(user);
return ResponseEntity.status(HttpStatus.CREATED).body(createdUser);
}
}
- 설명 : 다수 예시를 통해 SpringBoot REST API의 패턴과 HTTP 상태 코드 사용법을 학습시켰습니다. AI는 새로운 사용자 생성 엔드포인트를 동일한 스타일로 작성합니다.
2.4. 정리
3. 마무리
제로샷, 원샷, 퓨샷 러닝은 각각의 강점을 가진 프롬프트 방식입니다. 제로샷은 빠른 코드 생성에, 원샷은 단일 예시로 패턴을 전달하는 데, 퓨샷은 복잡한 API 설계에 적합합니다. 특히 원샷 러닝은 예외 처리와 의존성 주입 같은 SpringBoot의 핵심 패턴을 단일 예시로 효과적으로 전달할 수 있음을 위 예시에서 확인할 수 있습니다.
감사합니다.
'도구 및 환경 > AI' 카테고리의 다른 글
[Windsurf] VS Code Vue 프로젝트 Windsurf(Codeium) 적용하기 (0) | 2025.05.15 |
---|---|
[NapkinAI] SpringBoot 프로젝트 시각화하기(학생 관리 API 예제) (0) | 2025.04.24 |
[Github Copilot] 인텔리J 활용가이드(With SpringBoot) (1) | 2025.04.24 |
[AI] ChatGPT, DeepSeek, Grok 차이 알아보기 (0) | 2025.02.25 |
- Total
- Today
- Yesterday