Path: blob/main/smolagents_doc/zh/text_to_sql.ipynb
5689 views
Text-to-SQL
在此教程中,我们将看到如何使用 smolagents
实现一个利用 SQL 的 agent。
让我们从经典问题开始:为什么不简单地使用标准的 text-to-SQL pipeline 呢?
标准的 text-to-SQL pipeline 很脆弱,因为生成的 SQL 查询可能会出错。更糟糕的是,查询可能出错却不引发错误警报,从而返回一些不正确或无用的结果。
👉 相反,agent 系统则可以检视输出结果并决定查询是否需要被更改,因此带来巨大的性能提升。
让我们来一起构建这个 agent! 💪
首先,我们构建一个 SQL 的环境:
构建 agent
现在,我们构建一个 agent,它将使用 SQL 查询来回答问题。工具的 description 属性将被 agent 系统嵌入到 LLM 的提示中:它为 LLM 提供有关如何使用该工具的信息。这正是我们描述 SQL 表的地方。
我们现在使用这个工具来创建一个 agent。我们使用 CodeAgent
,这是 smolagent 的主要 agent 类:一个在代码中编写操作并根据 ReAct 框架迭代先前输出的 agent。
这个模型是驱动 agent 系统的 LLM。InferenceClientModel
允许你使用 HF Inference API 调用 LLM,无论是通过 Serverless 还是 Dedicated endpoint,但你也可以使用任何专有 API。
Level 2: 表连接
现在让我们增加一些挑战!我们希望我们的 agent 能够处理跨多个表的连接。因此,我们创建一个新表,记录每个 receipt_id 的服务员名字!
因为我们改变了表,我们需要更新 SQLExecutorTool
,让 LLM 能够正确利用这个表的信息。
因为这个request 比之前的要难一些,我们将 LLM 引擎切换到更强大的 Qwen/Qwen2.5-Coder-32B-Instruct!
它直接就能工作!设置过程非常简单,难道不是吗?
这个例子到此结束!我们涵盖了这些概念:
构建新工具。
更新工具的描述。
切换到更强大的 LLM 有助于 agent 推理。
✅ 现在你可以构建你一直梦寐以求的 text-to-SQL 系统了!✨