В этой главе
• Claude от Anthropic.
• Command R+ от Cohere.
• Bard от Google.
• Модели от Hugging Face.
В предыдущих главах основное внимание мы уделяли GPT и другим моделям OpenAI. Однако это не единственная компания в отрасли. Наоборот, в настоящее время мы являемся свидетелями «кембрийского взрыва» языковых моделей, когда новые модели появляются каждую неделю. Прежде чем использовать модель в производственной среде, стоит убедиться, что она действительно подходит для решения задачи. В этой главе мы рассмотрим множество существующих альтернатив OpenAI и обсудим плюсы и минусы разных моделей, а также способы их использования.
В основе почти всех современных языковых моделей лежит схожая архитектура (архитектура трансформера). Однако модели от разных поставщиков могут различаться по способу обучения, способу представления текста или по тому, как они предлагаются и оцениваются. Все эти факторы могут повлиять на стоимость обработки и качество выходных данных для вашей конкретной задачи. Модели типа GPT-4o мощные и решат почти любую задачу. Но эта универсальность имеет свою цену: если есть небольшая специализированная модель, обученная только для выполнения конкретной задачи, то, возможно, оптимальным выбором станет именно она.
В следующих разделах вы увидите, что многие из моделей доступны через интерфейсы, аналогичные интерфейсу OpenAI. Это хорошая новость: не придется изучать новую и сложную структуру каждый раз при выборе другой модели!
Что делать, если в этой главе не указана ваша любимая модель или поставщик
Если модель не упоминается в главе, это не означает, что она не окажется более подходящей альтернативой для вашей задачи. Ведь количество поставщиков и моделей постоянно растет, поэтому представить полный обзор всех доступных моделей невозможно. Интерфейсы разных поставщиков, как правило, похожи, поэтому вы без особых проблем сможете применять полученные знания при работе с другими моделями. Кроме того, обратите внимание, что в этой главе поставщики моделей перечисляются в алфавитном порядке, а не по степени приоритетности.
Многие произведения Айзека Азимова, одного из величайших фантастов в истории, строятся вокруг «трех законов робототехники» и их интерпретации.
1. Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинен вред.
2. Робот должен повиноваться командам, отдаваемым людьми, за исключением случаев, когда такие команды противоречат Первому закону.
3. Робот должен защищать свое существование до тех пор, пока такая защита не противоречит Первому или Второму законам.
Цель здесь — сформулировать краткий набор правил, гарантирующих, что роботы будут полезными и не причинят вреда. Послужили ли эти законы источником вдохновения или нет, но эта идея связана с языковыми моделями, созданными Anthropic — еще одним поставщиком больших языковых моделей.
Компания Anthropic, основанная в 2021 году (несколькими бывшими сотрудниками OpenAI), неоднократно называла идею «конституционного ИИ» [1] одним из своих отличительных факторов по сравнению с другими моделями. Вкратце, она означает, что, обучая модели давать пользователям точные и безобидные ответы, мы опираемся на небольшой набор правил — условную «конституцию», чтобы оценивать качество ответов. Вместо тестировщиков-людей для разметки ответов, сгенерированных моделью во время обучения, мы используем второй ИИ, которому поручено оценивать ответы первого в соответствии с конституцией.
На момент написания книги самой новой моделью, выпущенной компанией Anthropic, была Claude 3.5 (отсылка к легендарному Клоду Шеннону). В этом разделе мы протестируем Claude, используя (как вы уже догадались) веб-интерфейс и библиотеку для Python.
Мы немного поболтаем с языковой моделью Claude (версии 3.5), чтобы получить представление о ее возможностях. Сначала перейдите на сайт Anthropic по адресу www.anthropic.com и нажмите кнопку Try Claude (Попробовать Claude).
Если у вас еще нет учетной записи Anthropic, то потребуется указать адрес электронной почты и номер телефона. После проверки ваших данных должен отобразиться интерфейс чата Claude (рис. 8.1).

