LLM4Data 是一個 Python 函式庫,旨在促進大型語言模型 (LLM) 和人工智慧的應用,以進行開發資料和知識發現。它旨在使用戶和組織能夠透過自然語言以創新方式發現開發數據並與之互動。
LLM4Data 為 DevData Chat 應用程式提供支持,該應用程式很快將作為開源專案提供。該應用程式展示了法學碩士(語言模型)和人工智慧增強數據和知識的發現和互動的各種方式,帶來創新的解決方案來幫助解決可發現性和可訪問性差距。
LLM4Data 庫包含一系列針對各種資料類型的發現和資料增強解決方案,包括文件、指標、微資料、地理空間資料等。該庫的目前版本包含 WDI 指標的解決方案。未來版本將添加更多解決方案。
圍繞現有元資料標準和模式構建,使用者和組織可以從 LLM 中受益,以增強資料驅動的應用程序,透過 LLM4Data 實現自然語言處理、文字生成等。該程式庫充當法學碩士和使用開源程式庫的開發資料之間的橋樑,提供無縫介面來利用這些強大語言模型的功能。
使用套件管理器 pip 安裝 LLM4Data。
pip install llm4data
以下範例示範如何使用 LLM4Data 根據提示產生 WDI API URL 和 SQL 查詢。
可以在此處找到其他範例。
This example uses the OpenAI API. Before you proceed, make sure to set your API keys in the `.env` file. See the [setup instructions](https://worldbank.github.io/llm4data/notebooks/examples/getting-started/openai-api.html) for more details.
from llm4data . prompts . indicators import wdi
# Create a WDI API prompt object
wdi_api = wdi . WDIAPIPrompt ()
# Send a prompt to the LLM to get a WDI API URL relevant to the prompt
response = wdi_api . send_prompt (
"What is the gdp and the co2 emissions of the philippines and its neighbors in the last decade?"
)
# Parse the response to get the WDI API URL
wdi_api_url = wdi_api . parse_response ( response )
print ( wdi_api_url )
輸出將如下所示:
https://api.worldbank.org/v2/country/PHL;IDN;MYS;SGP;THA;VNM/indicator/NY.GDP.MKTP.CD;EN.ATM.CO2E.KT?date=2013:2022&format=json&source=2
請注意,產生的 URL 已包含與提示相關的國家/地區代碼和指示符。它了解哪些國家是菲律賓的鄰國。它還了解哪些指標代碼可能提供 GDP 和二氧化碳排放量的相關數據。
URL 還包括資料的日期範圍、格式和來源。然後,使用者可以根據需要調整 URL,並使用它來查詢 WDI API。
Make sure you have set up your environment first. The example below requires a working database engine, e.g., postgresql. If you want to use SQLite, make sure to update the `.env` file and set the environment variables.
雖然 WDI 資料可以載入到 Pandas 資料幀中,但這樣做並不總是可行;例如,開發可以回答任意資料問題的應用程式。
LLM4Data 庫包含 WDI 資料的 SQL 接口,允許使用者使用 SQL 查詢資料。
此介面將允許使用者使用 SQL 查詢數據,並將結果作為 Pandas 資料框傳回。該介面還允許使用者使用 SQL 查詢數據,並將結果作為 JSON 物件傳回。
import json
from llm4data . prompts . indicators import templates , wdi
from llm4data . llm . indicators import wdi_sql
prompt = "What is the GDP and army spending of the Philippines in 2020?"
sql_data = wdi_sql . WDISQL (). llm2sql_answer ( prompt , as_dict = True )
print ( sql_data )
# # {'sql': "SELECT country, value AS gdp, (SELECT value FROM wdi WHERE country_iso3 = 'PHL' AND indicator = 'MS.MIL.XPND.GD.ZS' AND year = 2020) AS army_spending FROM wdi WHERE country_iso3 = 'PHL' AND indicator = 'NY.GDP.MKTP.CD' AND year = 2020 AND value IS NOT NULL",
# # 'params': {},
# # 'data': {'data': [{'country': 'Philippines',
# # 'gdp': 361751116292.541,
# # 'army_spending': 1.01242392260698}],
# # 'sample': [{'country': 'Philippines',
# # 'gdp': 361751116292.541,
# # 'army_spending': 1.01242392260698}]},
# # 'num_samples': 20}
LLM4Data 函式庫也支援產生 SQL 查詢回應的敘述性解釋。這對於生成資料的自然語言描述非常有用,可用於向使用者提供上下文並解釋資料查詢的結果。
from llm4data . prompts . indicators import templates
# Send the prompt to the LLM for a narrative explanation of the response.
# This is optional and can be skipped.
# Note that we pass only a sample in the `context_data`.
# This could limit the quality of the response.
# This is a limitation of the current version of the LLM which is constrained by the context length and cost.
explainer = templates . IndicatorPrompt ()
description = explainer . send_prompt ( prompt = prompt , context_data = json . dumps ( sql_data [ "data" ][ "sample" ]))
print ( description [ "content" ])
# # Based on the data provided, the GDP of the Philippines in 2020 was approximately 362 billion USD. Meanwhile, the country's army spending in the same year was around 1.01 billion USD. It is worth noting that while army spending is an important aspect of a country's budget, it is not the only factor that contributes to its economic growth and development. Other factors such as infrastructure, education, and healthcare also play a crucial role in shaping a country's economy.
Langchain 是一個很棒的函式庫,它有一個 SQL 資料庫的包裝器,可讓您使用自然語言查詢它們。包裝器稱為SQLDatabaseChain
,可以如下使用:
from langchain import OpenAI , SQLDatabase , SQLDatabaseChain
db = SQLDatabase . from_uri ( "sqlite:///../llm4dev/data/sqldb/wdi.db" )
llm = OpenAI ( temperature = 0 , verbose = True )
db_chain = SQLDatabaseChain . from_llm ( llm , db , verbose = True , return_intermediate_steps = True )
out = db_chain ( "What is the GDP and army spending of the Philippines in 2020?" )
> Entering new SQLDatabaseChain chain...
What is the GDP and army spending of the Philippines in 2020 ?
SQLQuery:SELECT " value " FROM wdi WHERE " name " = ' GDP (current US$) ' AND " country_iso3 " = ' PHL ' AND " year " = 2020
UNION
SELECT " value " FROM wdi WHERE " name " = ' Military expenditure (% of GDP) ' AND " country_iso3 " = ' PHL ' AND " year " = 2020
SQLResult: [(1.01242392260698,), (361751116292.541,)]
Answer:The GDP of the Philippines in 2020 was 1.01242392260698 and the military expenditure (% of GDP) was 361751116292.541.
> Finished chain.
不幸的是,答案The GDP of the Philippines in 2020 was 1.01242392260698 and the military expenditure (% of GDP) was 361751116292.541.
不正確,因為值已交換。
LLM4Data 的目標之一是圍繞現有開源解決方案的限制開發解決方案,應用於開發資料和知識發現。
歡迎請求請求。對於重大更改,請先開啟一個問題來討論您想要更改的內容。
請參閱 CONTRIBUTING.md 以了解更多資訊。
LLM4Data 根據世界銀行主社群許可協議獲得許可。