跳到内容

使用 LLM 生成 Polars 代码

大型语言模型(LLM)有时会在其输出中返回Pandas代码或无效的Polars代码。本指南介绍了一些方法,可帮助LLM更稳定地生成有效的Polars代码。

这些方法是由Polars社区通过测试模型对各种输入的响应而开发的。如果您发现其他通过LLM生成Polars代码的有效方法,请提交拉取请求

系统提示词

许多LLM允许您提供一个系统提示词,该提示词会包含在您发送给模型的每个单独提示中。在系统提示词中,您可以指定您的首选默认设置,例如“将Polars作为默认数据帧库”。包含这样的系统提示词通常会使模型稳定地生成Polars代码,而不是Pandas代码。

您可以在ChatGPT等基于网页的LLM和Cursor等基于IDE的LLM的设置菜单中设置此系统提示词。请查阅各应用程序的文档以获取具体说明。

一些LLM可以搜索网页以访问其预训练数据之外的信息。启用网页搜索允许LLM引用最新Polars API文档。

一些基于IDE的LLM可以索引Polars API文档并在生成代码时引用它。例如,在Cursor中,您可以将Polars添加为自定义文档源,并指示代理在提示中引用Polars文档。

然而,网页搜索尚不能保证生成有效的代码。如果模型对其基于预训练数据的结果充满信心,它可能不会在其输出中整合网页搜索结果。

Polars API页面还提供AI驱动的搜索功能,帮助您更轻松地找到所需信息。

提供示例

您可以通过在提示中包含相关示例来引导LLM使用正确的语法。

例如,这个基本查询

df = pl.DataFrame({
    "id": ["a", "b", "a", "b", "c"],
    "score": [1, 2, 1, 3, 3],
    "year": [2020, 2020, 2021, 2021, 2021],
})
# Compute average of score by id

通常会导致过时的groupby语法,而不是正确的group_by

然而,如果包含一个来自Polars group_by文档的简单示例(最好启用网页搜索),像这样

df = pl.DataFrame({
    "id": ["a", "b", "a", "b", "c"],
    "score": [1, 2, 1, 3, 3],
    "year": [2020, 2020, 2021, 2021, 2021],
})
# Compute average of score by id
# Examples of Polars code:

# df.group_by("a").agg(pl.col("b").mean())

通常会生成有效的输出。这种方法已在多个主流模型中得到验证。

网页搜索和示例的结合比单独使用任何一种都更有效。模型输出表明,当示例与模型的预训练预期相矛盾时,似乎更有可能触发网页搜索以进行验证。

此外,明确的指示,例如“使用group_by而不是groupby”,可以有效地引导模型使用正确的语法。

常见的示例,例如df.group_by("a").agg(pl.col("b").mean()),也可以添加到系统提示词中以提高一致性。