公司动态

2.2 LLM的调用与使用《AI Agent智能体开发实践》

📅 2026/8/19 13:36:56
2.2 LLM的调用与使用《AI Agent智能体开发实践》
本节将以ModelScope魔搭社区中的Qwen3大模型为例介绍LLM的调用与使用。2.2.1 ModelScope魔搭社区ModelScope类似于Hugging Face是由阿里巴巴集团牵头联合多家中国顶尖科研机构和高校共同推出的一个下一代“模型即服务”Model-as-a-ServiceMaaS共享平台。它的核心目标是降低人工智能模型的应用门槛促进开源模型的共享、协作与创新。1.核心定位与愿景ModelScope的愿景是成为AI模型领域的GitHub。就像GitHub托管代码一样ModelScope致力于托管、分享和运行AI模型。它不仅仅是一个模型仓库更是一个提供从模型探索、体验、微调到部署的一站式服务的生态系统。其核心用户包括AI研究人员发布和验证自己的模型。应用开发者快速找到并集成现成的模型到自己的应用中无须从零开始训练。学生和爱好者学习最前沿的AI技术动手实践。企业用户寻找商业化的解决方案降低AI研发成本。2.主要功能与核心组成部分ModelScope社区提供了从模型探索、体验、部署到再开发的全链路服务。1庞大的模型库1ModelScope汇聚了来自阿里巴巴、清华大学、北京大学、浙江大学、商汤科技、澜舟科技等众多顶尖AI实验室和高校的开源模型。2覆盖领域广泛包括自然语言处理NLP、计算机视觉CV、语音识别与合成、多模态、科学计算等。3模型类型多样从基础的图像分类、文本Embedding到大型语言模型如Qwen、Baichuan、文生图模型如Taiyi、SD、语音合成模型等。2在线体验与Demo几乎每一个模型都提供了在线试玩Playground功能。用户无须安装任何环境直接在网页上上传图片、输入文本或录音即可立即看到模型的推理效果这极大地降低了模型体验的门槛。3Notebook开发环境平台提供了集成好的、云端免费的Jupyter Notebook开发环境基于PAI-DSW预装了ModelScope SDK和常用依赖。用户可以直接在浏览器中打开Notebook编写几行代码即可加载和运行模型进行原型开发和实验。4ModelScope LibraryPython SDK这是ModelScope的核心组件一个开源Python库。通过它开发者可以用极其简洁的代码通常只需2~3行在自己的本地或云端环境中下载、加载和推理模型。示例代码如下from modelscope.pipelines import pipelinefrom modelscope.utils.constant import Tasks#创建文本摘要pipelinepipe pipeline(taskTasks.text_summarization, modeldamo/nlp_bert_document-segmentation_chinese-base)#输入文本并获取结果result pipe(这里是需要摘要的长篇文章内容...)print(result)5ModelScope Studio类似于Hugging Face的SpacesModelScope 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, AutoTokenizermodel_name Qwen/Qwen3-1.7B# load the tokenizer and the modeltokenizer AutoTokenizer.from_pretrained(model_name)model AutoModelForCausalLM.from_pretrained(model_name,torch_dtypeauto,device_mapauto)# prepare the model inputprompt Give me a short introduction to large language model.messages [{role: user, content: prompt}]text tokenizer.apply_chat_template(messages,tokenizeFalse,add_generation_promptTrue,enable_thinkingTrue # Switches between thinking and non-thinking modes. Default is True.)model_inputs tokenizer([text], return_tensorspt).to(model.device)# conduct text completiongenerated_ids model.generate(**model_inputs,max_new_tokens32768)output_ids generated_ids[0][len(model_inputs.input_ids[0]):].tolist()# parsing thinking contenttry:# rindex finding 151668 (/think)index len(output_ids) - output_ids[::-1].index(151668)except ValueError:index 0thinking_content tokenizer.decode(output_ids[:index], skip_special_tokens True).strip(\n)content tokenizer.decode(output_ids[index:], skip_special_tokensTrue).strip(\n)print(thinking content:, thinking_content)print(content:, content)response tokenizer.decode(output_ids, skip_special_tokensTrue)print(response)资源调用太耗费内存和算力结果暂不展示。对于部署可以使用sglang0.4.6.post1或vllm0.8.5来创建一个与OpenAI兼容的API端点。1.SGLangSGLANG_USE_MODELSCOPEtrue python -m sglang.launch_server --model-path Qwen/Qwen3-1.7B --reasoning-parser qwen32.vLLMVLLM_USE_MODELSCOPEtrue 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 “阿里云百炼”菜单注册并登录后进入百炼控制台在页面上单击“大模型服务平台百炼”打[wy1] [2] 开“阿里云百炼”主页面再单击“模型服务”页面左下角有个“密钥管理”如图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 osfrom openai import OpenAIclient OpenAI(#若没有配置环境变量请用百炼API Key将下一行替换为api_keysk-xxxapi_key(DASHSCOPE_API_KEY),base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,)completion client.chat.completions.create(#模型列表https://help.aliyun.com/zh/model-studio/getting-started/modelsmodelqwen-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模型包含思考过程读者同时还可以自定义思考过程的输出方式。下面是作者重写的参数说明1model字符串必选指定模型名称。支持通义千问大语言模型商业版、开源版、Qwen-Long、通义千问VL、通义千问Omni、数学模型、代码模型。需要注意的是通义千问Audio暂不支持OpenAI兼容模式仅支持DashScope方式。具体模型名称及计费规则详见模型列表文档。2messages数组必选对话组成的消息列表。其包含以下消息类型。SystemMessage对象可选定义模型目标或角色。若设置则需置于messages列表首位。但QwQ模型不建议设置QVQ模型设置后不生效。UserMessage对象必选表示用户发送给模型的消息内容。AssistantMessage对象可选记录模型对用户消息的回复。ToolMessage对象可选承载工具的输出信息。3stream布尔值可选默认为false控制是否流式输出回复。false模型生成完整内容后一次性返回。true逐片段输出chunk需实时读取以获取完整结果。仅Qwen3商业版思考模式、Qwen3开源版、QwQ、QVQ支持流式输出。4stream_options当streamtrue时可通过设置{include_usage: true}在输出末行显示token使用量设为false则隐藏该信息。5modalities仅Qwen-Omni模型支持指定输出模态。[text,audio]同时输出文本与音频。[text]仅输出文本。6temperature浮点数可选控制生成文本多样性。值越高结果越随机范围为[0,2)。建议与top_p二选一设置QVQ模型默认值不建议修改。7top_p浮点数可选采样阈值。值越高结果越随机范围为(0,1.0]。建议与temperature二选一设置QVQ模型默认值不建议修改。8top_k整数可选采样候选集大小≥0。值越大随机性越高。设为None或大于100时仅top_p生效。QVQ模型默认值不建议修改Python SDK需通过extra_body配置。9presence_penalty控制内容重复度范围为[−2.0,2.0]。正值减少重复适合创意场景。负值增加重复适合专业文档。示例qwen-vl-plus系列模型文字提取建议设置为1.5QVQ模型默认值不建议修改。10response_format指定返回格式。{type:text}纯文本。{type:json_object}结构化JSON需在消息中提示模型输出JSON格式。11max_tokens限制返回最大Token数超限内容将被截断。默认值及上限参考模型列表qwen-vl-ocr系列默认为2048最大为8192。QwQ/QVQ模型仅限制回复长度不限制思考内容。12ninteger可选默认值为1生成响应的数量取值范围是1~4适用于多结果场景如创意写作。仅qwen-plus及非思考模式Qwen3支持且传入tools时固定为1。13enable_thinking控制Qwen3模型思考模式。需通过extra_body配置。商业版默认为false开源版默认为true。14thinking_budget设置思考过程最大长度。仅enable_thinkingtrue时生效适用于Qwen3商业版及开源版。15seed设置随机种子0~2³¹−1以获得确定性结果相同seed和其他参数将生成相同内容。16stop指定终止生成字符串或token_id可用于敏感词过滤。数组类型不支持混合token_id与字符串。17tools定义可调用工具列表当前不支持通义千问VL/Audio及数学/代码模型。每个工具对象包含tool_choice字符串/对象可选默认为auto。控制工具调用策略可选auto none或指定工具名称。parallel_tool_callsboolean可选默认值为false表示是否开启并行工具调用。相关文档并行工具调用可选值true开启false不开启。18translation_options翻译模型专用配置参数需通过extra_body传递。19enable_search控制是否启用互联网搜索。true允许模型参考搜索结果可能增加Token消耗。false禁用搜索支持强制搜索配置。20search_options对象可选联网搜索策略配置仅enable_searchtrue时生效。不同参数定义了用户在使用Qwen3在线API时能够进行的操作。除了基本的文本输入输出外对于更多的使用示例和样式读者可以自行验证。