1
frankyzf 207 天前
试试让大模型用 markdown 格式返回代码或 JSON ,然会只处理 markdown 里面的代码或 JSON 会不会好些
|
2
neteroster 207 天前
其实如果用开源模型的话有很多方法可以做到。
例如说 llama.cpp 就可以用 grammar ,这是直接从采样器上面做限制的,效果会很好。除此之位还有一众更强大的推理约束工具,例如 guidance ( https://github.com/guidance-ai/guidance ), outline ( https://github.com/outlines-dev/outlines ), sglang ( https://github.com/sgl-project/sglang ),它们不止可以限制 json 输出,甚至可以限制输出满足特定的正则表达式 / 形式文法。 对于在线模型,如果不是复杂的结构,有一些办法,比如 Anthropic 的 API 支持先填充 LLM 响应的前面一部分,对于你这个例子来说,你可以指定前面部分就是 "[",这样模型就会立即开始输出,然后 stop 序列设置成 "]",就会在输出到 "]" 立即截断并返回。 |
3
neteroster 207 天前
@neteroster 对了,在线 API 还有一点忘记提了,就是做 few-shot 。如果你的任务文本不太长,可以先用前面的对话给 LLM 一些例子
|
4
TyCoding OP @frankyzf @neteroster ok 我目前只是先考虑 json_object 这种方式,但是估计对其他模型无效,我看看还是用 function call 或者简化一下 llm 的返回内容,让他尽可能专注于某一项的处理
|
5
frankyzf 207 天前
@TyCoding 如果是开源的模型,实在不行还可以用 ORPO 来 fine-tuning 模型 [Supported Training Approaches]( https://github.com/hiyouga/LLaMA-Factory?tab=readme-ov-file#supported-training-approaches)
|