LLM的调用与使用
本节将以ModelScope(魔搭社区)中的Qwen3大模型为例介绍LLM的调用与使用。
目录
本节将以ModelScope(魔搭社区)中的Qwen3大模型为例介绍LLM的调用与使用。
2.2.1 ModelScope(魔搭社区)
ModelScope(类似于Hugging Face)是由阿里巴巴集团牵头,联合多家中国顶尖科研机构和高校共同推出的一个下一代“模型即服务”(Model-as-a-Service,MaaS)共享平台。它的核心目标是降低人工智能模型的应用门槛,促进开源模型的共享、协作与创新。
1. 核心定位与愿景
ModelScope的愿景是成为AI模型领域的GitHub。就像GitHub托管代码一样,ModelScope致力于托管、分享和运行AI模型。它不仅仅是一个模型仓库,更是一个提供从模型探索、体验、微调到部署的一站式服务的生态系统。
其核心用户包括:
- AI研究人员:发布和验证自己的模型。
- 应用开发者:快速找到并集成现成的模型到自己的应用中,无须从零开始训练。
- 学生和爱好者:学习最前沿的AI技术,动手实践。
- 企业用户:寻找商业化的解决方案,降低AI研发成本。
2. 主要功能与核心组成部分
ModelScope社区提供了从模型探索、体验、部署到再开发的全链路服务。
1)庞大的模型库
(1)ModelScope汇聚了来自阿里巴巴、清华大学、北京大学、浙江大学、商汤科技、澜舟科技等众多顶尖AI实验室和高校的开源模型。
(2)覆盖领域广泛:包括自然语言处理(NLP)、计算机视觉(CV)、语音识别与合成、多模态、科学计算等。
(3)模型类型多样:从基础的图像分类、文本Embedding,到大型语言模型(如Qwen、Baichuan)、文生图模型(如Taiyi、SD)、语音合成模型等。
2)在线体验与Demo
几乎每一个模型都提供了在线试玩(Playground)功能。用户无须安装任何环境,直接在网页上上传图片、输入文本或录音,即可立即看到模型的推理效果,这极大地降低了模型体验的门槛。
3)Notebook开发环境
平台提供了集成好的、云端免费的Jupyter Notebook开发环境(基于PAI-DSW),预装了ModelScope SDK和常用依赖。用户可以直接在浏览器中打开Notebook,编写几行代码即可加载和运行模型,进行原型开发和实验。
4)ModelScope Library(Python SDK)
这是ModelScope的核心组件,一个开源Python库。通过它,开发者可以用极其简洁的代码(通常只需2~3行)在自己的本地或云端环境中下载、加载和推理模型。
示例代码如下:
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
# 创建文本摘要 pipeline
pipe = pipeline(task=Tasks.text_summarization, model='damo/nlp_bert_document-segmentation_chinese-base')
# 输入文本并获取结果
result = pipe('这里是需要摘要的长篇文章内容...')
print(result)
5)ModelScope Studio
类似于Hugging Face的Spaces,ModelScope Studio(创空间)是一个低代码/无代码的应用构建平台。用户可以利用Gradio、Streamlit等框架,快速为自己的模型构建一个功能丰富、界面友好的演示应用,并一键部署和分享给他人。
6)数据集与学习资源
(1)除了模型外,平台还提供了与模型配套使用的训练和评测数据集。
(2)包含丰富的教程、文档、技术博客和视频,帮助用户从入门到精通。
2.2.2 Qwen3的本地调用
如果要使用大模型进行应用开发,我们可以通过ModelScope(魔塔)官网在模型库中查找,比如要使用Qwen3大模型,可以查找Qwen3关键字,结果如图2.6所示。
从图2.6中可以看到,这里找到了多个不同种类的Qwen3模型。我们单击“通义千问3-32B”,进入模型介绍界面,如图2.7所示。

图2.6 查找Qwen3

