由于调用参数必须与输入schema匹配,我们要求LLM以结构化的方式输出它们。大多数LLM都经过YAML和JSON的结构化输出训练。 我们选择YAML是因为它更简洁,因此消耗的tokens比JSON少。 我们遇到的一个挑战是,虽然大约90%的时间里,LLM的响应包含了正确格式的参数,但有大约0%的时间,LLM会出错(注:经常说的幻觉),并且经常输出不符合要求的数据,或者更糟糕的是,甚至不是有效的YAML。
但会导致解析它们的代码出错。由于0%的比例足够高,我们不能忽视这些微不足道的错误,因此我们着手解决这个问题。 解决这个问题的标准方法是检测到错误,然后重新发提示词给 芬兰电话号码数据 大语言模型,要求它在这些额外指示下纠正错误。虽然这种方法有效,但它增加了不小的延迟,并且由于额外的LLM调用而消耗了宝贵的GPU算力。
为了绕过这些限制,我们最终编写了一个内部防御性YAML解析器。 通过对各种调用参数(payload)的分析,我们确定了LLM常犯的错误,并编写了代码来在解析之前检测和适当修补这些错误。 我们还修改了提示词,以便在这些常见错误周围注入提示词,以提高我们修补的准确性。最终,我们将这些错误的发生率降低到了约0.0%。