vllm [Bug]: 带有日期字段的指导性JSON无效

ztmd8pv5  于 4个月前  发布在  其他
关注(0)|答案(3)|浏览(89)

当前环境
我使用基于vllm/vllm-openai:0.4.1镜像的docker容器托管llama3-8B-instruct模型。
openai版本:1.6.1(以下示例脚本)

🐛 描述bug

描述

当我们提示模型生成一个包含guided_json参数设置和日期字段的json时,我们得到一个无效的json响应。
这并不依赖于特定的模型。我们在mixtral模型中也得到了相同的错误。

代码

from openai import OpenAI

model_name = "/docker_share/models/llama3_8b_instruct"
num_prompt_tokens = 1000
base_url = "http://model-url"
api_key = "EMPTY"
client = OpenAI(base_url=base_url, api_key=api_key)
def call_vllm(prompt, guided_json=None):
        if guided_json:
            extra_body = {
                 "guided_json": guided_json
                 }
        messages = [{"role": "user", "content": prompt}]
        
        chat_completion = client.chat.completions.create(
            model=model_name,
            messages=messages,
            extra_body=extra_body,
            seed=42,
            max_tokens=num_prompt_tokens,
            temperature=0
        )
        return chat_completion.choices[0].message.content

guided_json = """{ 
    "additionalProperties": false, 
    "properties": { 
        "DocumentDate": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], 
        "description": "Document date", 
        "title": "DocumentDate"} 
    }, 
    "required": ["DocumentDate"], 
    "title": "Document", 
    "type": "object" 
}"""

if __name__ == "__main__":
    res = call_vllm("Extract a date from this string: date of the document - 01.01.1999", guided_json=guided_json)
    print(res)

结果

{ "DocumentDate": 1999-01-01 }

预期结果

{ "DocumentDate": "1999-01-01" }

3duebb1j

3duebb1j1#

你能用大纲复现这个吗?https://github.com/outlines-dev/outlines?tab=readme-ov-file#efficient-json-generation-following-a-json-schema

yftpprvb

yftpprvb2#

这似乎与旧版本大纲的已知问题有关:
bug: predibase/lorax#392
修复: outlines-dev/outlines#567
也许大纲版本应该更新。
在vllm中,在requirements-common.txt中指定了outlines == 0.0.34。
使用上述示例脚本中的outlines==0.0.41,我得到了带有日期字段的有效jsons。

yftpprvb

yftpprvb3#

#4558#4330 中进行工作。

相关问题