В этом руководстве мы рассмотрим создание продвинутого ИИ-агента с памятью агента, используя модели Cognee и Hugging Face. Мы будем использовать полностью бесплатные инструменты с открытым исходным кодом, которые без проблем работают в Google Colab и других ноутбуках.
Мы настроим Cognee для хранения и извлечения данных, интегрируем облегчённую модель для генерации ответов и объединим всё это в интеллектуального агента, который учится, рассуждает и взаимодействует естественно.
Установка необходимых библиотек
Сначала мы установим все необходимые библиотеки, включая Cognee, Transformers, Torch и Sentence-Transformers. Затем мы импортируем необходимые модули для обработки токенизации, загрузки моделей, асинхронных задач и интеграции памяти.
“`python
import asyncio
import os
import json
from typing import List, Dict, Any
from datetime import datetime
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
import torch
import cognee
“`
Настройка Cognee
Мы настроим Cognee, задав модель встраивания и поставщика для использования all-MiniLM-L6-v2, облегчённой и эффективной модели преобразования предложений.
“`python
async def setup_cognee():
“””Setup Cognee with proper configuration”””
try:
await cognee.config.set(“EMBEDDING_MODEL”, “sentence-transformers/all-MiniLM-L6-v2”)
await cognee.config.set(“EMBEDDINGPROVIDER”, “sentencetransformers”)
print(” Cognee configured successfully”)
return True
except Exception as e:
print(f” Cognee config error: {e}”)
try:
os.environ[“EMBEDDING_MODEL”] = “sentence-transformers/all-MiniLM-L6-v2”
os.environ[“EMBEDDINGPROVIDER”] = “sentencetransformers”
print(” Cognee configured via environment”)
return True
except Exception as e2:
print(f” Alternative config failed: {e2}”)
return False
“`
Определение класса HuggingFaceLLM
Мы определим класс HuggingFaceLLM для обработки генерации текста с использованием облегчённых моделей Hugging Face, таких как DialoGPT или DistilGPT2.
“`python
class HuggingFaceLLM:
def init(self, model_name=”microsoft/DialoGPT-medium”):
print(f” Loading Hugging Face model: {model_name}”)
self.device = “cuda” if torch.cuda.is_available() else “cpu”
print(f” Using device: {self.device}”)
if “DialoGPT” in model_name:
self.tokenizer = AutoTokenizer.frompretrained(modelname, padding_side=’left’)
self.model = AutoModelForCausalLM.frompretrained(modelname)
if self.tokenizer.pad_token is None:
self.tokenizer.padtoken = self.tokenizer.eostoken
else:
self.generator = pipeline(
“text-generation”,
model=”distilgpt2″,
device=0 if self.device == “cuda” else -1,
max_length=150,
do_sample=True,
temperature=0.7
)
self.tokenizer = None
self.model = None
print(” Model loaded successfully!”)
“`
Определение класса AdvancedAIAgent
Мы определим класс AdvancedAIAgent, который объединяет память Cognee, обучение с учётом домена, извлечение знаний и рассуждения на основе Hugging Face.
“`python
class AdvancedAIAgent:
“””
Advanced AI Agent with persistent memory, learning capabilities,
and multi-domain knowledge processing using Cognee
“””
def init(self, agent_name: str = “CogneeAgent”):
self.name = agent_name
self.memory_initialized = False
self.knowledge_domains = []
self.conversation_history = []
self.manual_memory = []
async def initialize_memory(self):
“””Initialize the agent’s memory system and HF model”””
global hf_llm
if hf_llm is None:
hf_llm = HuggingFaceLLM(“microsoft/DialoGPT-medium”)
setupsuccess = await setupcognee()
try:
await cognee.prune()
print(f” {self.name} memory system initialized”)
self.memory_initialized = True
except Exception as e:
print(f” Memory initialization warning: {e}”)
self.memory_initialized = True
“`
Основная функция
“`python
async def main():
print(” Advanced AI Agent with Cognee Tutorial”)
print(“=” * 50)
agent = AdvancedAIAgent(“TutorialAgent”)
await agent.initialize_memory()
print(“\n DEMO 1: Multi-domain Learning”)
sample_documents = [
{
“title”: “Python Basics”,
“content”: “Python is a high-level programming language known for its simplicity and readability.”,
“domain”: “programming”
},
{
“title”: “Climate Science”,
“content”: “Climate change”,
“domain”: “science”
},
{
“title”: “AI Ethics”,
“content”: “AI ethics involves ensuring artificial intelligence systems are developed and deployed responsibly, considering fairness, transparency, accountability, and potential societal impacts.”,
“domain”: “technology”
},
{
“title”: “Sustainable Energy”,
“content”: “Renewable energy sources are crucial for reducing carbon emissions”,
“domain”: “environment”
}
]
await agent.learnfromdocuments(sample_documents)
print(“\n DEMO 2: Knowledge Retrieval & Reasoning”)
test_questions = [
“What do you know about Python programming?”,
“How does climate change relate to energy?”,
“What are the ethical considerations in AI?”
]
for question in test_questions:
print(f”\n Question: {question}”)
analysis = await agent.reasoning_chain(question)
print(f” Answer: {analysis.get(‘answer’, ‘No answer generated’)}”)
print(f” Confidence: {analysis.get(‘confidence’, 0):.2f}”)
print(“\n DEMO 3: Conversational Agent”)
conversation_inputs = [
“Learn this: Machine learning is a subset of AI”,
“What is machine learning?”,
“How does it relate to Python?”,
“Remember that neural networks are inspired by biological neurons”
]
for userinput in conversationinputs:
print(f”\n User: {user_input}”)
response = await agent.conversationalagent(userinput)
print(f” Agent: {response}”)
print(f”\n DEMO 4: Agent Knowledge Summary”)
print(f”Knowledge domains: {agent.knowledge_domains}”)
print(f”Conversation history: {len(agent.conversation_history)} exchanges”)
print(f”\n Domain-specific search:”)
programmingresults = await agent.queryknowledge(“programming concepts”, “programming”)
print(f”Programming knowledge: {len(programming_results)} results found”)
“`
Мы создали полностью функционального ИИ-агента, который может учиться на структурированных данных, вспоминать и рассуждать со хранящимися знаниями, а также вести интеллектуальные диалоги с использованием моделей Hugging Face.
Вопросы по тексту статьи:
1. Какие инструменты и библиотеки используются для создания интеллектуального диалогового агента ИИ с памятью агента?
Ответ:
Для создания интеллектуального диалогового агента ИИ с памятью агента используются модели Cognee и Hugging Face, а также библиотеки Transformers, Torch и Sentence-Transformers.
2. Как в статье описывается процесс настройки Cognee для хранения и извлечения данных?
Ответ:
В статье описывается, что для настройки Cognee необходимо задать модель встраивания и поставщика, используя all-MiniLM-L6-v2, облегчённую и эффективную модель преобразования предложений. Это делается с помощью функции setup_cognee(), которая устанавливает необходимые параметры конфигурации.
3. Какие классы определены в статье для обработки генерации текста и управления памятью агента?
Ответ:
В статье определены два класса: HuggingFaceLLM для обработки генерации текста с использованием облегчённых моделей Hugging Face, таких как DialoGPT или DistilGPT2, и AdvancedAIAgent, который объединяет память Cognee, обучение с учётом домена, извлечение знаний и рассуждения на основе Hugging Face.
4. Какие функции выполняет класс AdvancedAIAgent?
Ответ:
Класс AdvancedAIAgent выполняет несколько функций: инициализацию памяти системы агента, обучение на основе документов, извлечение знаний и рассуждения на основе Hugging Face. Он также управляет историей разговоров и другими параметрами, связанными с работой агента.
5. Какие модели Hugging Face используются в статье для генерации ответов агента?
Ответ:
В статье для генерации ответов агента используются облегчённые модели Hugging Face, такие как DialoGPT или DistilGPT2. Эти модели позволяют агенту генерировать текстовые ответы на основе входных данных.