Рис. 8.1. Веб-интерфейс чат-бота Claude компании Anthropic
Интерфейс вполне понятен интуитивно: просто введите текст в соответствующее поле и нажмите кнопку справа, чтобы начать общение. Начните с дружеского приветствия, поговорите о погоде или попробуйте с помощью модели Claude решить несколько задач из главы 2 (например, классифицировать отзывы по тональности или перевести вопросы в SQL-запросы).
После создания учетной записи в Anthropic можно создать ключи, перейдя по ссылке https://console.anthropic.com/settings/keys. Обязательно скопируйте свой ключ доступа после создания (так как к нему нельзя будет получить доступ позже)!
Получив ключ, перейдите в терминал и выполните следующую команду:
pip install anthropic==0.28
Она установит библиотеку Anthropic для Python. Если вы уже знакомы с библиотекой OpenAI для Python (а после прочтения предыдущих глав, полагаю, так и есть), то очень быстро привыкнете к библиотеке Anthropic.
Например, в листинге 8.1 показан код на языке Python для ответа на вопросы с помощью языковой модели Claude. Конечно, этот код не делает ничего такого, чего нельзя сделать через веб-интерфейс. Код приведен просто для того, чтобы показать, насколько легко использовать Claude через Python-интерфейс.
Листинг 8.1. Использование модели Claude от Anthropic для ответов на вопросы
import argparse
from anthropic import Anthropic
if __name__ == '__main__':
parser = argparse.ArgumentParser() ❶ 
parser.add_argument('ai_key', type=str, help='Ключ доступа к Anthropic')
parser.add_argument('question', type=str, help='Вопрос для Claude')
args = parser.parse_args()
anthropic = Anthropic(api_key=args.ai_key) ❷ 
completion = anthropic.messages.create( ❸ 
model='claude-3-5-sonnet-20241022',
max_tokens=100,
messages=[
{
'role':'user',
'content':args.question
}])
print(completion.content) ❹ 
В качестве параметров ❶ мы используем ключ доступа Anthropic и вопрос, на который хотим получить ответ. Как и с библиотеками OpenAI, доступ настраивается с помощью ключа ❷. После этого можно создавать промпты, на которые модель Claude будет генерировать ответы ❸.
Используя эндпоинт Anthropic — anthropic.messages, мы указываем идентификатор модели, которую следует использовать (claude-3-5-sonnet-20241022 — на момент написания книги эта модель была самой новой), и максимальное количество токенов для генерации ответа (используя параметр max_tokens). Как и чат-модели OpenAI, Claude предназначена для общения с пользователем. Поэтому входные данные для модели Claude представляют собой список сообщений (в этом конкретном сценарии в списке только один элемент). Результат выполнения промпта моделью Claude содержится в поле content (его мы и выводим ❹).
Код из листинга 8.1 доступен по ссылке Anthropic, размещенной на сайте книги в разделе дополнительных материалов к этой главе. Для запуска кода откройте терминал и перейдите в папку, где он хранится. Затем выполните следующую команду:
python anthropic_claude.py ... "Что такое конституционный AI?"
Вместо многоточия укажите свой ключ доступа Anthropic. При выполнении программы должен отобразиться ответ на ваш вопрос, сгенерированный моделью Anthropic.
В главе 2 мы коротко обсудили галлюцинации. По сути, галлюцинация возникает, когда языковая модель выдумывают что-то из-за отсутствия доступа к данным, которые актуальны для поставленной задачи. Канадский стартап Cohere уделяет особое внимание предотвращению подобных галлюцинаций с помощью метода контекстуального обоснования (grounding). Обоснование ответа языковой модели означает его привязку к реальным данным, что снижает шансы на «творческий вывод», не основанный на реальной информации.
Cohere предлагает широкий выбор коннекторов для доступа своих моделей к внешним источникам данных. Например, поддерживается веб-поиск, а также доступ к различным базам данных. На внутреннем уровне Cohere обращается к этим источникам данных и предоставляет языковой модели информацию, адаптированную под конкретный запрос. И что самое удобное, Cohere показывает все источники данных, использованные для генерации ответа. Если вы подозрительны (а к ответам языковых моделей вообще стоит относиться с недоверием), то можете проверить ссылки и убедиться, что они подтверждают сгенерированный ответ.
Посмотрим, как все это работает на практике. Пора пообщаться с моделью Command R+ от Cohere!
На момент написания книги Command R+ была одной из новейших моделей Cohere. Как обычно, ее работу можно протестировать через веб-интерфейс, а для обработки больших объемов данных использовать Python. Сначала протестируем веб-интерфейс. Для этого перейдите на сайт https://cohere.com/ и нажмите кнопку Try Now (Попробовать). После регистрации учетной записи перейдите на вкладку Playground (Песочница). Должен отобразиться веб-интерфейс (рис. 8.2).

