VLLM对结构化输出的支持:
vllm/docs/source/features/structured_outputs.md at main · vllm-project/vllm · GitHub
VLLM对tool call的支持:
vllm/docs/source/features/tool_calling.md at main · vllm-project/vllm · GitHub
以上指定输出格式,可以通过有限状态自动机“辅助”LLM来实现。
即把要求的输出格式,编译为自动机;LLM decode阶段,根据当前自动机状态,只采样(或贪心选择)自动机允许的那些tokens,不允许的那些tokens采样概率强制设为0。
输出格式里规定好的字符串,可以强制交给LLM,无需LLM自己去生成。
VLLM的guided decodin,能确保输出格式的正确。但不能确保内容质量也好。
VLLM建议,为了生成更好的内容,最好把格式要求写在prompt里:
我觉得,最好把这种格式输出,也放在few-shot-examples里或者SFT训练数据里。