LLM4Data — это библиотека Python, предназначенная для облегчения применения больших языковых моделей (LLM) и искусственного интеллекта для разработки данных и обнаружения знаний. Он предназначен для того, чтобы дать пользователям и организациям возможность находить данные о разработке и взаимодействовать с ними инновационными способами с помощью естественного языка.
LLM4Data лежит в основе приложения DevData Chat, которое вскоре будет доступно как проект с открытым исходным кодом. Это приложение демонстрирует различные способы, с помощью которых LLM (языковая модель) и искусственный интеллект улучшают обнаружение и взаимодействие с данными и знаниями, предлагая инновационные решения, помогающие устранить пробелы в обнаружении и доступности.
Библиотека LLM4Data содержит коллекцию решений по обнаружению и дополнению данных для различных типов данных, включая документы, индикаторы, микроданные, геопространственные данные и многое другое. Текущая версия библиотеки включает решения для индикаторов WDI. Дополнительные решения будут добавлены в будущих выпусках.
Созданные на основе существующих стандартов и схем метаданных, пользователи и организации могут извлечь выгоду из LLM для улучшения приложений, управляемых данными, обеспечивая обработку естественного языка, генерацию текста и многое другое с помощью LLM4Data. Библиотека служит мостом между LLM и данными разработки с использованием библиотек с открытым исходным кодом, предлагая удобный интерфейс для использования возможностей этих мощных языковых моделей.
Используйте пакет менеджера пакетов для установки LLM4Data.
pip install llm4data
В следующих примерах показано, как использовать LLM4Data для создания URL-адресов API WDI и запросов 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-адрес уже включает коды стран и индикаторы, соответствующие запросу. Он понимает, какие страны являются соседями Филиппин. Он также понимает, какие коды показателей могут предоставить соответствующие данные о ВВП и выбросах CO2.
URL-адрес также включает диапазон дат, формат и источник данных. Затем пользователь может настроить URL-адрес по мере необходимости и использовать его для запроса API WDI.
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 включает интерфейс SQL для данных WDI, позволяющий пользователям запрашивать данные с помощью 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 лицензируется в соответствии с Генеральным лицензионным соглашением сообщества Всемирного банка.