LLM4Data는 개발 데이터 및 지식 발견을 위한 LLM(대형 언어 모델) 및 인공 지능의 적용을 용이하게 하도록 설계된 Python 라이브러리입니다. 이는 사용자와 조직이 자연어를 통해 혁신적인 방식으로 개발 데이터를 발견하고 상호 작용할 수 있도록 지원하기 위한 것입니다.
LLM4Data는 곧 오픈 소스 프로젝트로 제공될 DevData Chat 애플리케이션을 지원합니다. 이 애플리케이션은 LLM(언어 모델)과 AI가 데이터 및 지식의 검색과 상호 작용을 향상하여 검색 가능성과 접근성 격차를 해결하는 데 도움이 되는 혁신적인 솔루션을 제공하는 다양한 방법을 보여줍니다.
LLM4Data 라이브러리에는 문서, 지표, 마이크로데이터, 지리공간 데이터 등을 포함한 다양한 데이터 유형에 대한 검색 및 데이터 증대 솔루션 컬렉션이 포함되어 있습니다. 현재 버전의 라이브러리에는 WDI 표시기에 대한 솔루션이 포함되어 있습니다. 향후 릴리스에는 추가 솔루션이 추가될 예정입니다.
기존 메타데이터 표준 및 스키마를 기반으로 구축된 사용자와 조직은 LLM의 이점을 활용하여 데이터 기반 애플리케이션을 향상하고 LLM4Data를 통해 자연어 처리, 텍스트 생성 등을 활성화할 수 있습니다. 라이브러리는 오픈 소스 라이브러리를 사용하여 LLM과 개발 데이터 간의 브리지 역할을 하며 이러한 강력한 언어 모델의 기능을 활용할 수 있는 원활한 인터페이스를 제공합니다.
패키지 관리자 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 및 CO2 배출량에 대한 관련 데이터를 제공할 가능성이 있는지도 이해합니다.
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는 World Bank 마스터 커뮤니티 라이선스 계약에 따라 라이선스가 부여됩니다.