Text2SQL、Text2API基礎

你有一個能力超強但“不太懂行”的助手(大語言模型LLM)。它能說會道,知識淵博,但它:

  1. 不懂你的數據庫: 不知道你的數據庫里有哪些表,表里有哪些字段,這些字段代表什么意思。
  2. 不懂你的API: 不知道你的系統里有哪些可以調用的功能(API),這些功能需要什么參數(比如郵箱地址、城市名、日期)。

提示工程(Prompt Engineering) 就是教你如何給這個“超強助手”寫一份清晰、詳細的指令說明書(Prompt),讓它能理解你的自然語言問題,并幫你完成特定的專業任務(寫SQL查數據庫、調用API)。

核心目標:把“人話”變成“機器能聽懂的專業指令”

  • Text2SQL: 把“今年賣得最好的產品是啥?” 變成 SELECT ... FROM ... WHERE ... 這樣的數據庫查詢語句。
  • Text2API: 把“給老王發個郵件,告訴他明天下午3點開會” 變成調用 send_email 這個接口,并填好 to=老王@公司.com, subject=會議提醒, content=明天下午3點開會... 這些參數。

---

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 = SQLDatabase
Chain.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;  

關鍵秘訣:給助手“補課” (顯式化領域知識)

LLM本身不懂你的業務細節。提示工程的核心就是通過Prompt把這些背景知識(領域知識) 明確地告訴它:

  1. 角色扮演: “嘿助手,你現在是一個數據庫專家/API調用專家!”
  2. 知識注入:
    • 對SQL: 把數據庫的結構(Schema) 告訴它。比如:
      • 我們有個 orders 表,里面有 id, product_id, sales (銷售額), date (日期)
      • 還有個 products 表,里面有 id, name (產品名), category (類別)
      • orders.product_id 對應著 products.id
    • 對API:API文檔告訴它。比如:
      • 有個API叫 /send_email,需要用 POST 方法調用,需要提供 to (收件人郵箱), subject (郵件主題), content (郵件內容) 這三個參數。
      • 還有個API叫 /weather,需要用 GET 方法調用,需要提供 city (城市名), date (日期)

在這里插入圖片描述

一、 Text2SQL 深入淺出解析 (怎么讓助手幫你查數據庫?)

  • 助手需要什么?
    • 你的問題: “2024年銷售額超過100萬的產品是什么?”
    • 數據庫結構: 哪些表?哪些字段?它們啥關系?(Schema)
  • 助手怎么做? (提示工程的步驟)
    1. 理解問題: 助手先看你的問題,找出關鍵信息(這叫實體識別、關系抽取、意圖理解)。
      • 你要查什么? -> 產品 (product)
      • 查哪個時間? -> 2024年 (year=2024)
      • 查什么條件? -> 銷售額 (sales) 超過 (>) 100萬 (1000000)
      • 怎么衡量? -> 很可能是按產品匯總 (SUM(o.sales) 然后 GROUP BY p.id)
    2. 對照數據庫結構 (Schema綁定): 助手拿著這些關鍵詞,去對比你提供的Schema。
      • “銷售額” -> 哦,在 orders 表里叫 sales
      • “產品名” -> 在 products 表里叫 name
      • ordersproducts 怎么關聯? -> 哦,通過 orders.product_id = products.id
      • “2024年” -> orders 表里有個 date 字段,需要提取年份 YEAR(o.date) = 2024
    3. 組裝SQL語句: 助手根據理解的信息和數據庫結構,拼裝出正確的SQL語句。
      SELECT p.name, SUM(o.sales) AS total_sales  -- 選出產品名,計算總銷售額
      FROM orders o                              -- 從訂單表(起別名o)
      JOIN products p ON o.product_id = p.id     -- 關聯產品表(起別名p)
      WHERE YEAR(o.date) = 2024                  -- 條件是2024年的訂單
      GROUP BY p.id                              -- 按產品分組
      HAVING total_sales > 1000000;              -- 篩選總銷售額大于100萬的產品
      
    4. 執行與反饋: 數據庫運行這個SQL,把結果(產品列表)返回給你。如果SQL寫錯了(比如字段名不對),助手可能會嘗試修正或者告訴你哪里出了問題(需要更好的Prompt或你提供更明確的信息)。
  • LangChain 幫了大忙:
    • 它有個 SQLDatabaseChain 能自動連接到你的數據庫 (db = SQLDatabase.from_uri("sqlite:///sales.db"))。
    • 它能自動讀取數據庫結構(Schema)并塞進給LLM的Prompt里。
    • 你只需要告訴LLM你的問題 (chain.run("2024年銷售額超過100萬的產品是什么?")),它就能幫你完成上述所有步驟(理解->綁定->生成->執行->返回結果)。

