В этом руководстве мы создадим продвинутый агентский ИИ, используя шаблон проектирования управления, и рассмотрим каждый компонент шаг за шагом. Мы рассматриваем плоскость управления как центрального организатора, который координирует инструменты, управляет правилами безопасности и структурирует цикл рассуждений.
Инициализация компонентов
Мы настроили миниатюрную систему извлечения, определили модульные инструменты и интегрировали уровень агентского рассуждения, который динамически планирует и выполняет действия. В итоге мы наблюдаем, как вся система ведёт себя как дисциплинированный ИИ, способный извлекать знания, оценивать понимание, обновлять профили учащихся и регистрировать все взаимодействия через унифицированную масштабируемую архитектуру.
Установка зависимостей
«`python
import subprocess
import sys
def install_deps():
deps = [‘anthropic’, ‘numpy’, ‘scikit-learn’]
for dep in deps:
subprocess.check_call([sys.executable, ‘-m’, ‘pip’, ‘install’, ‘-q’, dep])
try:
import anthropic
except ImportError:
install_deps()
import anthropic
«`
Класс для поиска знаний
«`python
import json
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from dataclasses import dataclass, asdict
from typing import List, Dict, Any, Optional
from datetime import datetime
@dataclass
class Document:
id: str
content: str
metadata: Dict[str, Any]
embedding: Optional[np.ndarray] = None
class SimpleRAGRetriever:
def init(self):
self.documents = self.initknowledge_base()
def initknowledge_base(self) -> List[Document]:
docs = [
Document(«cs101», «Python basics: Variables store data. Use x=5 for integers, name=’Alice’ for strings. Print with print().», {«topic»: «python», «level»: «beginner»}),
Document(«cs102», «Functions encapsulate reusable code. Define with def funcname(params): and call with funcname(args).», {«topic»: «python», «level»: «intermediate»}),
# …
]
for i, doc in enumerate(docs):
doc.embedding = np.random.rand(128)
doc.embedding[i20:(i+1)20] += 2
return docs
def retrieve(self, query: str, top_k: int = 2) -> List[Document]:
# …
«`
Регистрация инструментов
«`python
class ToolRegistry:
def init(self, retriever: SimpleRAGRetriever):
self.retriever = retriever
self.interaction_log = []
self.userstate = {«level»: «beginner», «topicscovered»: []}
def search_knowledge(self, query: str, filters: Optional[Dict] = None) -> Dict:
# …
def assess_understanding(self, topic: str) -> Dict:
# …
def updatelearnerprofile(self, topic: str, level: str) -> Dict:
# …
def log_interaction(self, event: str, details: Dict) -> Dict:
# …
«`
Плоскость управления
«`python
class ControlPlane:
def init(self, tool_registry: ToolRegistry):
self.tools = tool_registry
self.safety_rules = {
«maxtoolsper_request»: 4,
«allowedtools»: [«searchknowledge», «assess_understanding»,
«updatelearnerprofile», «log_interaction»]
}
self.execution_log = []
def execute(self, plan: Dict[str, Any]) -> Dict[str, Any]:
# …
«`
Агент-наставник
«`python
class TutorAgent:
def init(self, controlplane: ControlPlane, apikey: str):
self.controlplane = controlplane
self.client = anthropic.Anthropic(apikey=apikey)
self.conversation_history = []
def teach(self, student_query: str) -> str:
# …
«`
Запуск демонстрации
«`python
def run_demo():
# …
if name == «main«:
run_demo()
«`
Мы запускаем полную демонстрацию, которая инициализирует все компоненты, обрабатывает примеры запросов учащихся и печатает сводки состояния системы. Мы наблюдаем, как агент выполняет извлечение и регистрацию, в то время как плоскость управления обеспечивает соблюдение правил и отслеживает историю выполнения. В итоге мы получаем чёткое представление о том, как вся архитектура работает вместе в реалистичном цикле обучения.
1. Какие ключевые компоненты включает в себя система агентского ИИ, описанная в статье, и как они взаимодействуют между собой?
Ответ:
Система агентского ИИ включает в себя следующие ключевые компоненты:
* Класс для поиска знаний (SimpleRAGRetriever), который инициализирует базу знаний и извлекает соответствующие документы.
* Регистрацию инструментов (ToolRegistry), которая управляет взаимодействием с инструментами и логированием.
* Плоскость управления (ControlPlane), которая устанавливает правила безопасности и координирует выполнение действий.
* Агента-наставника (TutorAgent), который взаимодействует со студентом и использует инструменты для обучения.
Компоненты взаимодействуют следующим образом: агент-наставник получает запрос от студента, использует плоскость управления для планирования и выполнения действий, а также взаимодействует с регистрацией инструментов для извлечения знаний и обновления профиля учащегося.
2. Какие инструменты и библиотеки используются для создания системы агентского ИИ в статье?
Ответ:
Для создания системы агентского ИИ в статье используются следующие инструменты и библиотеки:
* Python и его стандартные библиотеки (например, subprocess, sys).
* Библиотеки для работы с данными (например, numpy, scikit-learn).
* Библиотеки для работы с документами и метаданными (например, dataclasses, json).
* Библиотеки для работы с косинусным сходством (например, sklearn.metrics.pairwise).
* Библиотеки для работы с API (например, anthropic).
3. Какие функции выполняет класс ToolRegistry в системе агентского ИИ?
Ответ:
Класс ToolRegistry выполняет следующие функции:
* Инициализирует базу знаний.
* Осуществляет поиск знаний по запросу.
* Оценивает понимание учащегося по теме.
* Обновляет профиль учащегося.
* Логирует взаимодействие.
4. Какие правила безопасности устанавливаются в плоскости управления (ControlPlane)?
Ответ:
В плоскости управления устанавливаются следующие правила безопасности:
* Максимальное количество инструментов, которые могут быть использованы в одном запросе (maxtoolsper_request).
* Список разрешённых инструментов (allowed_tools).
Эти правила обеспечивают соблюдение безопасности и структурированность выполнения действий в системе.
5. Какие основные шаги включает в себя инициализация компонентов системы агентского ИИ?
Ответ:
Инициализация компонентов системы агентского ИИ включает в себя следующие основные шаги:
* Установка зависимостей (например, библиотек numpy, scikit-learn).
* Инициализация класса для поиска знаний (SimpleRAGRetriever).
* Регистрация инструментов (ToolRegistry).
* Создание плоскости управления (ControlPlane).
* Создание агента-наставника (TutorAgent).
* Запуск демонстрации, которая инициализирует все компоненты и обрабатывает примеры запросов учащихся.