跳转到主要内容
GenieX Python SDK 的设计与 Hugging Face transformers 一致——通过 AutoModel*.from_pretrained() 加载模型,再调用 .generate() 进行推理。

AutoModelForCausalLM

加载因果语言模型的工厂——同时支持纯文本与多模态。文本模型返回 GenieXLLM,识别为多模态时返回 GenieXVLM(如 phi4_multimodalqwen3.5-vlgemma4)。
from geniex import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "ai-hub-models/Qwen3-4B-Instruct",
    device_map="auto",
)

from_pretrained()

参数类型默认值说明
model_name_or_pathstr必填HuggingFace 仓库 ID、短别名(例如 "qwen3"),或本地路径。
device_mapstr"auto""auto" 选择第一个可用的运行环境与计算单元。也支持 "<runtime>"(运行环境)或 "<runtime>:<compute_unit>"(运行环境 + 计算单元)。
precisionstr | NoneNone量化版本(例如 "Q4_K_M")。从 Hub 下载时用于过滤文件。
mmproj_pathstr | NoneNone多模态投影文件路径。从 Hub 自动解析;显式传入可强制进入 VLM 模式。
返回: GenieXLLMGenieXVLM(按模型自动判断)

AutoModelForVision2Seq

加载视觉语言/多模态模型的工厂。返回 GenieXVLM 实例。
from geniex import AutoModelForVision2Seq

model = AutoModelForVision2Seq.from_pretrained("ai-hub-models/Qwen2.5-7B-Instruct", device_map="qairt")

from_pretrained()

接受所有 AutoModelForCausalLM.from_pretrained() 的参数,加上:
参数类型默认值说明
mmproj_pathstr | NoneNone多模态投影文件路径。从 Hub 下载时自动解析。
返回: GenieXVLM

GenieXLLM

AutoModelForCausalLM.from_pretrained() 返回的纯文本模型实例。

generate()

基于格式化好的 prompt 字符串运行文本生成。
output = model.generate(prompt, max_new_tokens=256)
print(output.text)
参数类型默认值说明
promptstr必填格式化的 prompt 字符串(用 model.tokenizer.apply_chat_template() 构造)。
max_new_tokensint512生成的最大 token 数。
temperaturefloat0.7采样温度。
top_pfloat0.9核采样阈值。
top_kint40Top-k 采样。
min_pfloat0.0最小概率阈值。
streamboolFalseTrue 时返回 TextIteratorStreamer
返回: GenerateOutputstream=True 时为 TextIteratorStreamer

reset()

重置对话状态并清空 KV 缓存。

save_kv_cache(path) / load_kv_cache(path)

将 KV 缓存保存到/加载自指定文件路径(str)。

close()

释放模型句柄与资源。也支持上下文管理器:
with AutoModelForCausalLM.from_pretrained("qwen3") as model:
    output = model.generate(prompt)

GenieXVLM

AutoModelForVision2Seq.from_pretrained() 返回的视觉语言模型实例。

generate()

参数与 GenieXLLM.generate() 一致,新增:
参数类型默认值说明
imageslist[str] | NoneNone模型处理的图片文件路径列表。
audioslist[str] | NoneNone模型处理的音频文件路径列表。
output = model.generate(prompt, images=["/path/to/image.jpg"], max_new_tokens=256)
print(output.text)
返回: GenerateOutputstream=True 时为 TextIteratorStreamer

reset() / close()

GenieXLLM

ModelTokenizer

通过 model.tokenizer 访问。提供与 transformers 兼容的 chat template 接口。

apply_chat_template()

使用模型内置的 chat template 格式化对话消息。
messages = [{"role": "user", "content": "What is 2+2?"}]
prompt = model.tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True,
)
参数类型默认值说明
messageslist[dict]必填包含 "role""content" 的消息字典列表。
tokenizeboolFalse必须为 False——不支持独立的 tokenize。
add_generation_promptboolTrue是否追加生成提示后缀。
enable_thinkingbool | NoneNone启用思考模式。None(默认)和 True 都会让支持思考的模型进入思考模式(对非思考模型为 no-op)。False 用于让支持思考的模型跳过思考轮;对非思考模型会被强制改为 True 并发出警告(其抑制块超出训练分布)。能力通过 model.supports_thinking 自动检测并暴露。
toolslist[dict] | str | NoneNone工具定义,可为字典列表或预序列化的 JSON 字符串。
返回: str —— 可直接传给 model.generate() 的格式化 prompt。

输出类

GenerateOutput

model.generate() 返回。
属性类型说明
textstr生成文本(如有 thinking 标签会被剥离)。
thinkingstr | None模型的推理内容,无则为 None
profileProfileData性能指标。

ProfileData

属性类型说明
ttftint首 token 时延(ms)。
prompt_tokensintprompt token 数。
generated_tokensint生成 token 数。
prefill_speedfloatPrefill 速度(tokens/s)。
decode_speedfloatDecode 速度(tokens/s)。
stop_reasonstr | None停止原因(例如 "eos""limit")。

TextIteratorStreamer

model.generate(..., stream=True) 返回。生成时按片段产出解码后的文本。
streamer = model.generate(prompt, max_new_tokens=256, stream=True)
for chunk in streamer:
    print(chunk, end="", flush=True)

final = streamer.output  # 迭代结束后可访问 GenerateOutput
方法 / 属性说明
__iter__()按生成产出 str 片段。
outputGenerateOutput | None——迭代结束后可用。
cancel()在下一个 token 边界停止生成。

模型管理器

CLI 使用的同一个模型管理器也可在程序中通过 geniex.model_manager 调用。
from geniex import model_manager as mm

MODEL = "Qwen/Qwen3-0.6B-GGUF"
mm.pull(MODEL)
print(f"pull complete: {MODEL}")
paths = mm.get_paths(MODEL)
print(f"model path:    {paths}")
local_models = mm.list_models()
print(f"local models:  {local_models}")
mm.remove(MODEL)
print(f"model removed: {MODEL}")
函数说明
pull(model_name, ...)按别名或 org/repo[:precision] 下载模型。
list_models()返回缓存模型名列表 list[str]
get_paths(model_name)返回包含本地路径的 ModelPaths
get_type(model_name)返回 "llm""vlm"
resolve_alias(alias)将短别名解析为规范的 org/repo
remove(model_name)从磁盘删除缓存模型。
clean()清空所有缓存模型,返回删除数量。

SDK 函数

函数说明
geniex.init()初始化 SDK。首次加载模型时自动调用。
geniex.deinit()关闭 SDK 并释放资源。
geniex.version()返回 SDK 版本字符串。
geniex.get_runtime_list()返回可用运行环境 ID 列表 list[str]
geniex.get_compute_unit_list(runtime)返回指定运行环境下的 (compute_unit, compute_unit_name) 元组列表 list[tuple[str, str]]