NL2SQL&& NL2API

一些基本思路,摘录自公众号

  • Text2SQL和Text2API的提示工程本质是是将领域知识显式化,通过角色定义和业务知识注入(如数据库Schema、API文档),让模型“理解”自然语言背后的真实意图,并将其转化为可执行的结构化指令。
  • 提示工程的核心目标是将自然语言问题转化为准确的 SQL 查询和具体的 API 调用参数。

text2sql

text2sql 是一种自然语言描述查询需求,从而转化为结构化的查询语言(SQL)的技术

LangChain提供SQLDatabaseChain,支持将数据库Schema动态注入提示词,实现端到端的SQL生成与执行。LangChain可以自动提取数据库表结构(Schema)作为上下文。支持多轮对话修正SQL语句。

如何实现text2sql

通过自然语言进行语义解析(包括实体识别,关系抽取,意图理解)结合瑜伽在的数据库的schema 信息,利用大语言模型 llm 生成更加合乎规范的 sql 语句。

1、 输入解析:用户提问 -> 提取关键实体(表明、字段、条件)
例如:“统计2024年销售额超过100万的产品” → 提取“销售额(sales)”、“产品(product)”、“年份(year=2024)”、“条件(>1,000,000)”。

2、schema绑定: 结合数据库表的结构(Schema),明确字段和表关系
关键:在Prompt中提供Schema,例如:表orders: id (int), product_id (int), sales (float), date (date)  表products: id (int), name (str), category (str)

3、sql生成:sql生成根据schema 和 用户意图生成查询语句
SELECT p.name, SUM(o.sales) AS total_sales  FROM orders o  JOIN products p ON o.product_id = p.id  WHERE YEAR(o.date) = 2023  GROUP BY p.id  HAVING total_sales > 1000000;

4、结果验证:执行sql 病返回数据,失败则优化prompt 或者追问用户

text2api

Text2API(文本转API调用) 是一种将自然语言描述的用户需求自动转换为对应用程序接口(API)的调用请求的技术

LangChain提供APIChain,支持将API文档(如OpenAPI/Swagger)嵌入提示词,引导大模型生成请求参数,可以支持多步骤调用(如先查询用户ID,再调用订单API)。

from langchain.chains import APIChain from langchain_community.llms import OpenAI llm = OpenAI(temperature=0) api_docs = """API文档:- 发送邮件:POST /send_email    参数:to(收件人), subject(主题), content(内容)  - 查询天气:GET /weather    参数:city(城市), date(日期)  """ chain = APIChain.from_llm_and_api_docs(llm, api_docs, verbose=True) response = chain.run("给Allen发邮件,主题是会议提醒,内容为明天下午2点开会。")

如何实现 text2api

通过自然语言处理技术进行语义解析(含意图识别、实体抽取、上下文理解),结合预加载的API文档信息,利用大语言模型(LLM)生成符合语法规范的API调用请求。
1、API目录管理:维护API文档(端点、参数、权限)
2、意图识别:模型解析用户指令,匹配目标API。
3、参数填充:提取并验证参数(如邮箱、内容)。
4. 执行与反馈:调用API并返回结果(成功/失败原因)。

posted @ 2025-06-20 14:39  wsl-hitsz  阅读(511)  评论(0)    收藏  举报