✅Danh mục tài khoản — tra cứu mã TK, phân loại, bút toán điển hình
✅Chain-of-Thought — suy luận từng bước rõ ràng trước khi trả lời
Dataset breakdown
Loại nội dung
Samples
%
Văn bản (Điều khoản chung)
267
18%
Nguyên tắc kế toán
249
17%
Biểu mẫu (Phụ lục)
358
24%
Ví dụ
72
5%
Định khoản Nợ/Có
447
30%
Phụ lục chung
91
6%
Cách dùng
fromtransformersimportAutoModelForCausalLM,AutoTokenizerimporttorchmodel_id='steve-nguyen/aai-accountant-tt133-v1.1'tokenizer=AutoTokenizer.from_pretrained(model_id)model=AutoModelForCausalLM.from_pretrained(model_id,torch_dtype=torch.float16,device_map='auto')# System promptSYSTEM_STRICT='''Bạn là AI kế toán chuyên biệt theo Thông tư 133/2016/TT-BTC.
QUY TẮC BẮT BUỘC:
1. Chỉ nhắc các TK có thật trong TT133 (TK 111–911, theo danh mục TT133)
2. Khi hỏi về B01-DNN/B02-DNN, trả lời đúng mapping: Mã số → TK nguồn
3. Nếu không chắc chắn 100%, nói rõ: "Cần kiểm tra lại với văn bản TT133"
4. Không liệt kê TK theo pattern số tăng dần nếu không chắc
Nguyên tắc: Chính xác > Đầy đủ. Thà ít mà đúng hơn nhiều mà sai.'''defask(question,max_new_tokens=1024):messages=[{'role':'system','content':SYSTEM_STRICT},{'role':'user','content':question},]chat_text=tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True,enable_thinking=True,)encoded=tokenizer(chat_text,return_tensors='pt').to('cuda')prompt_len=encoded['input_ids'].shape[1]withtorch.no_grad():outputs=model.generate(**encoded,max_new_tokens=max_new_tokens,do_sample=True,temperature=0.1,top_p=0.9,repetition_penalty=1.05,eos_token_id=tokenizer.eos_token_id,pad_token_id=tokenizer.eos_token_id,)text=tokenizer.decode(outputs[0][prompt_len:],skip_special_tokens=True)importretext=re.sub(r'<think>.*?</think>','',text,flags=re.DOTALL).strip()returntexttry:chat_text=tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True,enable_thinking=False,)exceptTypeError:chat_text=tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True,)encoded=tokenizer(chat_text,return_tensors='pt',return_attention_mask=True,).to('cuda')input_ids=encoded['input_ids']attention_mask=encoded['attention_mask']prompt_len=input_ids.shape[1]withtorch.no_grad():outputs=model.generate(input_ids=input_ids,attention_mask=attention_mask,max_new_tokens=max_new_tokens,do_sample=False,temperature=1.0,repetition_penalty=1.1,no_repeat_ngram_size=5,eos_token_id=tokenizer.eos_token_id,pad_token_id=tokenizer.eos_token_id,use_cache=True,)generated=outputs[0][prompt_len:]text=tokenizer.decode(generated,skip_special_tokens=True)importretext=re.sub(r'<think>.*?</think>','',text,flags=re.DOTALL).strip()returntextprint('✅ ask() sẵn sàng — inference mode ON')print(' enable_thinking=False | do_sample=False (greedy decoding)')#Đặt câu hỏiq1='Công ty ABC mua hàng hóa giá 100 triệu đồng, chưa trả tiền người bán. Hãy định khoản nghiệp vụ này theo TT133.'print('='*60)print('❓',q1)print('='*60)print(ask(q1))
Lưu ý
Mô hình được tối ưu cho Thông tư 133 (Doanh nghiệp Vừa và Nhỏ).
Một số trường hợp Mô hình trả lời không đúng yêu cầu, chỉ cần điều chình System prompt (SYSTEM_STRICT).
Luôn kiểm tra lại bút toán với kế toán viên — AI có thể mắc lỗi trong các trường hợp phức tạp.
Không áp dụng cho mục đích pháp lý mà không có xác nhận chuyên môn.