1、深入解析 vLLM 的 Structured Output 和 Tool Calling,DaoCloud,2025/11/15,蒋兴彦,CONTENT,目录,01,Structured Outputs 样例展示,02,Structured Outputs 工作原理,03,vLLM Tool Parser,04,vLLM Reasoning Parser,Structured Outputs 样例展示,想让大模型整理一些文档,然后输出指定的格式,如 JSON 格式时,大模型会输出了一个 json,但在个别地方,格式上又不满足,所以又不是一个 合法的 JSON.想让大模型整理一些数据,输出一些
2、SQL 语句,但是生成的SQ 语句,复制粘贴准备执行时,又报语法错误,不是一个 合法的语句。.,在使用大模型时,常常会出现以下困扰,即使写大段大段的 Prompt 来约束 大模型输出,有时依然会输出不满足格式的输出,Structured Outputs 样例展示,将大模型的输出,限制为符合指定的格式。可通过 Python API 和兼容 OpenAI 的 API Server 调用。,Choices,强制大模型从提供的选项列表中选择一个输出,例如:Prompt:Please choose a color:red,blue,or green.,Choices,强制大模型从提供的选项列表中选择一个
3、输出,例如:Prompt:Please choose a color:red,blue,or green.,blue,强制大模型的输出必须满足 JSON schema 格式,例如:Prompt:Generate a JSON object with keys:name(string),age(integer),and is_student(boolean).,name:Alice,/a common name age:30,is_student:false,JSON,JSON,强制大模型的输出必须满足 JSON schema 格式,例如:Prompt:Generate a JSON objec
4、t with keys:name(string),age(integer),and is_student(boolean).,json_schema=type:object,properties:name:type:string,age:type:integer,is_student:type:boolean,required:name,age,is_student,additionalProperties:false,name:Alice,age:30,is_student:false,Regular Expressions,强制大模型的输出必须满足正则表达式约束,例如:Prompt:Gen
5、erate an email address,Regular Expressions,强制大模型的输出必须满足正则表达式约束,例如:Prompt:Generate an email address,regex=a-z0-9.1,20w6,Grammar,强制大模型的输出必须满足 语法表达式 EBNF/Lark grammars,例如:root:=select_statementselect_statement:=SELECT column from table where conditioncolumn:=col_1|col_2 table:=table_1|table_2 condition
6、:=column=numbernumber:=1|2,Structural Tag,Response中位于起始与结束标记之间的JSON Schema,例如:structural_tag=type:structural_tag,structures:begin:,schema:type:object,properties:city:type:string,end:,triggers:function=,vLLM Integration,OpenAI-compatible API serverOptional fields in the request body:choiceregexsongra