二、 Text2API 深入淺出解析 (怎么讓助手幫你調用接口?)

Text2API(文本轉API調用) 是一種將自然語言描述的用戶需求自動轉換為對應用程序接口(API)的調用請求的技術。

在這里插入圖片描述

LangChain提供APIChain,支持將API文檔(如OpenAPI/Swagger)嵌入提示詞,引導大模型生成請求參數,可以支持多步驟調用(如先查詢用戶ID,再調用訂單API)。

from langchain.chains import APIChain
from langchain_community.llms import OpenAIllm = 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。

  3. 參數填充:提取并驗證參數(如郵箱、內容)。

    {"endpoint": "/send_email","params": {"to": "zhangsan@company.com", "subject": "項目進度", "content": "本周完成80%"
    }
    
  4. 執行與反饋:調用API并返回結果(成功/失敗原因)。

在這里插入圖片描述

  • 助手需要什么?
    • 你的指令: “給Allen發郵件,主題是會議提醒,內容為明天下午2點開會。”
    • API菜單: 系統里有哪些接口?每個接口怎么用?需要啥參數?(API文檔)
  • 助手怎么做? (提示工程的步驟)
    1. 管理API目錄: 你需要事先準備好一份清晰的“服務菜單”(API文檔),告訴助手:
      • /send_email 服務(POST方法),需要 to, subject, content 三個菜(參數)。
      • /weather 服務(GET方法),需要 city, date 兩個菜(參數)。
      • 可能還需要權限(比如登錄令牌),但這篇文章例子沒提。
    2. 理解你想點哪道菜 (意圖識別): 助手看你的指令,找出你想做什么。
      • “發郵件” -> 這對應 /send_email 這個API。
    3. 準備好配菜 (參數填充): 助手從你的指令里找出做這道菜需要的材料(參數)。
      • to (收件人) 是誰? -> “Allen” -> 需要轉成郵箱地址(allen@company.com)。(實際應用中,可能需要查通訊錄API,這里簡化了)
      • subject (主題) 是什么? -> “會議提醒”。
      • content (內容) 是什么? -> “明天下午2點開會”。
    4. 下單并上菜 (執行與反饋): 助手按照API文檔的要求(方法、參數格式),調用 /send_email 接口,把參數傳過去。接口執行后,告訴助手結果:“郵件發送成功!” 或者 “失敗,原因:收件人郵箱無效”。助手把這個結果告訴你。
  • LangChain 幫了大忙:
    • 它有個 APIChain (chain = APIChain.from_llm_and_api_docs(llm, api_docs, verbose=True))。
    • 你只需要把API文檔 (api_docs) 提供給它,然后告訴它你的自然語言指令 (chain.run("給Allen發郵件..."))。
    • 它能自動幫你完成:理解指令對應哪個API -> 提取需要的參數 -> 組裝API調用請求 -> 調用API -> 返回結果。它甚至能處理需要多個API按順序調用的復雜任務(比如先查用戶ID,再用ID查訂單)。

總結:

  • LLM (大模型): 一個超級聰明但沒學過你公司業務的新員工。
  • 自然語言問題/指令: 你口頭交代給新員工的任務(“查下今年最賺錢的產品”、“給老王發個會議通知”)。
  • Schema/API文檔: 你給新員工看的公司業務手冊/操作指南(數據庫結構圖、API使用說明書)。
  • Prompt (提示工程): 你交代任務時說的完整、清晰、包含背景信息的話:“小張(角色扮演),這是我們的銷售數據庫結構(知識注入),你幫我查一下(任務類型)…(具體任務描述)”。
  • SQL/API調用: 新員工看完手冊,理解了你的話之后,親手寫好的查詢語句/填好的系統操作單
  • 結果: 新員工把查詢結果/操作結果匯報給你。

提示工程的核心價值就在于: 通過精心設計的Prompt(包含角色定義和領域知識),讓原本“不懂行”的大模型助手,瞬間變成你業務領域的專家,準確地將你的“人話”需求轉化為可執行的“機器指令”(SQL或API調用)。LangChain等工具則大大簡化了這個過程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84843.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84843.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84843.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JDK 8u231安裝教程 - Windows 64位下載安裝及環境變量配置指南

下載安裝包 把jdk-8u231-windows-x64.exe這個文件下載下來,下載鏈接:https://pan.quark.cn/s/a610ca7e5e9d,隨便放哪兒,比如桌面或者下載文件夾。 雙擊運行安裝 找到下載好的那個exe文件,直接雙擊打開。可能會彈個窗口…

LatentSync V8版 - 音頻驅動視頻生成數字人說話視頻 更新V1.6版模型 支持50系顯卡 支持批量 一鍵整合包下載

LatentSync 是字節跳動開源的一款"AI口型同步神器",簡單來說就是能讓視頻里的人物嘴巴動得和聲音完美匹配的工具。比如你給一段配音,它能自動調整視頻人物的嘴型,按照配音里的聲音說出來,就像真人說話一樣自然。簡單說就…

從一組線段中得出四邊形的算法

原始的需求是使用OpenCV的直線檢測算法(例如LSD)之后,得到一組線段。然后需要從這些線段得到類似矩形的四邊形,用于檢測經過透視變換的矩形物體。這些線段不一定首尾相接,彼此之間可能相交或有一定距離。 以下是需求圖…

提示詞Prompts(2)

摘要: 本文介紹了langchain.prompts中基礎的提示詞模板的高級用法,包括利用PipelinePrompt組合Prompt使用,多模態場景、動態占位符的使用等進行了介紹。 文章目錄 1. 背景2. PipelinePrompt2.1 組合兩個Prompt模板2.2 多模態模板 3. 聊天提示…

服務器代碼知識點補充

目錄 UdpServer: 觀察者模式: remove_if算法 管道補充: 文件的標準輸出 ,標準輸入,標準錯誤 UdpServer: 數據接收模塊關心Adduser 和Deleuser 兩個模塊 線程池關心Route模塊 將這三個方法注冊進服務器 ,但是有臨界區問題(線程池與數據接受模塊可能同時訪問用戶管理模塊,所…

R語言緩釋制劑QBD解決方案之二

藥物層優化研究 在藥物層工藝中水溶劑蒸發起到重要的作用。濕的環境會使丸子聚集,而干的環境影響藥物與MCC的粘合。輸入變量如氣流量,噴霧速率,霧化壓力,和產品溫度對MCC沉著和包衣溶劑蒸發的平衡有影響。進行了帶3個中心點的24-…

Html實現圖片上傳/裁剪/馬賽克/壓縮/旋轉/縮放

cropper下載 https://download.csdn.net/download/dongyan3595/90970115 前端代碼 <!doctype html> <html lang"en"> <head><base href"/aishop/"><meta name"viewport" content"widthdevice-width, initial…

springboot項目中整合高德地圖

一&#xff1a;高德開放平臺的使用 高德開放平臺 | 高德地圖API 注冊高德地圖賬號 認證填寫個人信息&#xff1a; 認證方式選擇“個人認證開發者”即可&#xff0c;然后完善信息 認證成功之后&#xff0c;再次進入控制臺&#xff0c;創建關于地圖的應用 創建Key&#xff08;y…

鴻蒙開發-視頻學習及實用中的一些小結

1.extend 和 styles extend是在styles基礎上進行了升級 使用的時候extend是全局的。 styles不加function 局部 加了就是全局。 2.builder 中要引用comp組件 需要在外層嵌套布局 3.ability之間的跳轉 want需要加&#xff1b; 4. as 類型斷言 &#xff01;跟在xxx! 表示…

網盤直鏈解析網頁版

不支持百度網盤、阿里網盤。 123&#xff0c;藍奏云&#xff0c;可道云什么的都可以 源碼下載地址&#xff1a;https://www.123865.com/s/X91lVv-3l90v

AXI4-Stream Clock Converter IP

一、參考說明 1.沒有專門對AXI4-Stream Clock Converter IP說明的文檔&#xff1b; 2.可以參考PG085文檔&#xff1b; 3.可以參考PG035文檔&#xff1b; 二、IP的作用 1.用于stream數據流再不同的時鐘域之間的可靠性傳輸&#xff1b; 2.支持跨時鐘域的場景&#xff1b; 3.內部…

NineData 社區版 V4.2.0 發布!新增MySQL與PostgreSQL互相遷移,SQL管理Milvus,安裝更高效

NineData 社區版 V4.2.0 正式發布&#xff01;本次更新通過鏡像輕量化部署、新增 3 條遷移鏈路、新增支持 Milvus 向量數據庫等核心升級&#xff0c;輕松實現數據庫遷移容災、實時數據集成分析、AI 向量數據管理等場景需求。社區版支持本地離線部署&#xff0c;嚴格保障數據隱私…

如何安裝使用qmt腳本跟單聚寬策略

登錄知識星球&#xff0c;下載獲取 解壓后&#xff0c;登錄大qmt&#xff0c;將策略導入其中&#xff0c; 然后修改參數&#xff1a; 點擊免密改參 totalcash&#xff1a;該策略使用資金總量 per&#xff1a;每只股票占比資金額 舉例&#xff0c;當前出信號&#xff0c;每只…

什么是MongoDB

目錄 主要特點 MongoDB概念解析 完整術語列表 MongoDB安裝 MongoDB Shell 安裝MongoDB Shell 數據庫管理 查看數據庫列表 創建數據庫 刪除數據庫 默認數據庫 系統內置數據庫 集合管理 查看集合 創建集合 更新集合名 刪除集合 文檔操作 插入文檔 查詢文檔 …

【Docker基礎】Docker核心概念:容器(Container)與鏡像(Image)的區別與聯系

目錄 引言 1 Docker鏡像&#xff08;Image&#xff09; 1.1 鏡像的定義 1.2 鏡像的特點 1.3 鏡像的創建 1.4 鏡像的結構 1.5 鏡像結構描述 2 Docker容器&#xff08;Container&#xff09; 2.1 容器的定義 2.2 容器的特點 2.3 容器的創建與運行 2.4 容器的生命周期…

從零到一:構建企業級 Vue.js 3 組件庫

前言&#xff1a;為何要構建組件庫&#xff1f; 在現代前端工程化體系中&#xff0c;組件庫已不再是大型團隊的專屬。它是一個團隊設計規范、開發模式和技術沉淀的核心載體。構建一個組件庫&#xff0c;能夠帶來諸多優勢&#xff1a; 提升效率&#xff1a;提供可復用的高質量…

【2025 CVPR-Backbone】Building Vision Models upon Heat Conduction

摘要 利用注意力機制的視覺表示模型在追求大感受野時面臨著巨大的計算開銷。在本研究中&#xff0c;我們通過引入基于物理熱傳導原理的熱傳導算子&#xff08;Heat Conduction Operator, HCO&#xff09;來緩解這一挑戰這么高級咩(⊙o⊙)&#xff01;。HCO將圖像塊視為熱源&am…

Rust編寫Shop管理系統

Rust編寫Shop管理系統 Actix Web 是一個功能強大、實用且速度極快的 Rust Web 框架。編寫Shop管理系統 HelloKeny 首先是先編寫最簡單的例子,類似hello World可以檢查環境 Actix Web 是一個功能強大、實用且速度極快的 Rust Web 框架。 命令 cargo new hellokenycd hell…

安寶特案例丨Vuzix AR智能眼鏡集成專業軟件,助力盧森堡醫院藥房轉型,贏得輝瑞創新獎

在Vuzix M400 AR智能眼鏡的助力下&#xff0c;盧森堡羅伯特舒曼醫院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;憑借在無菌制劑生產流程中引入增強現實技術&#xff08;AR&#xff09;創新項目&#xff0c;榮獲了2024年6月7日由盧森堡醫院藥劑師協會&#xff0…

快速冪算法詳解:從暴力到優雅的數學優化

文章目錄 一、樸素冪運算的問題二、快速冪的數學原理三、快速冪的遞歸實現四、快速冪的迭代實現五、模運算下的快速冪六、快速冪的應用場景七、總結 快速冪是一種高效計算冪運算的算法&#xff0c;能夠將時間復雜度從樸素的 O (n) 降低到 O (log n)。本文將深入探討快速冪的原理…