Модели больших языков (LLM) в настоящее время занимают центральное место в сфере искусственного интеллекта. Универсальность, которую они предлагают при разработке приложений, не имеет себе равных.

Один интригующий вариант использования? Создание личного помощника для анализа данных. В этом руководстве мы рассмотрим, как создать приложение, которое позволит вам загрузить CSV-файл и узнать о его содержимом, используя повседневный язык. Давайте погрузимся!

Начало работы с зависимостями

Настройка Poetry
Poetry — это наш инструмент для управления зависимостями проекта. Он позволяет вам легко устанавливать, удалять и упаковывать зависимости! Если он еще не установлен в вашей системе, просто обратитесь к официальной документации по установке.

Интеграция необходимых библиотек
После установки Poetry вам сначала необходимо запустить ее в репозитории. При этом для вашего проекта будет создан файл .toml, в котором позже появятся ваши зависимости.

Вы можете сделать это:

poetry init

включить необходимые библиотеки с помощью:

poetry add openai pandas streamlit langchain python-dotenv tabulate

Конфигурация API-ключа

Чтобы взаимодействовать с API OpenAI, сначала зарегистрируйте учетную запись на их платформе. После регистрации перейдите в свой профиль пользователя и сгенерируйте новый ключ API в настройках учетной записи.
В целях безопасности сохраните свой OPENAI_API_KEY в файле .env и извлекайте его из своего приложения.
⚠️ Важно: если вы планируете поместить свой проект в репозиторий, обязательно добавьте файл `.env` в `.gitignore`, чтобы сохранить конфиденциальность вашего ключа API.

from dotenv import load_dotenv, find_dotenv
import os
_ = load_dotenv(find_dotenv())
if not os.environ.get('OPENAI_API_KEY'):
 raise ValueError("Ensure your API key is set!")

Обзор LangChain

Что отличает LangChain? Это дает разработчикам возможность использовать возможности LLM.

LangChain — это мощная библиотека, предназначенная для взаимодействия пользователей с LLM. Сочетая цепочки подсказок, он позволяет создавать приложения, которые:

  • учет данных: соединение LLM с другими источниками данных, такими как API, наборы данных и многое другое;
  • агентный: позволяет языковой модели взаимодействовать со своей средой, выполняя, например, манипулирование данными для достижения определенного результата.

В нашем проекте мы будем использовать абстракцию Агента. Агенты используют языковые модели как когнитивный механизм, определяющий последовательность и характер действий. Они функционируют в циклическом режиме на протяжении четырех этапов, пока не находят решение:

  • Мысль: сформулируйте цель.
  • Действие/Ввод. Выполнение действия, соответствующего цели. В нашем сценарии оно включает манипулирование данными через Pandas для получения ответа.
  • Наблюдение. Оцените результат и повторите цикл, если он окажется неудовлетворительным.

Вы можете взаимодействовать со своим агентом следующим образом:

from langchain.agents import create_pandas_dataframe_agent
from langchain.llms import OpenAI
pd_agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True)
pd_agent.run("YOUR DATA QUERY")

Здесь мы используем возможности LangChain для импорта внешнего источника данных (файла .csv) в среду LLM, делая его доступным в качестве источника информации.

Если вы выполните этот код, вы заметите циклические фазы, которые мы описали ранее.

Создание пользовательского интерфейса с помощью Streamlit

Бесшовный интерфейс является решающим фактором в улучшении пользовательского опыта любого программного приложения. Streamlit — это библиотека Python, специально разработанная для создания интерактивных веб-приложений, управляемых данными, с минимальными усилиями.

В основном мы будем использовать следующие компоненты:

  • file_uploader: позволяет пользователю вводить свой CSV-файл для анализа;
  • input_text: позволяет пользователю ввести вопрос;
  • write: позволяет системе показывать вывод пользователю;

Вот снимок того, как будет выглядеть наш app.py:

import streamlit as st
import pandas as pd
from langchain.agents import create_pandas_dataframe_agent
from langchain.llms import OpenAI
from dotenv import load_dotenv, find_dotenv
import os
_ = load_dotenv(find_dotenv())
if not os.environ.get('OPENAI_API_KEY'):
 st.error("Add OPENAI_API_KEY to your .env file")
 st.stop()
openai.api_key = os.environ['OPENAI_API_KEY']
# Launching the application
st.title('Your AI-Powered Data Analyst')
uploaded_file = st.file_uploader("Upload your CSV")
if uploaded_file:
 df = pd.read_csv(uploaded_file)
 st.write("Preview of your dataset:")
 st.write(df.head(2))
st.write("Pose your query:")
 question = st.text_input("Query:")
 if question:
 pd_agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True)
 with st.spinner('Crunching the numbers…'):
 response = pd_agent.run(question)
 st.write(response)

Автоматизация с помощью Makefile

Что такое Makefile? Это схема, в которой подробно описана последовательность инструкций по компиляции и созданию проектов программного обеспечения.

Makefile — это текстовый файл, используемый при разработке программного обеспечения для определения набора инструкций, называемых правилами, которые описывают, как программа или набор файлов должны быть построены, скомпилированы и связаны. Цель Makefile — автоматизировать процесс компиляции и сборки программных проектов путем указания зависимостей и команд, необходимых для создания окончательного исполняемого файла или вывода.

Это действительно помогает суммировать команды и избавляет от необходимости снова и снова запоминать большие команды.

Вот базовый Makefile для нашего приложения:

run:
 poetry install & poetry run streamlit run app.py

Чтобы начать работу, просто введите make run в своем терминале и увидите, как происходит волшебство!

Слава! 🚀 Теперь вы разработали приложение, использующее возможности больших языковых моделей. Весь код этого приложения доступен на Github.

Нажмите кнопку «Подписаться», чтобы быть в курсе будущих исследований! 🔥🤖 Давайте продолжим путешествие по программированию, машинному обучению и MLOps.