使用vLLM的guided_decoding_backend参数进行结构化输出

本篇博客主要演示如何使用vLLM中的guided_decoding_backend参数进行结构化输出的设置。

以下是vLLM库中的官方定义,也就是说参数guided_decoding_backend仅可以被赋值为outlines或者lm-format-enforcer。注意:为str格式

guided_decoding_backend: Optional[str] = Field(
        default=None,
        description=(
            "If specified, will override the default guided decoding backend "
            "of the server for this specific request. If set, must be either "
            "'outlines' / 'lm-format-enforcer'"))

使用OpenAI兼容的API服务

首先借助vLLM,构建一个与OpenAI API兼容的API服务。部署的方法在网上有很多了,想实践的同学可以去看看其他的博文。本篇博客主要讲解如何在使用API服务时,通过参数设定,使模型可以进行结构化输出。

guided_decoding_backend参数需要与guided_***参数进行联合使用,其中guided_***可以选择如下图中的四种:guided_json,guided_regex,guided_choice,guided_grammar。

以下是使用python调用OpenAI以实现结构化输出的源代码文件:

from openai import OpenAI

openai_api_key = "sk-***"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

completion = client.chat.completions.create(
    model="Qwen2-1.5B-Instruct",
    messages = [
        {"role": "system", "content": "你是一个专业助手"},
        {"role": "user", "content": "判断用户输入的是什么东西,如果属于水果则输出1,如果属于饮料则输出2,如果输入的东西属于电脑配件则输出3。 用户的输入为:键盘"}
    ],
    extra_body={
        "guided_choice": ["1","2","3"], # guided_***参数四选一
        "guided_decoding_backend": "outlines" # 也可以设置为lm-format-enforcer
    }
)

 以下是在使用postman发送POST请求时的body:

{
    "model": "Qwen2-1.5B-Instruct",
    "stream": false,
    "messages": [
        {
            "content": "判断用户输入的是什么东西,如果属于水果则输出1,如果属于饮料则输出2,如果属于电脑配件则输出3。 用户的输入为:键盘",
            "role": "user"
        }
        ],
    "guided_choice":["1", "2","3"], 
    "guided_decoding_backend": "outlines"
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值