Downloads ยท 30 days
476
3% of all-time downloads
skt/A.X-3.1
A.X-3.1 is a text generation model from skt. 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.
<div align="center" <img src="./assets/A.Xfromscratchlogoko4x3.png" alt="A.X Logo" width="300"/ </div <p align="center" <a href="https://huggingface.co/collections/skt/ax-3-686b288b3b05e1234f3f4c73"๐ค Models</a | <a hโฆ
Downloads ยท 30 days
476
3% of all-time downloads
All-time downloads
15K
Public
Parameters
34.7B
69.3 GB on disk
Likes
49
Public
Click a slice to open those files.
.safetensors69.3 GB ยท 100%
From the Hugging Face model README
SK Telecom released A.X 3.1 (pronounced "A dot X"), a large language model (LLM) optimized for Korean-language understanding and enterprise deployment, on July 24, 2025. This sovereign AI model was developed entirely in-house by SKT, encompassing model architecture, data curation, and training, all carried out on SKTโs proprietary supercomputing infrastructure, TITAN. The model was trained from scratch on a high-quality multilingual corpus comprising 2.1 trillion tokens, with a primary focus on the Korean language.
A.X 3.1 represents an efficient sovereign AI model, developed end-to-end by SKT, encompassing model architecture, data curation, infrastructure deployment, and optimization.
transformers>=4.46.0 or the latest version is required to use skt/A.X-3.1pip install transformers>=4.46.0
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "skt/A.X-3.1"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map="auto",
)
model.eval()
tokenizer = AutoTokenizer.from_pretrained(model_name)
messages = [
{"role": "system", "content": "๋น์ ์ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ๋ ์์ด ๋ฌธ์ฅ๋ค์ ํ๊ตญ์ด๋ก ๋ฒ์ญํ๋ AI ์ ๋ฌธ๊ฐ์
๋๋ค."},
{"role": "user", "content": "The first human went into space and orbited the Earth on April 12, 1961."},
]
input_ids = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
input_ids,
max_new_tokens=128,
do_sample=False,
)
len_input_prompt = len(input_ids[0])
response = tokenizer.decode(output[0][len_input_prompt:], skip_special_tokens=True)
print(response)
# Output:
# ์ฐ์ฃผ์์ ์ธ๊ฐ์ด ์ฒ์์ผ๋ก ์ง๊ตฌ ๊ถค๋๋ฅผ ๋ ๋ ์ 1961๋
4์ 12์ผ์
๋๋ค.
vllm>=v0.6.4.post1 or the latest version is required to use tool-use featurepip install vllm>=v0.6.4.post1
# if you don't want to activate tool-use feature, just commenting out below vLLM option
VLLM_OPTION="--enable-auto-tool-choice --tool-call-parser hermes"
vllm serve skt/A.X-3.1 $VLLM_OPTION
from openai import OpenAI
def call(messages, model):
completion = client.chat.completions.create(
model=model,
messages=messages,
)
print(completion.choices[0].message)
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="api_key"
)
model = "skt/A.X-3.1"
messages = [{"role": "user", "content": "์์ด์ปจ ์ฌ๋ฆ์ฒ ์ ์ ์จ๋๋? ํ์ค๋ก ๋ต๋ณํด์ค"}]
call(messages, model)
# Output:
# ์ฌ๋ฆ์ฒ ์์ด์ปจ ์ ์ ์จ๋๋ 24~26๋์
๋๋ค.
messages = [{"role": "user", "content": "What is the appropriate temperature for air conditioning in summer? Respond in a single sentence."}]
call(messages, model)
# Output:
# The appropriate temperature for air conditioning in summer is around 78ยฐF (26ยฐC).
from openai import OpenAI
def call(messages, model):
completion = client.chat.completions.create(
model=model,
messages=messages,
tools=tools
)
print(completion.choices[0].message)
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="api_key"
)
model = "skt/A.X-3.1"
calculate_discount = {
"type": "function",
"function": {
"name": "calculate_discount",
"description": "์๊ฐ๊ฒฉ๊ณผ ํ ์ธ์จ(ํผ์ผํธ ๋จ์)์ ์
๋ ฅ๋ฐ์ ํ ์ธ๋ ๊ฐ๊ฒฉ์๊ณ์ฐํ๋ค.",
"parameters": {
"type": "object",
"properties": {
"original_price": {
"type": "number",
"description": "์ํ์ ์๋ ๊ฐ๊ฒฉ"
},
"discount_percentage": {
"type": "number",
"description": "์ ์ฉํ ํ ์ธ์จ"
}
},
"required": ["original_price", "discount_percentage"]
}
}
}
get_exchange_rate = {
"type": "function",
"function": {
"name": "get_exchange_rate",
"description": "๋ ํตํ ๊ฐ์ ํ์จ์ ๊ฐ์ ธ์จ๋ค.",
"parameters": {
"type": "object",
"properties": {
"base_currency": {
"type": "string",
"description": "The currency to convert from."
},
"target_currency": {
"type": "string",
"description": "The currency to convert to."
}
},
"required": ["base_currency", "target_currency"]
}
}
}
tools = [calculate_discount, get_exchange_rate]
### Slot filling ###
messages = [{"role": "user", "content": "์ฐ๋ฆฌ๊ฐ ๋ญ ์ฌ์ผ๋๋๋ฐ ์๊ฐ๊ฐ 57600์์ธ๋ฐ ์ง์ํ ์ธ ๋ฐ์ผ๋ฉด ์ผ๋ง์ผ?"}]
call(messages, model)
# Output:
# ChatCompletionMessage(content='์ง์ ํ ์ธ์จ์ด ๋ช ํผ์ผํธ์ธ์ง ์๋ ค์ฃผ์ ๋ค๋ฉด ํ ์ธ๋ ๊ฐ๊ฒฉ์ ๊ณ์ฐํ ์ ์์ต๋๋ค. ํ ์ธ์จ์ด ๋ช ํผ์ผํธ์ธ์ง ์๋ ค์ฃผ์ค ์ ์๋์?', role='assistant', tool_calls=[])
### Function calling ###
messages = [
{"role": "user", "content": "์ฐ๋ฆฌ๊ฐ ๋ญ ์ฌ์ผ๋๋๋ฐ ์๊ฐ๊ฐ 57600์์ธ๋ฐ ์ง์ํ ์ธ ๋ฐ์ผ๋ฉด ์ผ๋ง์ผ?"},
{"role": "assistant", "content": "์ง์ ํ ์ธ์จ์ด ๋ช ํผ์ผํธ์ธ์ง ์๋ ค์ฃผ์ ๋ค๋ฉด ํ ์ธ๋ ๊ฐ๊ฒฉ์ ๊ณ์ฐํ ์ ์์ต๋๋ค. ํ ์ธ์จ์ด ๋ช ํผ์ผํธ์ธ์ง ์๋ ค์ฃผ์ค ์ ์๋์?"},
{"role": "user", "content": "15% ํ ์ธ ๋ฐ์ ์ ์์ด."},
]
call(messages, model)
# Output:
# ChatCompletionMessage(content=None, role='assistant', tool_calls=[ChatCompletionMessageToolCall(id='chatcmpl-tool-cb9e827f752d4725abc94377223b2b0f', function=Function(arguments='{"original_price": 57600, "discount_percentage": 15}', name='calculate_discount'), type='function')])
### Completion ###
messages = [
{"role": "user", "content": "์ฐ๋ฆฌ๊ฐ ๋ญ ์ฌ์ผ๋๋๋ฐ ์๊ฐ๊ฐ 57600์์ธ๋ฐ ์ง์ํ ์ธ ๋ฐ์ผ๋ฉด ์ผ๋ง์ผ?"},
{"role": "assistant", "content": "์ง์ ํ ์ธ์จ์ด ๋ช ํผ์ผํธ์ธ์ง ์๋ ค์ฃผ์ ๋ค๋ฉด ํ ์ธ๋ ๊ฐ๊ฒฉ์ ๊ณ์ฐํ ์ ์์ต๋๋ค. ํ ์ธ์จ์ด ๋ช ํผ์ผํธ์ธ์ง ์๋ ค์ฃผ์ค ์ ์๋์?"},
{"role": "user", "content": "15% ํ ์ธ ๋ฐ์ ์ ์์ด."},
{"role": "tool", "tool_call_id": "random_id", "name": "calculate_discount", "content": "{\"original_price\": 57600, \"discount_percentage\": 15, \"discounted_price\": 48960.0}"}
]
call(messages, model)
# Output:
# ChatCompletionMessage(content='์ง์ ํ ์ธ์ ๋ฐ์ผ๋ฉด 57600์์ ์ํ์ 15% ํ ์ธ์ ๋ฐ์ 48960์์ด ๋ฉ๋๋ค.', role='assistant', tool_calls=[])
The config.json file of A.X 3.1 uploaded to HuggingFace is configured for maximum token lengths of 32,768. You can simply handle up to 131,072 tokens by modifying rope_scaling field in config.json file into the following parameters:
"rope_scaling": {
"type": "yarn",
"factor": 4.0,
"original_max_position_embeddings": 32768,
},
The A.X 3.1 model is licensed under Apache License 2.0.
@article{SKTAdotX3.1,
title={A.X 3.1},
author={SKT AI Model Lab},
year={2025},
url={https://huggingface.co/skt/A.X-3.1}
}