--- title: LLM Agent for Agricultural Research emoji: 🌾 colorFrom: green colorTo: yellow sdk: gradio sdk_version: "4.0.0" app_file: app.py pinned: false --- ## Що було зроблено Цей проєкт реалізує LLM-агента з набором інструментів для роботи з датасетом сільськогосподарських досліджень. Ось що було реалізовано: ### Основні компоненти: 1. **LLM-агент з функціональним викликом (Function Calling)** - Реалізовано клас `AgriculturalAgent` в `llm_agent.py`, який використовує LiteLLM для взаємодії з Groq API - Агент підтримує багатоітераційну обробку запитів з автоматичним викликом функцій - Реалізовано систему управління історією розмови для контекстної обробки запитів 2. **Набір інструментів (Tools/Functions)** - `search_agricultural_documents` - пошук документів за ключовими словами - `get_document_details` - отримання детальної інформації про конкретний документ - `browse_topics` - перегляд документів за темами або випадковий вибір - `get_dataset_info` - отримання інформації про датасет - Всі функції реалізовані в `agent_functions.py` з описом параметрів для LLM 3. **Обробка датасету** - Реалізовано `DatasetHandler` в `dataset_handler.py` для роботи з датасетом CGIAR - Підтримка streaming-режиму для ефективної роботи з великим датасетом (45,232 документів) - Реалізовано пошук за ключовими словами в заголовках, анотаціях та ключових словах - Обробка помилок та обмеження часу виконання пошуку 4. **Веб-інтерфейс** - Створено інтерфейс на базі Gradio (`app.py`) - Поле для введення API ключа (без зберігання в коді) - Чат-інтерфейс для взаємодії з агентом - Інформаційні блоки з описом можливостей та прикладами використання 5. **Інтеграція з LLM** - Використання LiteLLM для уніфікованої роботи з різними LLM провайдерами - Налаштування системних промптів для спеціалізації агента на сільськогосподарській тематиці - Автоматичне визначення необхідності виклику функцій на основі запиту користувача ### Технічні особливості: - **Streaming режим**: Датасет завантажується в режимі streaming для швидшого старту та економії пам'яті - **Обробка помилок**: Реалізовано обробку помилок на всіх рівнях (завантаження датасету, пошук, виклики LLM) - **Обмеження пошуку**: Для streaming-режиму встановлено обмеження на кількість перевірених документів (300) для швидкої відповіді - **Багатоітераційна обробка**: Агент може виконувати кілька викликів функцій підряд для повної відповіді на запит - **Захист від циклів**: Реалізовано захист від нескінченних циклів при однакових викликах функцій ### Відмінності від запропонованого варіанту: Замість агента для прийняття іспиту з курсу NLP, було обрано реалізацію агента для роботи з датасетом сільськогосподарських досліджень, що дозволяє продемонструвати: - Роботу з реальним великим датасетом - Пошук та фільтрацію інформації - Структуровану роботу з документами - Практичне застосування LLM-агентів для інформаційного пошуку ## Acknowledgments - Dataset: [CGIAR/gardian-ai-ready-docs](https://huggingface.co/datasets/CGIAR/gardian-ai-ready-docs)