Модели больших языков (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.