Создание легкого многофункционального 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