AI를 사용하여 .NET 10에서 자동차 목록에서 구조화된 데이터 추출
Source: Dev.to
위 링크에 포함된 전체 텍스트를 제공해 주시면, 해당 내용을 한국어로 번역해 드리겠습니다.
(코드 블록, URL 및 마크다운 형식은 그대로 유지됩니다.)
왜 이것이 중요한가
자동차 목록은 형태와 규모가 다양합니다. 가격 비교 사이트, 마켓플레이스 집계 서비스, 혹은 재고 관리 시스템을 구축하든 다음이 필요합니다:
- 주요 세부 정보(제조사, 모델, 연식, 주행거리, 가격) 추출
- 다양한 형식(판매, 리스, 임대) 처리
- 누락된 정보를 유연하게 다루기
- 대규모 데이터 처리
수동으로 파싱하는 것은 번거롭습니다. AI에게 무거운 작업을 맡기세요! 💪
우리가 사용할 도구
- GitHub 모델 – 강력한 AI 모델에 대한 무료 액세스(신용카드 필요 없음)
- Microsoft.Extensions.AI – .NET용 통합 AI 추상화
- .NET 10 – 최신 및 최고
설정
새 콘솔 앱 만들기
dotnet new console -n TextExtraction cd TextExtraction필요한 패키지 추가
dotnet add package Microsoft.Extensions.AI.OpenAI dotnet add package Microsoft.Extensions.Configuration.UserSecrets
GitHub 토큰을 안전하게 저장하기
dotnet user-secrets init
dotnet user-secrets set "GitHubModels:Token" "your-github-token"추출 모델 정의
CarDetails.cs 파일을 생성합니다:
using System.Text.Json.Serialization;
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum AvailabilityType
{
Sale,
Lease,
Rent
}
public class CarDetails
{
public string Make { get; set; } = string.Empty;
public string Model { get; set; } = string.Empty;
public int? Year { get; set; }
public double? Mileage { get; set; }
public double? Price { get; set; }
public AvailabilityType? AvailabilityType { get; set; }
public double? PricePerMonth { get; set; }
public double? PricePerDay { get; set; }
public string[]? Features { get; set; }
public string? Location { get; set; }
public string ShortSummary { get; set; } = string.Empty;
public int? OwnerCount { get; set; }
}Note: nullable 타입을 사용하면 누락된 데이터를 우아하게 처리할 수 있습니다! ✨
핵심 추출 로직 (Program.cs)
앱 실행
dotnet run샘플 출력
Processing car listings...
✅ Extracted: Honda City
{
"Make": "Honda",
"Model": "City",
"Year": 2018,
"Mileage": 30000,
"Price": 6.5,
"AvailabilityType": "Sale",
"Features": [
"Single owner",
"Showroom condition"
],
"OwnerCount": 1
}
✅ Extracted: Hyundai Creta
{
"Make": "Hyundai",
"Model": "Creta SX",
"Year": 2020,
"AvailabilityType": "Lease",
"PricePerMonth": 22000,
"Features": [
"Premium SUV",
"Sunroof"
]
}솔루션 확장
필드 추가 – 연료 종류, 변속기, 색상
public string? FuelType { get; set; } // Petrol / Diesel / Electric public string? Transmission { get; set; } // Manual / Automatic public string? Color { get; set; }실시간 데이터 처리 – API 또는 RSS 피드에서 목록 가져오기
var listings = await FetchListingsFromApi("https://api.carmarket.com/listings");데이터 검증
if (carDetails.Year > DateTime.Now.Year) { Console.WriteLine("⚠️ Invalid year detected"); }데이터베이스에 저장
await dbContext.CarListings.AddAsync(carDetails); await dbContext.SaveChangesAsync();보다 강력한 모델로 교체
var client = chatService.GetChatClient("gpt-4o"); // Higher accuracy, slightly slower
모범 사례
- 온도를 낮게 유지 – 기본 설정이 가장 일관된 추출을 제공합니다.
- 프롬프트를 명확히 – 필요한 정확한 JSON 구조를 지정합니다.
- nullable 타입 사용 – 모든 리스트에 모든 필드가 포함되는 것은 아닙니다.
- 배치 처리 – 많은 리스트를 효율적으로 처리합니다.
- 토큰 사용량 모니터링 –
response.Usage를 통해 비용을 추적합니다.
🎯 혼란스러운 자동차 광고를 깔끔하고 구조화된 데이터로 바꿀 준비가 되셨나요?
한 번 시도해보고, 스키마를 필요에 맞게 조정한 뒤 AI에게 무거운 작업을 맡겨보세요! 🚀
전 세계 적용 사례
🚀 사용‑케이스
- 🏪 마켓플레이스 집계 – 여러 소스의 목록을 통합
- 💰 가격 인텔리전스 – 시장 전반의 가격 추세를 추적
- 📊 분석 대시보드 – 비정형 데이터에서 인사이트를 구축
- 🤖 챗봇 – 자동차 추천 봇을 구동
- 📱 모바일 앱 – 사용자가 제출한 목록을 파싱
전체 작업 예제 받기
GitHub에서 가져오기:
genai-dotnet-basic_llm_tasks/TextExtraction리포지토리 포함 내용
- ✅ 주석이 포함된 전체 소스 코드
- ✅ 9개의 예시 자동차 목록
- ✅ 구성‑설정 가이드
- ✅ 상세 README
What You’ll Learn
- .NET에서 GitHub Models API 사용하기
GetResponseAsync를 통한 강력한 타입의 AI 응답- AI를 이용한 스키마 기반 추출
- 비구조화 데이터 우아하게 처리하기
- 프로덕션 수준 텍스트 추출 구축
추출 시도하기
- 📄 이력서 데이터 – 이름, 기술, 경력
- 🧾 청구서 – 공급업체, 금액, 날짜
- 📧 이메일 – 발신자, 제목, 핵심 포인트
- 🏠 부동산 매물
- 🍕 레스토랑 메뉴 – 요리, 가격, 재료
동일한 패턴이 모든 텍스트 추출 작업에 적용됩니다!
무엇을 만들 건가요?
아래에 댓글을 남겨 주세요! 👇
👍 마음에 드시나요?
도움이 되셨나요? ❤️를 눌러주시고 .NET + AI 콘텐츠를 더 받아보세요!
Tags: #dotnet #ai #machinelearning #csharp #github #opensource #textextraction #nlp #automation
GitHub Repo: https://github.com/your‑org/genai-dotnet-basic_llm_tasks/tree/main/TextExtraction