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