Views
No views yet
1from transformers import AutoTokenizer, AutoModelForCausalLM
2import torch
3
4# Load model and tokenizer
5repo = "hongjoong-entec/gemma-3-4b-tax-law-lora"
6tokenizer = AutoTokenizer.from_pretrained(repo, trust_remote_code=True)
7tokenizer.pad_token = tokenizer.eos_token
8model = AutoModelForCausalLM.from_pretrained(
9 repo,
10 torch_dtype=torch.float16,
11 trust_remote_code=True
12)
13
14# Prompt template for best results
15prompt_style = """Below is an instruction that describes a task, paired with an input that provides further context.
16Write a response that appropriately completes the request.
17Respond in Korean and provide only the final answer without chain-of-thought, analysis, section headers, or disclaimers.
18If needed, include a brief basis in one concise sentence.
19
20### Question:
21{}
22
23### Response:
24{}"""
25
26# Example usage
27question = "접대비 한도는 어떻게 계산하나요?"
28input_text = prompt_style.format(question, "")
29inputs = tokenizer([input_text], return_tensors="pt")
30
31# Filter unwanted outputs
32bad_words = ["Disclaimer:", "Chain of Thought:", "### Chain of Thought:", "### Reasoning:", "### Analysis:"]
33bad_words_ids = tokenizer(bad_words, add_special_tokens=False).input_ids
34
35# Generate response
36outputs = model.generate(
37 input_ids=inputs.input_ids,
38 attention_mask=inputs.attention_mask,
39 max_new_tokens=1024,
40 eos_token_id=tokenizer.eos_token_id,
41 pad_token_id=tokenizer.pad_token_id,
42 bad_words_ids=bad_words_ids,
43 temperature=0.01,
44 use_cache=True,
45)
46
47# Decode only generated part
48gen_only = outputs[0, inputs.input_ids.shape[-1]:]
49answer = tokenizer.decode(gen_only, skip_special_tokens=True).strip()
50print(answer)