CoolFace
Modelpublic

leeChaerin/my-action-finetuned-modelv1

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes22downloads
Model Card

Dongguk nDRIMS ActionModel (LoRA Adapter)

이 모델은 동국대학교 nDRIMS 포털을 대상으로 한 액션 생성용 LoRA 어댑터입니다. 기본 베이스 모델인 `kakaocorp/kanana-nano-2.1b-instruct`에 PEFT/LoRA 방식으로 얹어서, 사용자의 자연어 요청과 현재 UI 상태(observations)를 입력받으면

  • —Plan 모드: {"task_plan": [...]} 형태의 단계별 플랜 생성
  • —Action 모드: {"action": {...}} 형태의 단일 클릭/조작 액션 JSON 생성

을 수행하도록 파인튜닝되었습니다.


Model Details

Model Description

  • —목적(Purpose) 동국대 nDRIMS(학사 행정 포털)에서 학생이 자주 수행하는 업무 (예: 불교동아리 가입, 졸업 취득학점 확인, 학적부 열람, 등록금 고지서 조회 등)를 “자연어 한 마디”로 요청하면, 이를 자동으로
  • —단계별 UI 네비게이션 플랜(task_plan)과
  • —각 단계에서 수행해야 할 액션(action) 으로 변환해 주는 Large Action Model(LAM) 2단계용 액션 헤드입니다.
  • —입력 구조(예시)
  • —Plan 요청:
json
    {"user_request": "불교동아리 가입"}
  • —Action 요청:
json
    {
      "user_request": "불교동아리 가입",
      "task_plan": "하위 메뉴 '불교동아리가입'을 클릭한다",
      "step_id": "2",
      "observations": {
        "sidebar": [
          {
            "id": "d7",
            "label": "학생신청(기타)",
            "expanded": true,
            "sub_items": [
              {"id": "ee", "label": "불교동아리가입", "checked": false}
            ]
          }
        ]
      }
    }
  • —출력 구조(예시)
  • —Plan 모드:
json
    {
      "task_plan": [
        {
          "step_id": 1,
          "description": "좌측 메뉴에서 '학생신청(기타)'를 펼친다"
        },
        {
          "step_id": 2,
          "description": "하위 메뉴 '불교동아리가입'을 클릭한다"
        },
        {
          "step_id": 3,
          "description": "개인정보 동의 팝업창을 닫는다."
        }
      ]
    }
  • —Action 모드:
json
    {
      "function": "click",
      "control_label": "불교동아리가입",
      "control_type": "tree-item",
      "value": "",
      "args": {
        "role": "treeitem",
        "aria-label": "불교동아리가입"
      },
      "status": "CONTINUE"
    }
  • —Developed by: Chaerin Lee (@leeChaerin)
  • —Model type: LoRA adapter for UI action generation (Plan / Action head)
  • —Language(s): Korean (ko) 중심, 약간의 English label 및 aria-label 텍스트 포함
  • —License: Follows the base model’s license (kakaocorp/kanana-nano-2.1b-instruct). 실제 서비스 적용 시, 베이스 모델 라이선스를 반드시 확인하세요.
  • —Finetuned from: kakaocorp/kanana-nano-2.1b-instruct using PEFT/LoRA

Model Sources

  • —Adapter Repository: <https://huggingface.co/leeChaerin/ActionModel_v5>
  • —Base Model: <https://huggingface.co/kakaocorp/kanana-nano-2.1b-instruct>

Uses

Direct Use

이 모델은 그 자체로 대화형 LLM으로 쓰기 위한 모델이 아니라, 다음과 같은 에이전트/자동화 시스템의 한 모듈로 사용하는 것을 전제로 설계되었습니다.

  • —대표적인 사용 시나리오
  • —사용자가 자연어로 요청
  • —예: "졸업하려면 학점 얼마나 남았어?"
  • —Plan 요청 → task_plan 생성
  • —"좌측 메뉴에서 '졸업' 탭을 연다."
  • —"'취득학점확인서조회' 메뉴를 클릭하여 페이지로 이동한다."
  • —각 step에 대해 Action 요청 → action JSON 생성
  • —"졸업" tree-item 클릭
  • —"취득학점확인서조회" tree-item 클릭
  • —생성된 액션 JSON을 기반으로 RPA/브라우저 자동화/GUI 자동 제어 등 수행

즉, Large Action Model(LAM)의 Action Head로 사용하기 좋습니다.

Downstream Use

  • —다른 학교/내부 포털에 적용하고 싶은 경우:
  • —사이드바/메뉴 구조를 비슷한 스키마(sidebar, sub_items, checked, expanded 등)로 맞추고
  • —해당 도메인용 플랜/액션 데이터로 추가 파인튜닝 또는 재학습 필요
  • —nDRIMS와 유사한 트리 기반 네비게이션 UI를 가진 어드민 사이트, 사내 포털, 업무 시스템 등에 재활용 가능

Out-of-Scope Use

다음과 같은 용도는 권장되지 않습니다.

  • —일반적인 오픈 도메인 대화/챗봇 용도
  • —임의의 웹사이트(네이버, 구글, 은행 등)에 바로 적용하는 자동화
  • —금융/의료/법률 등 고위험 도메인의 무인 완전 자동 처리
  • —사람의 확인 없이 계정/개인정보/결제 관련 설정을 변경하는 행위

Bias, Risks, and Limitations

Risks & Limitations

  • —도메인 특화 모델
  • —동국대 nDRIMS의 특정 메뉴 구조에 맞추어 학습되었기 때문에, 다른 사이트나 다른 UI 구조에서는 잘 동작하지 않을 수 있습니다.
  • —잘못된 액션
  • —function / control_label / args가 일부라도 틀릴 경우,
  • —잘못된 메뉴를 열거나
  • —잘못된 버튼을 클릭할 가능성이 있습니다.
  • —데이터 스케일
  • —현재는 소규모, 수작업으로 구성된 학습/평가 데이터셋을 기반으로 하고 있어, 엣지 케이스나 예외 상황에 대한 일반화 능력은 제한적일 수 있습니다.

Recommendations

  • —항상 샌드박스 / 테스트 계정에서 먼저 통합 및 검증을 진행하세요.
  • —실제 서비스 적용 시에는:
  • —사람의 확인(HITL, Human-in-the-loop) 단계를 두거나
  • —민감한 작업(예: 휴학/자퇴, 개인정보 변경 등)은 별도의 추가 확인 UI를 거치도록 설계하는 것을 추천합니다.
  • —nDRIMS 구조 변경(메뉴 이름, ID, 트리 구조 등)이 있을 경우,
  • —모델의 성능이 급격히 떨어질 수 있으니 재학습 또는 프롬프트/데이터 업데이트가 필요합니다.

How to Get Started with the Model

1. 모델 로드 (PEFT + LoRA)

python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

BASE_REPO = "kakaocorp/kanana-nano-2.1b-instruct"
ADAPTER_REPO = "leeChaerin/ActionModel_v1"

# 토크나이저 로드
tokenizer = AutoTokenizer.from_pretrained(BASE_REPO, padding_side="left")
if tokenizer.pad_token is None:
    tokenizer.pad_token = tokenizer.eos_token

# 베이스 모델 로드
base = AutoModelForCausalLM.from_pretrained(
    BASE_REPO,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    trust_remote_code=True,
)

# LoRA 어댑터 적용
model = PeftModel.from_pretrained(base, ADAPTER_REPO)
model.eval()