大模型的提示工程(Prompt Engineering) 是通过精心设计输入文本(Prompt),引导大语言模型(LLM)生成符合预期输出的技术。在Text2SQL(自然语言转SQL)和Text2API(自然语言调接口)场景中,提示工程的核心目标是将自然语言问题转化为准确的 SQL 查询和具体的 API 调用参数。
Text2SQL和Text2API的提示工程本质是是将领域知识显式化,通过角色定义和业务知识注入(如数据库Schema、API文档),让模型“理解”自然语言背后的真实意图,并将其转化为可执行的结构化指令。
一、Text2SQL
SQLDatabaseChain
,支持将数据库Schema动态注入提示词,实现端到端的SQL生成与执行。LangChain可以自动提取数据库表结构(Schema)作为上下文。支持多轮对话修正SQL语句。from langchain.utilities import SQLDatabase
from langchain.chains import SQLDatabaseChain
from langchain_community.llms import OpenAI
db = SQLDatabase.from_uri("sqlite:///sales.db")
llm = OpenAI(temperature=0)
chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)
response = chain.run("2024年销售额超过100万的产品是什么?")
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;
二、Text2API
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文档(端点、参数、权限)。
例如:邮件API文档:POST /send_email 参数:to (str), subject (str), content (str) 权限:需用户OAuth令牌
2. 意图识别:模型解析用户指令,匹配目标API。
例如:“给Allen发邮件,主题是项目开发进度,内容为‘本周完成80%’” → 调用 /send_email
。
{
"endpoint": "/send_email",
"params": {"to": "zhangsan@company.com", "subject": "项目进度", "content": "本周完成80%"}
}