Рис. 8.2. Веб-интерфейс для общения с языковой моделью Cohere Command R+
На рис. 8.2 показаны поле для ввода промпта и кнопка для генерации ответа. А что за окно справа? Здесь указываются коннекторы, которые будут использоваться при генерации ответов. Коннектор позволяет Cohere получать доступ к внешним источникам данных. Веб-коннектор можно активировать (или деактивировать) с помощью соответствующего переключателя. Этот коннектор позволяет модели Cohere выполнять запросы в Интернете, как делаем все мы, когда пытаемся ответить на сложный вопрос, требующий фактических знаний. Попробуйте и посмотрите, как меняются ответы на фактологические вопросы при активации или деактивации веб-коннектора.
Что такое RAG
Полагаю, вы заметили, что на сайте Cohere активно рекламируют RAG, но что это такое? RAG расшифровывается как Retrieval Augmented Generation — генерация ответа, дополненная результатами поиска. Это означает, что при генерации ответа входные данные для языковой модели дополняются информацией, извлеченной из внешнего источника.
Cohere предлагает библиотеку для Python, аналогичную описанным в предыдущих разделах. Введите в терминале следующую команду для установки необходимой библиотеки:
pip install cohere==4.43
В листинге 8.2 содержится код простого интерфейса вопросов и ответов (файл с кодом доступен по ссылке Cohere, размещенной на сайте книги в разделе дополнительных материалов к этой главе).
Листинг 8.2. Использование библиотеки для ответов на вопросы
import argparse
import cohere
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('ai_key', type=str, help='Ключ доступа к Cohere')
parser.add_argument('question', type=str, help='Ответьте на этот вопрос')
args = parser.parse_args()
client = cohere.Client(args.ai_key) ❶ 
❷ 
prompt = f'Ответьте на этот вопрос: {args.question}'
result = client.chat(prompt, connectors=[{'id': 'web-search'}])
❸ 
print(f'Ответ: result.text')
print(f'Поисковые запросы: result.search_results')
print(f'Результаты веб-поиска: result.documents')
Пользователи вводят в командной строке свой ключ доступа и вопрос. Для получения ключа перейдите по ссылке https://dashboard.cohere.com/api-keys. После настройки библиотеки Cohere с ключом доступа ❶ генерируется ответ с помощью библиотеки Cohere ❷. Обратите внимание на обращение к коннекторам (connectors) в вызове функции chat. Здесь указывается список коннекторов, которые позволяют модели Cohere получать доступ к данным из внешних источников. Коннекторы указываются в виде списка (то есть можно разрешить доступ не к одному, а к нескольким). В данном случае используется коннектор с идентификатором web-search (этот же коннектор для веб-поиска применялся через веб-интерфейс в предыдущем подразделе).
Наконец ❸, программа выводит ответ модели и список веб-источников, к которым она обращалась для генерации ответа (вместе с запросами, выполненными для получения указанных документов). Это позволяет нам проверить, действительно ли сгенерированный ответ подтверждается исходными материалами.
Теперь опробуем этот код. Перейдите в папку с ним и выполните в терминале следующую команду (вместо многоточия укажите свой ключ доступа Cohere):
python cohereqa.py ... "Где родился Стив Джобс?"
Вы получите примерно такой ответ (он немного сокращен):
❶ 
Ответ: Стивен Пол Джобс родился в городе Сан-Франциско, штат Калифорния, в Соединенных Штатах.
Данное ему при рождении имя было изменено на Стив Джобс после того, как его усыновили Пол и Клара Джобс.
Джобс родился у Абдулфаттаха Джандали и Джоан Шибл 24 февраля 1955 года.
После того как его отдали на усыновление, Джобса забрали Пол и Клара Джобс, супружеская пара со скромным достатком.
Поисковые запросы: [ ❷ 
{'search_query':
{'text': 'Где родился Стив Джобс,
'generation_id': '...'},
'document_ids': [
'web-search_1:0', 'web-search_3:1', 'web-search_4:0',
'web-search_5:0', 'web-search_9:1'],
'connector': {'id': 'web-search'}
}]
Результаты веб-поиска: [ ❸ 
{'id': 'web-search_4:0', 'snippet': 'Краткая биография Стива Джобса
История Стива Джобса от рождения до смерти – и не только. Стивен
Пол Джобс родился 24 февраля 1955 года в Сан-Франциско, штат Калифорния.
... ', 'title': 'Краткая биография | all about Steve Jobs.com',
'url': 'https://allaboutstevejobs.com/bio/short_bio'},
...]
Рассмотрим вывод подробнее. Начальная его часть ❶ представляет собой ответ, сгенерированный моделью. Он выглядит правдоподобно, но можно ли ему доверять? Здесь на помощь приходят оставшиеся части вывода. Средняя ❷ предоставляет информацию о веб-запросах, использованных Cohere для формирования сгенерированного ответа. Они выбираются автоматически на основе входного вопроса. В данном случае веб-запросы точно соответствуют входному вопросу (для более длинного входного текста это не обязательно). В конце вывода ❸ представлены текстовые фрагменты и URL документов, полученных с помощью предыдущих запросов. В данном случае текстовые фрагменты, взятые из веб-документов (например, «Стивен Пол Джобс родился 24 февраля 1955 года в городе Сан-Франциско, штат Калифорния»), подтверждают ответ модели.
Корпорацию Google представлять не нужно. Она активно занимается разработкой языковых моделей с самого начала их развития. Фактически архитектура «трансформер» [2], используемая практически всеми языковыми моделями, была изобретена (в основном) исследователями Google. Неудивительно, что корпорация разрабатывает собственные модели. На момент написания книги одной из последних моделей Google была Gemini, и мы протестируем ее в этом разделе.
Чтобы попробовать поработать с моделью Gemini, перейдите по адресу https://gemini.google.com/. После регистрации учетной записи появится интерфейс (рис. 8.3).

