📦 JSON 이란?
👉 정의
JavaScript Object Notation
데이터를 구조화해서 저장하거나 전송할 때 쓰는 가볍고, 읽기 쉬운 데이터 포맷
- 텍스트 기반
- 키-값 쌍 ("key": value)
- 구조화된 데이터 표현에 탁월
- 거의 모든 언어에서 사용 가능 (Python, JS, Java, Go 등등)
🧠 왜 쓰는가?
- API 통신 (백엔드 ↔ 프론트엔드, 클라이언트 ↔ 서버)
- AI 모델과의 입출력 처리 (프롬프트 ↔ 응답 구조화)
- 데이터 저장 (설정, 로그, 사전 등)
- 파인튜닝 학습 데이터 포맷 (OpenAI JSONL 등)
🔍 JSON 예제
{
"name": "홍길동",
"age": 30,
"skills": ["Python", "LangChain", "Streamlit"],
"is_developer": true,
"profile": {
"github": "https://github.com/hongdev",
"location": "Seoul"
}
}
👉 구성 요소
요소설명
| {} | 객체 (Object) |
| [] | 배열 (Array) |
| "key": value | 키-값 쌍 |
| 문자열 "..." | 반드시 큰따옴표 |
| 숫자 | 그냥 숫자 (따옴표 X) |
| boolean | true, false |
| null | 존재하지 않음 표시 |
🐍 Python에서 JSON 다루기
import json
# Python → JSON 문자열
data = {"name": "홍길동", "age": 30}
json_str = json.dumps(data)
# JSON 문자열 → Python 객체
parsed = json.loads(json_str)
print(parsed["name"]) # "홍길동"
print(parsed["age"])
for key, value in parsed.items():
print(f"{key}: {value}")
홍길동
30
name: 홍길동
age: 30
🧾 OpenAI 파인튜닝용 JSONL
JSONL이란?
- JSON Lines (JSONL) 형식은 한 줄당 하나의 JSON 객체를 표현하는 형태입니다.
- 각 줄은 독립된 데이터로 존재하며, 대량의 데이터 처리에 유용합니다.
- 데이터가 많아지더라도 한 줄씩 읽고 처리할 수 있어 효율적입니다.
{"messages": [{"role": "user", "content": "파인튜닝이 뭐야?"}, {"role": "assistant", "content": "기존 모델을 추가 학습시키는 거야!"}]}
{"messages": [{"role": "user", "content": "LangChain이 뭐야?"}, {"role": "assistant", "content": "LLM을 체계적으로 조립하는 프레임워크야."}]}
첫번째줄만 설명할께요
{
"messages": [
{ "role": "user", "content": "파인튜닝이 뭐야?" },
{ "role": "assistant", "content": "기존 모델을 추가 학습시키는 거야!" }
]
}
messages: 대화 기록을 담는 배열.
- { "role": "user", "content": "파인튜닝이 뭐야?" }
- role: 발화자의 역할 (user).
- content: 사용자가 질문한 내용.
- { "role": "assistant", "content": "기존 모델을 추가 학습시키는 거야!" }
- role: 응답자의 역할 (assistant).
- content: 모델이 답변한 내용.
⚠️ JSON 쓸 때 주의사항
- key는 반드시 쌍따옴표
- 끝에 쉼표(,) 붙이면 안 됨
- Python의 dict와 유사하지만 완전히 같지는 않음
- JSON은 기본적으로 문자열 → 사용 전 파싱 필요!
🔮 JSON의 활용 전망
분야JSON 역할
| 🔗 API | REST API 응답/요청 포맷 |
| 🤖 AI | 프롬프트, 함수 호출, 파인튜닝 등 |
| 🧠 LangChain | Agent → Tool 간 메시지 전달 |
| 🧾 설정파일 | .json 기반 config (VS Code, ESLint 등) |
| 📊 데이터 | 로그 저장, 대시보드 연결 등 |
'생성형AI프로그래밍' 카테고리의 다른 글
| LangChain vs LlamaIndex 생성형 AI 시대의 든든한 도우미들 (2) | 2025.04.22 |
|---|---|
| Hugging Face 와 Fine-tuning (0) | 2025.04.20 |
| AI 에이전트란 ? (1) | 2025.04.19 |
| 파인튜닝 개념 (0) | 2025.04.19 |
| VectorDB 와 청크(Chunk) 에 대하여 (0) | 2025.04.19 |