인사이트 제공형 차량 이상분석 에이전트
개요
이 API는 차량진단 스캐너 혹은 앱 등을 이용해 수집된 속도 및 엔진회전수(rpm)를 활용하여, LLM이 운전 성향을 분석하고 인사이트 리포트를 자동 생성하는 서비스입니다.
Quickstart
파이썬 예시 입니다.
import requests
import json
# 분석 API URL
url = "http://llm.theimc.co.kr/sensor_analyze"
# 업로드할 센서 데이터 파일 경로
file_path = "your_sensor_file.csv"
# 파일 및 요청 파라미터 구성
files = {
"file": open(file_path, "rb"),
}
data = {
"request": json.dumps({
"sensor_type": "voltage",
"output_format": "json"
})
}
# SSE Streaming 응답 처리
with requests.post(url, files=files, data=data, stream=True) as response:
print("Status:", response.status_code)
for line in response.iter_lines(decode_unicode=True):
if line and line.startswith("data: "):
content = line[len("data: "):]
try:
json_data = json.loads(content)
# LLM이 생성 중인 내용은 줄바꿈 없이 이어서 출력
if "content" in json_data:
print(json_data["content"], end="", flush=True)
# 상태 정보나 이벤트는 별도 표기
else:
print(f"\n[Event: {json_data.get('type')}] {json_data.get('data')}")
except json.JSONDecodeError:
# 스트리밍 중 출력되지 않는 조각 데이터는 무시
pass
API 안내 내용
- 운행 데이터 입력 시, LLM이 다음과 같은 인사이트를 자동으로 생성:
- 주요 고장 내용
- 센서의 현재 상태
- 각 센서의 상태에 따른 조치 가이드
API Endpoint
POST http://llm.theimc.co.kr/sensor_analyze
요청(Request)
Content-Type
multipart/form-data
Form Fields
| 필드명 | 타입 | 필수 | 설명 |
|---|---|---|---|
file
| File | Yes | csv형태의 주행 데이터 |
request
| JSON String | Yes | 분석 옵션을 포함한 JSON 문자열 |
file Fields
- 전원공급장치, 냉각수온도 및 대형 경유차량의 DPF, SCR 관련 센서 중 하나를 포함하고 있는 csv 차량 데이터
- CSV 형식만 허용
- 아래 컬럼명을 사용하는 것을 권장
권장 컬럼명:
| 컬럼명 | 설명 | sensor_type |
|---|---|---|
time_iso
| 타임스탬프 (ISO 8601 형식) | 공통 |
speed
| 차량 속도 (km/h) | 공통 |
battery_voltage
| 배터리 전압 (V) | voltage |
coolant_temperature
| 냉각수 온도 (°C) | coolant |
dpf_soot
| DPF Soot량 (g) | dpf |
dpf_dosing
| DPF 도징 활성화 여부 (boolean) | dpf |
nox_pre
| SCR 전단 NOx 농도 (ppm) | scr |
nox_post
| SCR 후단 NOx 농도 (ppm) | scr |
※ 분석할 센서 타입에 해당하는 컬럼만 포함하면 됩니다.
Request Fields
- sensor_type(string)
출력 결과의 형식을 지정합니다. 아래 표 값 중 하나를 선택할 수 있습니다.
| 값 | 설명 |
|---|---|
voltage
| 전압 센서 데이터 분석 |
coolant
| 냉각수 온도 센서 분석 |
dpf
| DPF(디젤 미립자 필터) 관련 상태 분석 |
scr
| SCR(선택적 촉매 환원) 시스템 분석 |
예시
{
"sensor_type": "voltage"
}
- output_format(string) 출력 결과의 형식을 지정합니다. 아래 표 값 중 하나를 선택할 수 있습니다.
| 값 | 설명 |
|---|---|
json
| 기계 처리용 구조화된 JSON 형식으로 결과제공 |
markdown
| Markdown 문법 기반의 구조화된 결과 제공 (보고서/문서화에 적합) |
html
| HTML 형식으로 결과 제공 (웹 UI 렌더링에 적합) |
mobile
| 모바일 화면에 최적화된 간결한 출력 포맷 |
예시
{
"output_format": "json"
}
응답(Response)
SSE(Server-Sent Events)를 사용하여 모델의 응답을 실시간으로 클라이언트에 전달합니다.
sse 이벤트 타입
| type | 설명 | 응답 예시 |
|---|---|---|
| start | 시작 신호 | {"type": "start"} |
| analysis | 분석 결과 데이터 | {"type": "driving_analysis", "data": {...}} |
| answer_start | LLM 응답 시작 신호 | {"type": "answer_start"} |
| answer_chunk | LLM 생성 토큰 | {"type": "answer_chunk", "content": "텍스트"} |
| complete | 응답 완료 | {"type": "complete"} |
| error | 에러 발생 | {"type": "error", "error": "에러 메시지"} |
요청 성공 예시
data: {"type": "start"}
data: {"type": "sensor_analysis", "data": {"평균온도": 66.2879102617366, "표준편차": 16.82568542497471,...}}
data: {"type": "answer_start"}
data: {"type": "answer_chunk", "content": "{"}
data: {"type": "answer_chunk", "content": "\n"}
data: {"type": "answer_chunk", "content": " "}
data: {"type": "answer_chunk", "content": "\""}
data: {"type": "complete"}
요청 실패 예시
| 상태 | 설명 |
|---|---|
| 파일 오류 | CSV 파일만 업로드 가능합니다 |
| 빈 파일 | 빈 파일입니다 |
| 파싱 오류 | CSV 파일 형식이 올바르지 않습니다 |
| 데이터 없음 | 분석할 데이터가 없습니다 |
| 서버 오류 | 예상치 못한 오류가 발생했습니다 |
| 센서 타입 누락 | 센서 타입을 지정해야 합니다 |
| 전처리 오류 | 센서 데이터 전처리 중 오류가 발생했습니다 |
| 데이터 부족 | 진단할 데이터가 부족합니다 |
API 호출에서 발생하는 오류는
API Error code
페이지를 확인해주세요.