Рис. 8.3. Веб-интерфейс для общения с моделью Gemini от Google. Нажмите Settings (Настройки), чтобы активизировать дополнительные функции
Просто введите текст в соответствующее поле ввода (на рис. 8.3 обозначено как «Поле ввода промпта») и нажмите клавишу Enter для генерации ответа. Модель Gemini не ограничивается текстовым вводом. Нажмите кнопку справа, чтобы загрузить изображения. В чатах с Gemini можно ссылаться на эти изображения и задавать вопросы о них.
Особенностью Gemini, которая отличает ее от всех других моделей, которые мы обсуждали до сих пор, является ее интеграция с другими инструментами Google. Нажмите кнопку Settings (Настройки) (отмечена на рис. 8.3), а затем выберите вариант Extensions (Подключенные приложения). Например, можно предоставить Gemini доступ к вашим электронным письмам, нажав соответствующую кнопку. Когда-нибудь сталкивались с проблемой поиска информации в письмах годичной давности в ящике электронной почты? Языковая модель Google Gemini может помочь с этим.
Как и другие поставщики языковых моделей, корпорация Google предлагает для доступа к модели Python-библиотеку. Ее можно установить, введя в терминале следующую команду:
pip install google-generativeai==0.7
Перейдите по адресу https://aistudio.google.com/app/apikey, чтобы получить ключ доступа к API Google. Следуйте инструкциям и скопируйте ключ после его создания. В листинге 8.3 показано, как использовать модель Gemini в Python для ответа на вопросы.
Листинг 8.3. Ответы на вопросы с использованием модели Gemini от Google
import argparse
import google.generativeai as genai
if __name__ == '__main__':
❶ 
parser = argparse.ArgumentParser()
parser.add_argument('api_key', type=str, help='Ключ Google API')
parser.add_argument('question', type=str, help='Вопрос, на который нужно ответить')
args = parser.parse_args()
❷ 
genai.configure(api_key=args.api_key)
❸ 
model = genai.GenerativeModel('gemini-1.5-flash')
reply = model.generate_content(args.question)
❹ 
print(reply.text)
Действия аналогичны тем, которые мы выполняли при работе с предыдущими библиотеками. Входные параметры ❶ содержат ключ доступа (как вариант, его можно сохранить в переменной окружения), а также вопрос, на который модель должна дать ответ. Далее мы настраиваем библиотеку Google с помощью ключа доступа ❷. Теперь можно создать модель и использовать ее для ответа на вопросы, применив метод generate_content ❸. Наконец, программа выводит сгенерированный ответ ❹.
Код из листинга 8.3 доступен по ссылке Google, размещенной на сайте книги, в разделе дополнительных материалов к этой главе. В терминале перейдите в каталог, содержащий код. Например, чтобы протестировать модель Gemini, выполните следующую команду (замените многоточие своим ключом доступа Google):
python google.py ... "В чем смысл жизни?"
Полный обзор библиотеки Google выходит за рамки этой книги. Однако, имея опыт работы с библиотеками других поставщиков больших языковых моделей, вы сможете быстро освоить и этот API.
Поставщики наподобие OpenAI инвестируют миллионы долларов в обучение таких моделей, как GPT-4o. Результатом дорогостоящего обучения являются значения параметров модели, которые обеспечивают ее более высокую производительность. Вложив немалые средства, вы, естественно, не захотите бесплатно делиться результатами обучения, не так ли? Следовательно, модели вроде GPT-4o обычно являются закрытыми, то есть компания OpenAI не сообщает значения параметров, полученные в результате обучения (обратите внимание, что к другим моделям, например Whisper, компания OpenAI дает общий доступ). Вместо этого OpenAI обрабатывает ваши промпты, используя собственную инфраструктуру, и берет плату за обработку (так мы в конечном счете оплачиваем дорогостоящее обучение моделей).
Однако языковые модели все чаще сталкиваются с конкуренцией со стороны чрезвычайно активного сообщества разработчиков открытого исходного кода. Университеты, стартапы и энтузиасты обучают собственные модели и часто публикуют их (и их веса) бесплатно для общего использования. Благодаря этому пользователи могут запускать такие модели самостоятельно локально, на собственной инфраструктуре. Для небольших моделей часто достаточно ноутбука с графическим процессором (graphics processing unit, GPU). Для более крупных моделей может потребоваться кластер GPU (или же вам придется обратиться к поставщикам облачных услуг, которые будут запускать модели с открытым исходным кодом за вас). Помимо потенциальных финансовых преимуществ (запуск моделей на собственной инфраструктуре может быть дешевле), есть и другие причины, почему локальный запуск моделей может оказаться единственным жизнеспособным вариантом. Например, возможно, вы не хотите доверять внешним поставщикам особо конфиденциальные данные. В этом случае локальный запуск — единственный вариант.
Как правило, модели с открытым исходным кодом значительно меньше моделей, предлагаемых поставщиками облачных услуг. Это логично, ведь, в конце концов, у кого найдется несколько миллионов долларов на обучение модели? Однако благодаря огромному количеству доступных моделей часто можно найти модель с открытым исходным кодом, специализирующуюся именно на решении интересующей вас задачи. Например, платформа Hugging Face Transformers на момент написания книги предлагала более 1 миллиона моделей с архитектурой «трансформер»! Какую бы задачу вы ни решали, велика вероятность, что найдется подходящая для нее модель. В этом разделе мы рассмотрим платформу Hugging Face и узнаем, как использовать ее модели локально.
Перейдите по адресу https://huggingface.co/. Платформа Hugging Face Transformers предлагает различные ресурсы, связанные с моделями-трансформерами. Сюда входят не только модели, но и наборы данных, которые можно использовать для обучения собственных моделей, а также облачные предложения, позволяющие запускать модели с открытым исходным кодом на облачной инфраструктуре Hugging Face.
В данный момент нас интересуют модели. Нажмите кнопку Models (Модели), чтобы увидеть список моделей (рис. 8.4).