图2.7 “通义千问3-32B”标签界面
这个页面对“通义千问3-32B”进行介绍,在页面下拉左侧介绍框,可以看到基于ModelScope本地模型的读取与处理示例。
需要注意的是,Qwen3的代码已包含在最新的Hugging Face Transformers中,建议读者使用Transformers的最新版本。如果使用Transformers低于4.51.0的版本,可能会将遇到以下错误:KeyError: 'qwen3'。
【示例2.1】基于ModelScope本地模型的读取与处理,本示例展示如何根据给定输入使用模型生成内容,代码如下:
from modelscope import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen3-1.7B"
# load the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
# prepare the model input
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=True # Switches between thinking and non-thinking modes. Default is True.
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# conduct text completion
generated_ids = model.generate(
**model_inputs,
max_new_tokens=32768
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
# parsing thinking content
try:
# rindex finding 151668 (</think>)
index = len(output_ids) - output_ids[::-1].index(151668)
except ValueError:
index = 0
thinking_content = tokenizer.decode(output_ids[:index], skip_special_tokens= True).strip("\n")
content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n")
print("thinking content:", thinking_content)
print("content:", content)
response = tokenizer.decode(output_ids, skip_special_tokens=True)
print(response)
资源调用太耗费内存和算力,结果暂不展示。对于部署,可以使用sglang>=0.4.6.post1或vllm>=0.8.5来创建一个与OpenAI兼容的API端点。
1. SGLang
SGLANG_USE_MODELSCOPE=true python -m sglang.launch_server --model-path Qwen/
Qwen3-1.7B --reasoning-parser qwen3
2. vLLM
VLLM_USE_MODELSCOPE=true vllm serve Qwen/Qwen3-1.7B --enable-reasoning --
reasoning-parser deepseek_r1
代码是用于加载Qwen3-1.7B模型并进行推理的完整流程,使用了ModelScope的AutoModel ForCausalLM和AutoTokenizer。如果使用的模型较大,比如Qwen3-32B,则实际运行需要更高性能的GPU,如A100、H100等。
对于本地使用,Ollama、LMStudio、MLX-LM、llama.cpp和KTransformers等应用程序也支持Qwen3,读者可以根据自己的需要选择在本地运行大模型。
2.2.3 Qwen3的在线调用
首先我们需要登录Qwen3官方网站“阿里云百炼”,页面菜单如图2.8所示。
![]()
图2.8 “阿里云百炼”菜单
注册并登录后进入百炼控制台,在页面上单击“大模型服务平台百炼”,打开“阿里云百炼”主页面,再单击“模型服务”,页面左下角有个“密钥管理”,如图2.9所示。

图2.9 获取API Key
单击“密钥管理”后,进入“密钥管理”页面,在这里既可以创建新的API-Key,也可以查询以前所创建的API-Key,如图2.10所示。

图2.10 已创建的API Key
接下来,单击“模型广场”,在“模型广场”页面上选择想要开通的模型,如图2.11所示。

图2.11 单击通义千问目录
对于不同的任务需求,Qwen3给我们准备了不同的API调用示例。例如,在“模型广场”上单击“通义千问3-Max”进入模型页面,其中提供了“API代码示例”,如图2.12所示。

图2.12 Qwen3在线API调用示例
【示例2.2】“模型广场”提供的Qwen3在线API调用示例。
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用百炼API Key将下一行替换为:api_key="sk-xxx"
api_key=("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
# 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
model="qwen-plus",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你是谁?"},
],
# Qwen3模型通过enable_thinking参数控制思考过程(开源版默认为True,商业版默认为False)
# 使用Qwen3开源版模型时,若未启用流式输出,请将下一行取消注释,否则会报错
# extra_body={"enable_thinking": False},
)
print(completion.model_dump_json())
运行代码,输出如下:
{"id":"chatcmpl-efc22742-e6b8-99c1-bb83-4129b2a379d1","choices":[{"finish_reason":"stop","index":0,"logprobs":null,"message":{"content":"我是通义千问,阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我可以帮助你回答问题、创作文字,比如写故事、写公文、写邮件、写剧本、逻辑推理、编程等,还能表达观点、玩游戏等。如果你有任何问题或需要帮助,欢迎随时告诉我!","refusal":null,"role":"assistant", "annotations":null,"audio":null,"function_call":null,"tool_calls":null}}],"created":1756625977,"model":"qwen-plus","object":"chat.completion","service_tier":null,"system_fingerprint":null,"usage":{"completion_tokens":66,"prompt_tokens":26,"total_tokens":92,"completion_tokens_details":null,"prompt_tokens_details":{"audio_tokens":null,"cached_tokens":0}}}
读者可以将上面代码中的API Key替换成自己的。由于Qwen3模型包含思考过程,读者同时还可以自定义思考过程的输出方式。下面是作者重写的参数说明:
(1)model:字符串,必选,指定模型名称。支持通义千问大语言模型(商业版、开源版、Qwen-Long)、通义千问VL、通义千问Omni、数学模型、代码模型。需要注意的是,通义千问Audio暂不支持OpenAI兼容模式,仅支持DashScope方式。具体模型名称及计费规则详见模型列表文档。
(2)messages:数组,必选,对话组成的消息列表。其包含以下消息类型。
- SystemMessage:对象,可选,定义模型目标或角色。若设置,则需置于messages列表首位。但QwQ模型不建议设置,QVQ模型设置后不生效。
- UserMessage:对象,必选,表示用户发送给模型的消息内容。
- AssistantMessage:对象,可选,记录模型对用户消息的回复。
- ToolMessage:对象,可选,承载工具的输出信息。
(3)stream:布尔值,可选,默认为false,控制是否流式输出回复。
- false:模型生成完整内容后一次性返回。
- true:逐片段输出(chunk),需实时读取以获取完整结果。仅Qwen3商业版(思考模式)、Qwen3开源版、QwQ、QVQ支持流式输出。
(4)stream_options:当stream=true时,可通过设置{"include_usage": true}在输出末行显示token使用量,设为false则隐藏该信息。
(5)modalities:仅Qwen-Omni模型支持指定输出模态。
- ["text","audio"]:同时输出文本与音频。
- ["text"]:仅输出文本。
(6)temperature:浮点数,可选,控制生成文本多样性。值越高,结果越随机(范围为[0,2))。建议与top_p二选一设置,QVQ模型默认值不建议修改。
(7)top_p:浮点数,可选,采样阈值。值越高,结果越随机(范围为(0,1.0])。建议与temperature二选一设置,QVQ模型默认值不建议修改。
(8)top_k:整数,可选,采样候选集大小(≥0)。值越大,随机性越高。设为None或大于100时仅top_p生效。QVQ模型默认值不建议修改,Python SDK需通过extra_body配置。
(9)presence_penalty:控制内容重复度(范围为[−2.0,2.0])。
- 正值减少重复(适合创意场景)。
- 负值增加重复(适合专业文档)。
示例:qwen-vl-plus系列模型文字提取建议设置为1.5,QVQ模型默认值不建议修改。
(10)response_format:指定返回格式。
- {"type":"text"}:纯文本。
- {"type":"json_object"}:结构化JSON(需在消息中提示模型输出JSON格式)。
(11)max_tokens:限制返回最大Token数,超限内容将被截断。默认值及上限参考模型列表,qwen-vl-ocr系列默认为2048,最大为8192。QwQ/QVQ模型仅限制回复长度,不限制思考内容。
(12)n:integer(可选)默认值为1,生成响应的数量,取值范围是1~4,适用于多结果场景(如创意写作)。仅qwen-plus及非思考模式Qwen3支持,且传入tools时固定为1。
(13)enable_thinking:控制Qwen3模型思考模式。需通过extra_body配置。商业版默认为false,开源版默认为true。
(14)thinking_budget:设置思考过程最大长度。仅enable_thinking=true时生效,适用于Qwen3商业版及开源版。
(15)seed:设置随机种子(0~2³¹−1)以获得确定性结果,相同seed和其他参数将生成相同内容。
(16)stop:指定终止生成字符串或token_id,可用于敏感词过滤。数组类型不支持混合token_id与字符串。
(17)tools:定义可调用工具列表,当前不支持通义千问VL/Audio及数学/代码模型。每个工具对象包含:
- tool_choice:字符串/对象,可选,默认为"auto"。控制工具调用策略,可选"auto" "none"或指定工具名称。
- parallel_tool_calls:boolean(可选),默认值为false,表示是否开启并行工具调用。相关文档:并行工具调用可选值:true:开启;false:不开启。
(18)translation_options:翻译模型专用配置参数,需通过extra_body传递。
(19)enable_search:控制是否启用互联网搜索。
- true:允许模型参考搜索结果(可能增加Token消耗)。
- false:禁用搜索,支持强制搜索配置。
(20)search_options:对象,可选,联网搜索策略配置,仅enable_search=true时生效。
不同参数定义了用户在使用Qwen3在线API时能够进行的操作。除了基本的文本输入输出外,对于更多的使用示例和样式,读者可以自行验证。
更多推荐



所有评论(0)