Лабораторная работа 2
"Подключение бота к данным"
Описание
В этой лабораторной работе вы научитесь интегрировать вашего бота с реальными данными - файлами, API, базами данных. Это сделает бота гораздо полезнее!
Цель работы
Научиться подключать бота к внешним источникам данных и работать с ними через LLM-генерацию кода.
Правила по оформлению
Правила по оформлению отчета по лабораторной работе вы можете изучить по ссылке.
Ход работы
Шаг 1: Выбор типа интеграции
Выберите один из вариантов (или несколько):
1. Работа с файлами - Чтение данных из CSV/Excel - Поиск и фильтрация информации - Форматирование ответов на основе данных - Пример: "Покажи всех сотрудников из отдела X"
2. Интеграция с публичным API - Подключение к бесплатному API - Получение актуальных данных - Форматирование и отображение - Примеры API: - Погода: Open-Meteo - Курсы валют: exchangerate.host - Новости: NewsAPI - Криптовалюты: CoinGecko
3. Простая база данных - Хранение данных пользователей - История сообщений - Поиск по сохраненным данным - Пример: "Покажи мои задачи за последнюю неделю"
Шаг 2: Подготовка данных
Для работы с файлами:
- Создайте CSV файл с тестовыми данными
- Пример структуры:
name,department,role,email
Иван Иванов,IT,Developer,ivan@company.com
Мария Петрова,HR,Manager,maria@company.com
Для работы с API:
- Выберите подходящий API
- Изучите документацию
- Протестируйте запросы в браузере/Postman
Для работы с БД:
- Используйте SQLite (встроенная в Python)
- Создайте простую структуру таблиц
Шаг 3: Составление промпта для LLM
Откройте Cursor или выберите LLM и составьте промпт:
Улучши моего Telegram-бота, добавив работу с [тип данных].
Текущий функционал бота:
[Опишите что уже умеет бот]
Новый функционал:
- [Что нужно добавить]
- [Как работать с данными]
- [Какие команды добавить]
Данные:
[Опишите структуру данных или дайте ссылку на API]
Требования:
- Код должен быть простым и понятным
- Добавить обработку ошибок
- Хорошие комментарии в коде
- Сохранить существующий функционал
Создай:
1. Обновленный bot.py
2. Файл с данными (если нужно)
3. Обновленный README.md
Шаг 4: Генерация кода
- Скопируйте промпт в LLM
- Получите обновленный код
- Сохраните файлы
- Установите новые зависимости (если нужны)
Шаг 5: Тестирование
- Запустите бота:
python bot.py - Протестируйте работу с данными
- Проверьте обработку ошибок
- Запишите демо с примерами использования
Шаг 6: Улучшения (опционально)
- Добавьте кэширование данных
- Улучшите форматирование ответов
- Добавьте валидацию входных данных
Примеры интеграций
Пример 1: Бот с чтением CSV
import csv
import pandas as pd
def load_employees():
df = pd.read_csv('employees.csv')
return df
def search_employee(name):
df = load_employees()
result = df[df['name'].str.contains(name, case=False)]
return result.to_string(index=False)
Пример 2: Бот с API погоды
import requests
def get_weather(city):
url = f"https://api.open-meteo.com/v1/forecast"
params = {
'latitude': 59.9311, # Санкт-Петербург
'longitude': 30.3609,
'current': 'temperature_2m,weather_code',
'timezone': 'Europe/Moscow'
}
response = requests.get(url, params=params)
data = response.json()
temp = data['current']['temperature_2m']
return f"Температура в {city}: {temp}°C"
Пример 3: Бот с SQLite
import sqlite3
def init_db():
conn = sqlite3.connect('bot.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
task TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
conn.commit()
conn.close()
def add_task(user_id, task):
conn = sqlite3.connect('bot.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO tasks (user_id, task) VALUES (?, ?)',
(user_id, task))
conn.commit()
conn.close()
Результаты лабораторной работы
В результате данной работы у вас должно быть:
- ✅ Бот работает с выбранным источником данных
- ✅ Данные корректно обрабатываются и отображаются
- ✅ Код создан через LLM (промпт сохранен)
- ✅ Видео-демо работы с данными
- ✅ Отчет по лабораторной работе
Критерии оценивания
- Интеграция с данными (40%): Бот успешно работает с выбранным источником
- Качество обработки (30%): Данные корректно парсятся и форматируются
- Обработка ошибок (15%): Бот корректно обрабатывает ошибки
- Промпт-инжиниринг (10%): Качество промпта и итераций
- Отчет и демо (5%): Качество отчета и презентации
Отчет по лабораторной работе
Отчет должен включать:
- Описание интеграции
- Какой источник данных выбрали
- Почему именно этот
-
Структура данных
-
Промпт для LLM
- Исходный промпт
- Итерации (если были)
-
Финальный промпт
-
Реализация
- Как работает интеграция
- Ключевые фрагменты кода
-
Используемые библиотеки
-
Тестирование
- Скриншоты работы
- Примеры запросов и ответов
-
Видео-демо
-
Трудности и решения
- С какими проблемами столкнулись
-
Как их решили
-
Выводы
- Что получилось хорошо
- Что можно улучшить
Полезные ссылки
- Pandas Documentation
- SQLite Python Tutorial
- Requests Library
- Open-Meteo API
- exchangerate.host API
- CoinGecko API
- NewsAPI
Часто задаваемые вопросы
Q: Какой вариант самый простой?
A: Работа с CSV файлами - не требует внешних сервисов и API ключей.
Q: Нужно ли платить за API?
A: Нет, все предложенные API имеют бесплатный тариф для разработки.
Q: Что если API не работает?
A: Используйте другой API или переключитесь на работу с файлами/БД.
Q: Какой размер данных можно хранить в SQLite?
A: До нескольких GB - для бота этого более чем достаточно.
Q: Можно ли использовать несколько источников данных?
A: Да! Это даже приветствуется и даст дополнительные баллы.