Рис. 8.4. Обзор моделей-трансформеров платформы Hugging Face. Нажмите кнопку фильтров Tasks (Задачи), чтобы сузить выбор. Нажимая на модели в списке Models (Модели), можно увидеть подробные сведения о них
Мы видим список из более чем миллиона моделей-трансформеров (и, поскольку количество моделей растет с каждым днем, полагаю, он еще увеличится). Их слишком много. Сузим выбор. В левой части экрана представлены различные параметры фильтрации, позволяющие сократить список до моделей, которые вас действительно интересуют. Например, можно отфильтровать по типу задачи, которую должна выполнять модель. Сюда входят классификация текста (например, классификация отзывов по тональности), вопросы и ответы к изображениям (к примеру, «На картинке изображено яблоко?») и преобразование речи в текст (скажем, транскрибация голосовых запросов в текст). Почти для всех задач, которые описаны в этой книге, можно найти специализированную модель. Щелкните на названии любой стандартной задачи, и отобразятся только те модели, которые ее решают.
Щелкнув на названии одной из оставшихся моделей, вы увидите ее подробное описание. Например, на рис. 8.5 оно показано для модели BLIP от компании Salesforce (https://huggingface.co/Salesforce/blip-image-captioning-large) — она обрабатывает изображения и генерирует подходящие подписи. Слева находится подробное описание модели, а также ссылки на соответствующие статьи и примеры кода, показывающие, как использовать модель на разных аппаратных платформах (то есть локально). Справа находится интерфейс, позволяющий опробовать модель на нескольких примерах изображений.

Рис. 8.5. Подробное описание модели BLIP от компании Salesforce. Можно прочитать ее описание слева или попробовать поработать с моделью, используя интерфейс справа
Теперь запустим модели-трансформеры на нашей локальной инфраструктуре. Производительность, конечно, будет зависеть от характеристик используемого оборудования. Однако даже если оно имеет умеренную вычислительную мощность, вы сможете работать с моделями, которые мы собираемся опробовать. Но сначала необходимо установить библиотеку Hugging Face Transformers. Введите в терминале следующую команду:
pip install transformers==4.36
Основу библиотеки Transformers составляет PyTorch — популярная платформа для машинного обучения. Если вы еще не установили PyTorch, то введите в терминале такую команду (в противном случае при попытке запустить код вы получите сообщение об ошибке):
pip install torch==2.1.2
Вот и вся настройка! Теперь мы можем использовать библиотеку Hugging Face Transformers, которую импортируем с помощью команды import transformers. Библиотека Transformers предлагает множество функций и различные способы использования моделей из ее репозитория (или, если на то пошло, варианты обучения ваших моделей). В текущем разделе мы рассмотрим лишь небольшую их часть, но этого достаточно, чтобы составить первое впечатление.
Для примера возьмем модель Roberta, которая классифицирует тональность сообщений. Она создана в Университете Кардиффа (доступна по адресу https://mng.bz/rKoX). По сравнению с GPT-4o и большинством других моделей, обсуждаемых в этом разделе, Roberta совсем небольшая. Однако она специализируется на анализе текста и определении его тональности. Roberta гораздо менее универсальна, чем GPT-4o и другие подобные модели, однако выполняет одну задачу и делает это довольно хорошо. Если вам, например, нужно классифицировать отзывы, то эта модель, скорее всего, подойдет.
Самый простой способ использования модели через библиотеку Transformers — это конвейер. С помощью команды, указанной ниже, создается конвейер для классификации по тональности на основе модели Roberta:
sentiment_pipeline = transformers.pipeline(
model='cardiffnlp/twitter-roberta-base-sentiment-latest')
Как видите, мы указываем модель, используя последнюю часть ее URL: имя учетной записи, предоставляющей модель (cardiffnlp), за которым следует идентификатор самой модели. При первом использовании кода библиотека Transformers автоматически загрузит модель из своего общедоступного репозитория. Обратите внимание: код работает отчасти потому, что модель, на которую мы ссылаемся, связана с определенным классом задач. Для других моделей в качестве отдельного входного параметра, возможно, придется указать типы задач, которые требуется решить.
Мы создали конвейер! Теперь с его помощью можно выполнить классификацию текста — например, вот так (предположим, что переменная text_to_classify содержит, как вы догадались, текст для классификации):
result = sentiment_pipeline(text_to_classify)
У нас есть все необходимое для создания простого приложения, которое будет классифицировать отзывы. Соответствующий код представлен в листинге 8.4 (доступен по ссылке Hugging Face, размещенной на сайте книги, в разделе дополнительных материалов к главе).
Листинг 8.4. Классификация сообщений по тональности с помощью платформы Hugging Face Transformers
import argparse
import transformers
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('review', type=str, help='Текст отзыва')
args = parser.parse_args()
sentiment_pipeline = transformers.pipeline( ❶ 
model='cardiffnlp/twitter-roberta-base-sentiment-latest')
result = sentiment_pipeline(args.review) ❷ 
print(result) ❸ 
Можно заметить отличие от кода, с которым мы работали ранее: не требуется указывать ключ доступа! Модели Hugging Face находятся в открытом доступе, и мы запускаем их на собственной инфраструктуре, поэтому предоставлять учетные данные не нужно. Вместо этого единственным входным параметром является текст отзыва, который необходимо классифицировать.
Код объединяет фрагменты, о которых мы говорили ранее. Он создает конвейер ❶, использует его для классификации входного текста ❷ и, наконец, выводит результат ❸. Можно протестировать его, перейдя в соответствующую папку в терминале и введя, например, такую команду, содержащую отзыв о фильме:
python huggingface.py "Фильм действительно был ужасен!"
При первом запуске кода, возможно, придется подождать несколько минут, пока библиотека Transformers скачает модель, на которую вы ссылаетесь. Но не беспокойтесь: библиотека кэширует скачанную модель, и вам не придется ждать при повторном запуске кода. После завершения обработки должен быть выведен примерно такой результат:
[{'label': 'negative', 'score': 0.9412825107574463}]
Он определенно верен для этого примера: отзыв краткий и на 100 % негативный. Протестируйте модель еще на нескольких отзывах и сравните результат с результатами вывода моделей типа GPT-4o. В большинстве случаев результаты классификации должны быть схожими. Конечно, GPT-4o — гораздо более универсальная модель, ее можно использовать для решения множества других задач. Но пока вас интересует классификация отзывов, модель от Hugging Face предлагает интересный компромисс между качеством и стоимостью.
• Помимо компании OpenAI, есть и другие поставщики, предлагающие большие языковые модели. В основном они предлагают закрытые модели через облачный API. Модели различаются по своей универсальности, качеству вывода и цене.
• Для доступа к языковым моделям большинство поставщиков предлагают библиотеку для Python.
• Платформа Hugging Face Transformers предлагает различные модели, которые можно скачать бесплатно.
1. Bai Y., Kadavath S., Kundu S. et al. Constitutional AI: Harmlessness from AI Feedback // CoRR abs, 2022. — № 2212.0. — Pp. 1–32.
2. Vaswani A., Shazeer N., Parmar N. et al. Attention is All You Need // Advances in Neural Information Processing Systems, 2017. — Pp. 5999–6009.