Skip to content

Лабораторная работа 2

"Подключение бота к данным"

Описание

В этой лабораторной работе вы научитесь интегрировать вашего бота с реальными данными - файлами, API, базами данных. Это сделает бота гораздо полезнее!

Цель работы

Научиться подключать бота к внешним источникам данных и работать с ними через LLM-генерацию кода.

Правила по оформлению

Правила по оформлению отчета по лабораторной работе вы можете изучить по ссылке.

Ход работы

Шаг 1: Выбор типа интеграции

Выберите один из вариантов (или несколько):

1. Работа с файлами - Чтение данных из CSV/Excel - Поиск и фильтрация информации - Форматирование ответов на основе данных - Пример: "Покажи всех сотрудников из отдела X"

2. Интеграция с публичным API - Подключение к бесплатному API - Получение актуальных данных - Форматирование и отображение - Примеры API: - Погода: Open-Meteo - Курсы валют: exchangerate.host - Новости: NewsAPI - Криптовалюты: CoinGecko

3. Простая база данных - Хранение данных пользователей - История сообщений - Поиск по сохраненным данным - Пример: "Покажи мои задачи за последнюю неделю"

Шаг 2: Подготовка данных

Для работы с файлами:

  1. Создайте CSV файл с тестовыми данными
  2. Пример структуры:
name,department,role,email
Иван Иванов,IT,Developer,ivan@company.com
Мария Петрова,HR,Manager,maria@company.com

Для работы с API:

  1. Выберите подходящий API
  2. Изучите документацию
  3. Протестируйте запросы в браузере/Postman

Для работы с БД:

  1. Используйте SQLite (встроенная в Python)
  2. Создайте простую структуру таблиц

Шаг 3: Составление промпта для LLM

Откройте Cursor или выберите LLM и составьте промпт:

Улучши моего Telegram-бота, добавив работу с [тип данных].

Текущий функционал бота:
[Опишите что уже умеет бот]

Новый функционал:
- [Что нужно добавить]
- [Как работать с данными]
- [Какие команды добавить]

Данные:
[Опишите структуру данных или дайте ссылку на API]

Требования:
- Код должен быть простым и понятным
- Добавить обработку ошибок
- Хорошие комментарии в коде
- Сохранить существующий функционал

Создай:

1. Обновленный bot.py
2. Файл с данными (если нужно)
3. Обновленный README.md

Шаг 4: Генерация кода

  1. Скопируйте промпт в LLM
  2. Получите обновленный код
  3. Сохраните файлы
  4. Установите новые зависимости (если нужны)

Шаг 5: Тестирование

  1. Запустите бота: python bot.py
  2. Протестируйте работу с данными
  3. Проверьте обработку ошибок
  4. Запишите демо с примерами использования

Шаг 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%): Качество отчета и презентации

Отчет по лабораторной работе

Отчет должен включать:

  1. Описание интеграции
  2. Какой источник данных выбрали
  3. Почему именно этот
  4. Структура данных

  5. Промпт для LLM

  6. Исходный промпт
  7. Итерации (если были)
  8. Финальный промпт

  9. Реализация

  10. Как работает интеграция
  11. Ключевые фрагменты кода
  12. Используемые библиотеки

  13. Тестирование

  14. Скриншоты работы
  15. Примеры запросов и ответов
  16. Видео-демо

  17. Трудности и решения

  18. С какими проблемами столкнулись
  19. Как их решили

  20. Выводы

  21. Что получилось хорошо
  22. Что можно улучшить

Полезные ссылки

Часто задаваемые вопросы

Q: Какой вариант самый простой?
A: Работа с CSV файлами - не требует внешних сервисов и API ключей.

Q: Нужно ли платить за API?
A: Нет, все предложенные API имеют бесплатный тариф для разработки.

Q: Что если API не работает?
A: Используйте другой API или переключитесь на работу с файлами/БД.

Q: Какой размер данных можно хранить в SQLite?
A: До нескольких GB - для бота этого более чем достаточно.

Q: Можно ли использовать несколько источников данных?
A: Да! Это даже приветствуется и даст дополнительные баллы.