<НА ГЛАВНУЮ

Создание легкого многофункционального AI-агента с использованием моделей Hugging Face

Руководство по созданию компактного AI-агента с несколькими NLP-инструментами на базе моделей Hugging Face для задач чата, анализа тональности и вычислений в одном пакете.

Установка окружения и библиотек

В этом руководстве показано, как создать компактного, но мощного AI-агента, объединяющего несколько возможностей обработки естественного языка с помощью трансформеров Hugging Face. Сначала устанавливаем необходимые Python-библиотеки: transformers, torch, accelerate, datasets, requests и beautifulsoup4 для загрузки моделей, инференса и веб-скрапинга в среде Colab.

!pip install transformers torch accelerate datasets requests beautifulsoup4
 
import torch
import json
import requests
from datetime import datetime
from transformers import (
   AutoTokenizer, AutoModelForCausalLM, AutoModelForSequenceClassification,
   AutoModelForQuestionAnswering, pipeline
)
from bs4 import BeautifulSoup
import warnings
warnings.filterwarnings('ignore')

Класс AdvancedAIAgent

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

class AdvancedAIAgent:
   def __init__(self):
       """Инициализация AI-агента с несколькими моделями и функциями"""
       self.device = "cuda" if torch.cuda.is_available() else "cpu"
       print(f" Инициализация AI-агента на {self.device}")
      
       self._load_models()
      
       self.tools = {
           "web_search": self.web_search,
           "calculator": self.calculator,
           "weather": self.get_weather,
           "sentiment": self.analyze_sentiment
       }
      
       print(" AI-агент успешно инициализирован!")
 
   def _load_models(self):
       """Загрузка всех необходимых моделей"""
       print(" Загрузка моделей...")
      
       self.gen_tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium")
       self.gen_model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")
       self.gen_tokenizer.pad_token = self.gen_tokenizer.eos_token
      
       self.sentiment_pipeline = pipeline(
           "sentiment-analysis",
           model="cardiffnlp/twitter-roberta-base-sentiment-latest",
           device=0 if self.device == "cuda" else -1
       )
      
       self.qa_pipeline = pipeline(
           "question-answering",
           model="distilbert-base-cased-distilled-squad",
           device=0 if self.device == "cuda" else -1
       )
      
       print(" Все модели загружены!")

Основные функции и возможности

Агент поддерживает следующие возможности:

  • Генерация текста: создание диалоговых ответов с помощью DialoGPT.
  • Анализ тональности: классификация тональности с использованием RoBERTa.
  • Ответы на вопросы: ответы на вопросы на основе контекста с DistilBERT.
  • Имитированный веб-поиск: возврат заглушек для поисковых запросов.
  • Безопасный калькулятор: вычисление простых арифметических выражений.
  • Моковые данные о погоде: возврат примерных данных о погоде.

Определение намерений позволяет направлять запросы пользователя к нужному инструменту или использовать генерацию текста по умолчанию.

Пример использования

Демонстрация включает несколько тестовых запросов, иллюстрирующих многофункциональность агента:

if __name__ == "__main__":
   agent = AdvancedAIAgent()
  
   print("\n" + "="*50)
   print(" ДЕМО: Возможности продвинутого AI-агента")
   print("="*50)
  
   test_cases = [
       "Calculate 25 * 4 + 10",
       "What's the weather in Tokyo?",
       "Search for latest AI developments",
       "Analyze sentiment of: I love working with AI!",
       "Hello, how are you today?"
   ]
  
   for test in test_cases:
       print(f"\n User: {test}")
       result = agent.process_request(test)
       print(f" Agent: {json.dumps(result, indent=2)}")

Такой подход показывает, как объединить несколько NLP-моделей и инструментов в единый расширяемый AI-агент, эффективно работающий в условиях ограниченных ресурсов, например, в Colab. Модульная конструкция упрощает добавление функций и интеграцию с реальными API, например, для погоды или поиска.

🇬🇧

Switch Language

Read this article in English

Switch to English