ИИ-агент в когнитивном программировании сознания – объединяем RAG и LLM - страница 8




Если необходимо извлекать конкретные факты, такие как определения или принципы, используйте предобученную модель BERT.


```python


from transformers import BertTokenizer, BertForQuestionAnswering

import torch


# Загрузка модели и токенизатора

tokenizer = BertTokenizer.from_pretrained("bert-large-uncased-whole-word-masking-finetuned-squad")

model = BertForQuestionAnswering.from_pretrained("bert-large-uncased-whole-word-masking-finetuned-squad")


# Пример текста и вопроса

text = "Когнитивное программирование – это подход, направленный на оптимизацию корпоративного мышления."

question = "Что такое когнитивное программирование?"


# Подготовка данных

inputs = tokenizer(question, text, return_tensors="pt")

with torch.no_grad():

outputs = model(**inputs)

answer_start = torch.argmax(outputs.start_logits)

answer_end = torch.argmax(outputs.end_logits) + 1

answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs.input_ids[0][answer_start:answer_end]))

print(answer)


```


Этот метод полезен для поиска точных определений и фактов.


2.1.3 Тонкая настройка модели на доменную область


Пример: Адаптация BERT для работы с данными о когнитивном программировании


Если в базе знаний есть специфичные термины, дообучите модель на основе имеющихся данных.


```python


from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments

from datasets import load_dataset


# Загрузка данных

dataset = load_dataset("csv", data_files={"train": "train.csv", "validation": "validation.csv"})


# Настройка модели

tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")

model = BertForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2)

def tokenize_function(example):

return tokenizer(example["text"], padding="max_length", truncation=True)

tokenized_datasets = dataset.map(tokenize_function, batched=True)


# Обучение модели

training_args = TrainingArguments(

output_dir="./results",

evaluation_strategy="epoch",

learning_rate=2e-5,

per_device_train_batch_size=8,

num_train_epochs=3

)

trainer = Trainer(

model=model,

args=training_args,

train_dataset=tokenized_datasets["train"],

eval_dataset=tokenized_datasets["validation"]

)

trainer.train()


```


После настройки модель сможет давать более точные ответы, учитывая специфику данных.


2.1.4 Оптимизация использования моделей в рамках бюджета


Пример: Использование T5 для задач суммирования и генерации


Если нужно экономить ресурсы, используйте T5 меньшего размера (например, T5-small) для задач, таких как суммирование текста или генерация кратких ответов.


```python


from transformers import T5Tokenizer, T5ForConditionalGeneration


# Загрузка модели

tokenizer = T5Tokenizer.from_pretrained("t5-small")

model = T5ForConditionalGeneration.from_pretrained("t5-small")


# Пример текста для суммирования

text = "Когнитивное программирование позволяет улучшить взаимодействие в командах, внедряя эффективные модели мышления."


# Подготовка данных

input_text = "summarize: " + text

input_ids = tokenizer(input_text, return_tensors="pt").input_ids


# Генерация суммарного текста

outputs = model.generate(input_ids, max_length=50, num_beams=4, early_stopping=True)

summary = tokenizer.decode(outputs[0], skip_special_tokens=True)

print(summary)


```


Этот метод подходит для генерации кратких ответов и экономии вычислительных ресурсов.


2.1.5 Выбор модели в зависимости от длины контекста