Руководство по созданию интеллектуального диалогового агента ИИ с памятью агента с использованием Cognee и бесплатных моделей Hugging Face

В этом руководстве мы рассмотрим создание продвинутого ИИ-агента с памятью агента, используя модели 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. Эти модели позволяют агенту генерировать текстовые ответы на основе входных данных.

Источник