Downloads · 30 days
12
21% of all-time downloads
True-AI/scl-chatwonder-qwen3.5-4b
scl-chatwonder-qwen3.5-4b is a text generation model from True-AI. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as apache-2.0.
Qwen/Qwen3.5-4B 베이스 모델을 LoRA로 파인튜닝한 뒤 베이스 모델에 병합(merge)한 한국어 도메인 지식 주입 모델입니다. SCL(Structured Cognitive Loop) 인지 아키텍처와 Chat Wonder 노코드 RAG 챗봇 플랫폼에 대한 지식을 정확하게 답변하도록 학습하면서, 동시에 베이스 모델이 원래 가지고 있던 function calling(도구 호출)…
Downloads · 30 days
12
21% of all-time downloads
All-time downloads
56
Public
Parameters
4.5B
18.2 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors9.1 GB · 100%
From the Hugging Face model README
Qwen/Qwen3.5-4B 베이스 모델을 LoRA로 파인튜닝한 뒤 베이스 모델에 병합(merge)한 한국어 도메인 지식 주입 모델입니다. SCL(Structured Cognitive Loop) 인지 아키텍처와 Chat Wonder 노코드 RAG 챗봇 플랫폼에 대한 지식을 정확하게 답변하도록 학습하면서, 동시에 베이스 모델이 원래 가지고 있던 function calling(도구 호출) 능력도 함께 보존하도록 설계했습니다.
SCL과 Chat Wonder는 더트루아이(Chat Wonder 개발사)가 만든 LLM 에이전트 아키텍처/플랫폼입니다. 관련 연구 논문, 기술 백서, 도구 패키지 작성 가이드 등은 범용 LLM이 사전학습 단계에서 접했을 가능성이 거의 없는 최신·비공개 성격의 도메인 지식입니다. 이 모델은 그런 문서들을 근거로 만든 Q&A 데이터셋을 LoRA로 주입해서, 별도의 RAG 파이프라인 없이도 SCL/Chat Wonder에 대한 질문에 즉시, 정확하게 답할 수 있도록 만든 것이 목적입니다.
동시에 이 모델은 Chat Wonder 플랫폼 안에서 실제로 사용자에게 서빙될 때 "지식 답변"과 "도구 호출"을 함께 수행해야 하는 상황(예: 사용자가 도메인 질문을 하다가 갑자기 날씨나 일정 등록 같은 실제 액션을 요청하는 경우)을 염두에 두고, 지식 데이터와 tool-call 데이터를 함께 학습했습니다.
hiyouga/llamafactory:latest)qwen3_5_nothink (non-thinking 모드로 고정 학습. 추론 시에도 반드시 동일한 non-thinking 포맷을 사용해야 학습 효과가 그대로 재현됩니다)두 데이터셋을 concat 방식으로 섞어 5 epoch 학습했습니다.
scl_chatwonder_qa — 도메인 지식 Q&A (1,001개 대화, 1,006턴)SCL 관련 연구 논문 9편, Chat Wonder 기술 백서·도구 패키지 가이드, SCL 소개자료, 예시 태스크 등 14개 원본 문서를 근거로 직접 작성한 ShareGPT 포맷 데이터셋입니다.
scl_toolcall_ko — function calling 예시 (고유 96개, 3배 오버샘플링하여 288개)날씨 조회, 환율 계산, 사칙연산, 번역, 웹 검색, 주가 조회, 캘린더 일정 등록, 이메일 발송, 알림 설정, 단위 변환, 지식베이스 검색, 사전 정의 조회, 할일 등록, 항공편 검색, 교통정보, 음식 주문, 음악 재생, 알람 설정, 뉴스 조회, 이미지 생성, 문서 요약, 문자 발송, 재고 확인, 다자 회의 예약, 길찾기, 호텔 예약, 예약 취소, 대기질 조회, DB 조회, QR코드 생성, SNS 게시, 설문 생성 등 32개 서로 다른 도구 스키마에 대한 ShareGPT 포맷 tool-call 예시입니다. function_call/observation role을 사용한 단일턴·멀티턴 예시, 배열(array)·불리언(boolean)·열거형(enum) 파라미터를 가진 스키마, 도구가 제공되어도 호출이 불필요한 질문에는 직접 답하도록 하는 부정(negative) 예시, 그리고 두 개의 도구가 동시에 제공됐을 때 올바른 도구를 선택하는 예시까지 포함했습니다.
이 데이터셋을 추가한 이유는 실험 과정에서 명확히 확인됐습니다: 지식 Q&A만으로 LoRA를 학습하면(rank/learning rate를 아무리 조정해도) 베이스 모델이 원래 가지고 있던 function calling 능력이 손상되어, 도구 스펙이 주어져도 도구를 호출하지 않고 답을 그냥 지어내는 현상이 재현됐습니다. 순수 대화형 데이터만 반복 노출시키면 "항상 직접 텍스트로 답하라"는 패턴이 강하게 각인되기 때문입니다. 소량이라도 tool-call 예시를 지식 데이터와 함께 섞어 학습하자 이 문제가 해소되었고, 학습 데이터에 전혀 없던 새로운 도구 스키마(예: 레시피 검색처럼 배열 파라미터를 쓰는 도구, 항공편 예약, 회의실 예약처럼 파라미터 4개짜리 도구)에 대해서도 정상적으로 일반화되어 tool_call을 생성하는 것을 확인했습니다.
stage: sft
finetuning_type: lora
lora_rank: 32
lora_alpha: 64
lora_dropout: 0.05
lora_target: all
learning_rate: 1.0e-4
num_train_epochs: 5.0
lr_scheduler_type: cosine
warmup_ratio: 0.05
per_device_train_batch_size: 8
gradient_accumulation_steps: 4
cutoff_len: 2048
bf16: true
gradient_checkpointing: true
val_size: 0.05
Q. SCL이 뭐야? 간단히 설명해줘. SCL은 Structured Cognitive Loop(구조적 인지 루프)의 약자로, 김명호 교수(JEI University)가 제안한 LLM 에이전트 아키텍처입니다. 기존 에이전트들이 추론(Cognition), 기억(Memory), 통제(Control)를 하나의 프롬프트 안에 뒤섞어 처리하는 것과 달리, SCL은 이 기능들을 명확히 분리합니다...
Q. R-CCAM 다섯 단계 순서가 뭐였지? R-CCAM의 다섯 단계는 다음과 같습니다: ① Retrieval(검색) — 외부 지식 소스에서 관련 정보를 검색합니다. ② Cognition(인지) — LLM이 검색된 정보를 근거로 판단하고 실행 계획을 생성합니다. ③ Control(통제) — 메타통제 모듈이 제약을 검사하고 위험을 감지합니다. ④ Action(행동) — 승인된 도구 호출로 실행합니다. ⑤ Memory(기억) — 결과와 맥락을 정리해 작업 기억에 저장합니다...
Q. PGR이랑 일반 RAG 뭐가 달라? 일반 RAG는 정적인 청크를 그대로 가져와서 검색하고, PGR은 Warrant 검증 루프를 통해 '이 정보 정말 관련있어?'를 확인한 뒤만 채택합니다...
Q. 냉장고 안에 있는 계란, 우유, 치즈로 만들 수 있는 요리를 검색해줘 (
search_recipe도구, 배열 파라미터 — 학습 데이터에 전혀 없던 스키마){"name": "search_recipe", "arguments": {"ingredients": ["계란", "우유", "치즈"]}}
Q. 회의실 3층 A룸을 내일 오후 3시부터 4시까지 예약해줘 (
book_meeting_room도구, 파라미터 4개 — 학습 데이터에 없던 스키마){"name": "book_meeting_room", "arguments": {"room": "3층 A룸", "date": "내일", "start_time": "오후 3시", "end_time": "오후 4시"}}
Q. 지금 환율로 500달러는 원화로 얼마야? (
get_stock_price,convert_currency두 도구가 함께 제공된 상황){"name": "convert_currency", "arguments": {"amount": 500, "from_currency": "USD", "to_currency": "KRW"}}
Q. 환율 변동은 보통 어떤 요인 때문에 생기는거야? (
convert_currency도구가 제공되어 있어도 호출하지 않음) 환율은 두 나라 통화의 상대적 가치로, 금리 차이, 물가상승률, 무역수지, 정치·경제적 안정성, 중앙은행의 통화정책 등 다양한 요인에 의해 결정됩니다.
학습 데이터의 모든 대화는 아래 system 프롬프트로 시작합니다. 지식 관련 질문을 할 때는 이 프롬프트를 반드시 포함해야 학습 효과가 재현됩니다. (function calling만 필요한 경우에는 없어도 무방합니다.)
당신은 SCL(Structured Cognitive Loop) 인지 아키텍처와 Chat Wonder 노코드 RAG 챗봇 플랫폼에 정통한 전문 AI 어시스턴트입니다. 김명호 교수(JEI University)의 SCL 관련 연구 논문들과 바월드(Chat Wonder 개발사)의 기술 문서를 바탕으로, 정확하고 구체적이며 실무에 바로 적용 가능한 답변을 한국어로 제공합니다.
vllm serve <model-path-or-repo-id> \
--served-model-name scl-chatwonder-v4 \
--dtype auto \
--max-model-len 32768 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder
Docker로 실행하는 경우:
docker run -d --gpus all -p 8000:8000 \
-v /path/to/scl-chatwonder-qwen3.5-4b:/model \
vllm/vllm-openai:latest \
--model /model \
--served-model-name scl-chatwonder-v4 \
--dtype auto --max-model-len 32768 \
--gpu-memory-utilization 0.4 \
--enable-auto-tool-choice --tool-call-parser qwen3_coder
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "<repo-id>"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="bfloat16", device_map="auto")
messages = [
{"role": "system", "content": "당신은 SCL(Structured Cognitive Loop) 인지 아키텍처와 Chat Wonder 노코드 RAG 챗봇 플랫폼에 정통한 전문 AI 어시스턴트입니다. 김명호 교수(JEI University)의 SCL 관련 연구 논문들과 바월드(Chat Wonder 개발사)의 기술 문서를 바탕으로, 정확하고 구체적이며 실무에 바로 적용 가능한 답변을 한국어로 제공합니다."},
{"role": "user", "content": "SCL이 뭐야? 간단히 설명해줘."},
]
inputs = tok.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(inputs, max_new_tokens=400)
print(tok.decode(out[0][inputs.shape[1]:], skip_special_tokens=True))
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
resp = client.chat.completions.create(
model="scl-chatwonder-v4",
messages=[{"role": "user", "content": "서울 날씨 어때?"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "지정한 도시의 현재 날씨 정보를 조회한다",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}],
)
print(resp.choices[0].message.tool_calls)
베이스 모델(Qwen/Qwen3.5-4B)의 Apache 2.0 라이선스를 따릅니다.