Высвободите автономных агентов с лучшими открытыми моделями Qwen-Agent
Исследуйте силу открытых моделей Qwen-Agent и узнайте, как высвободить автономных агентов через вызов функций и создание пользовательских агентов. Откройте для себя влияние квантования на производительность модели для реальных приложений.
15 февраля 2025 г.

Раскройте силу автономных агентов с помощью Qwen-Agent, передового открытого фреймворка, который использует лучшие доступные модели с открытым весом. Узнайте, как легко интегрировать вызов функций и рабочие процессы на основе агентов для создания интеллектуальных приложений, которые могут взаимодействовать с реальным миром и адаптироваться к потребностям пользователей.
Создание автономных агентов с помощью лучшей открытой весовой модели
Вызов функций и агенты: понимание различий
Начало работы с агентами Qwen: вызов функций и использование агентов
Влияние квантования на производительность больших языковых моделей
Создание автономных агентов с помощью лучшей открытой весовой модели
Создание автономных агентов с помощью лучшей открытой весовой модели
Последние и самые передовые открытые языковые модели Alibaba Quen 2 предлагают впечатляющие возможности в широком спектре задач. Эти модели варьируются от 500 миллионов до 72 миллиардов параметров, при этом более крупные модели поддерживают до 128 000 токенов - значительное улучшение по сравнению с ограничением в 8 000 токенов у GPT-3.
Одной из ключевых особенностей Quen 2 является его высокая производительность в области программирования и математики, а также способность обрабатывать длинные контексты - что критически важно для реальных приложений. Кроме того, модели поддерживают широкий спектр языков, в том числе уделяют особое внимание ближневосточным и юго-восточноазиатским языкам, что является приветственным изменением по сравнению с западноцентричным фокусом многих других моделей.
Чтобы использовать мощь Quen 2, мы можем использовать фреймворк Quen Agent, который предоставляет доступ к встроенному браузерному помощнику, интерпретатору кода и возможность создавать пользовательские помощники. Это позволяет нам создавать автономных агентов, которые могут планировать, выполнять и адаптировать свои действия в зависимости от поставленной задачи.
В этом разделе мы рассмотрим, как использовать Quen Agent для создания пользовательского агента генерации изображений. Агент сможет генерировать изображения на основе ввода пользователя, загружать сгенерированные изображения и даже обновлять свой собственный код, если возникнут какие-либо проблемы. Объединяя мощное понимание языка Quen 2 с возможностями планирования и выполнения Quen Agent, мы можем создавать по-настоящему автономных и способных агентов, которые могут решать широкий спектр задач.
Вызов функций и агенты: понимание различий
Вызов функций и агенты: понимание различий
Вызов функций и агенты - это два разных понятия в мире больших языковых моделей (LLM). Вот краткое объяснение различий между ними:
Вызов функций (использование инструментов):
- Вызов функций или использование инструментов позволяет LLM взаимодействовать с внешним миром, обращаясь к внешним API или функциям.
- LLM определяет, какую функцию использовать на основе ввода пользователя, генерирует необходимые входные данные для функции и возвращает результаты пользователю.
- Однако сам LLM не может выполнить вызов функции; пользователь или отдельная система должны выполнить фактический вызов функции и вернуть результаты в LLM.
Агенты:
- Агенты - это более сложные экземпляры LLM, которые имеют доступ к набору инструментов, как и при вызове функций.
- Агенты также могут выполнять планирование, разбивать задачи на подцели и выполнять действия с помощью доступных инструментов.
- Агенты имеют доступ как к краткосрочной, так и к долгосрочной памяти, что позволяет им отслеживать свой прогресс и планировать следующие шаги соответствующим образом.
- Агенты критически важны для превращения LLM в по-настоящему полезные приложения для реального мира, поскольку они могут автономно выполнять сложные задачи.
Кратко, вызов функций - это более ограниченное взаимодействие, при котором LLM может только генерировать необходимые входные данные для функции, в то время как агенты обладают способностью планировать, выполнять и адаптировать свои действия для достижения желаемого результата.
Начало работы с агентами Qwen: вызов функций и использование агентов
Начало работы с агентами Qwen: вызов функций и использование агентов
Чтобы начать работу с агентами Qwen, мы будем использовать версию Qwen 2 с 72 миллиардами параметров и запускать ее локально с помощью AMA. Вы также можете использовать их внешний API, но для использования Qwen Agent у нас есть два варианта:
- Установите пакет с помощью pip как независимый пакет Python.
- Клонируйте репозиторий и выполните локальную установку, если вы хотите использовать последнюю версию в разработке.
Я буду запускать его локально с помощью AMA. Сначала запустите сервер AMA и используйте команду olama Run Qwen 272 billion
. Это загрузит AMA и модель, что может занять некоторое время в зависимости от скорости вашего интернета.
Затем создайте виртуальное окружение с помощью conda и активируйте его:
conda create -n qwen python=3.10
conda activate qwen
Теперь установите пакет Qwen Agent с помощью pip:
pip install qwen-agent
Мы начнем с вызова функций. Модель должна выбрать функцию для использования, определить входные данные и передать их в интерпретатор Python. Интерпретатор выполнит функцию, получит ответ и передаст его обратно в LLM.
Вот пример вызова функции для получения текущей погоды:
# Создание экземпляра LLM
llm = QwenLLM(base_api="http://localhost:8000/v1", model_name="qwen-2-72b", version="v1")
# Сообщение пользователя
user_message = "Какая сейчас погода в Париже?"
# Определение функции
function_call = {
"description": "Получить текущую погоду для заданного местоположения",
"function": "get_weather",
"arguments": {
"location": "Paris",
"unit": "celsius"
}
}
# Вызов LLM и выполнение функции
response = llm.call_with_function(user_message, [function_call])
print(response)
Это сгенерирует информацию о текущей погоде в Париже и вернет ее в LLM.
Теперь рассмотрим пример использования Qwen Agent. Мы создадим пользовательского агента, который может генерировать изображения и загружать их в локальную папку. Агент будет использовать пользовательский инструмент для генерации изображений и интерпретатор кода для выполнения необходимого кода.
from qwen_agent import Assistant, CodeInterpreter, CustomTool
# Определение пользовательского инструмента для генерации изображений
class MyImageGeneration(CustomTool):
def __init__(self):
self.description = "Генерировать изображения на основе ввода пользователя с использованием API Pollinations.AI."
def run(self, args):
# Сгенерировать изображение с использованием API
image_url = generate_image(args["prompt"])
# Загрузить изображение в локальную папку
download_image(image_url, "images")
return "Изображение сгенерировано и сохранено в папку 'images'."
# Создание агента
agent = Assistant(
llm=QwenLLM(base_api="http://localhost:8000/v1", model_name="qwen-2-72b", version="v1"),
tools=[MyImageGeneration(), CodeInterpreter()]
)
# Попросить агента сгенерировать изображение
agent.run("Создайте изображение ламы в солнечных очках.")
Этот агент будет использовать пользовательский инструмент генерации изображений для создания изображения, загрузит его в папку "images" и вернет результат.
Наконец, рассмотрим влияние квантования на производительность моделей Qwen. Команда Qwen предоставила подробные оценки по метрикам MML, C-Evolve и I-Evolve для различных уровней квантования.
Результаты показывают, что для более крупных моделей (72 миллиарда) разница между 16-битным и 8-битным квантованием не значительна, но 4-битное квантование может оказывать более заметное влияние на производительность. Для более мелких моделей (0,5 миллиарда) различия более выражены, при этом 4-битное квантование показывает снижение средних баллов на 5 пунктов.
В целом рекомендуется использовать как минимум 8-битное или 16-битное квантование для производственных развертываний, поскольку 4-битное квантование может оказывать более значительное влияние на производительность модели, особенно для более мелких моделей.
Влияние квантования на производительность больших языковых моделей
Влияние квантования на производительность больших языковых моделей
В этом разделе мы рассмотрим влияние квантования на производительность больших языковых моделей, уделяя особое внимание моделям Quin 2.
Команда Quin рассмотрела вопрос влияния квантования в своих обновленных моделях. Они оценили производительность моделей Quin 2 с различными уровнями квантования, включая 16-битное с плавающей запятой, 8-битное, 4-битное квантование и AWQ (Adaptive Weight Quantization).
Основываясь на средних показателях, можно наблюдать следующие тенденции:
-
Более крупные модели: Для более крупной модели с 72 миллиардами параметров разница в производительности между 16-битным и 8-битным квантованием не значительна, при этом сохраняется около 81% от первоначальной производительности. Однако 4-битное квантование показывает более заметное снижение производительности.
-
Более мелкие модели: Для более мелких моделей, таких как версия с 0,5 миллиардами параметров, влияние квантования более драматично. 4-битное квантование показывает 5-балльную разницу в среднем счете по сравнению с исходной 16-битной версией с плавающей запятой.
Основной вывод заключается в том, что влияние квантования более выражено на более мелких моделях, в то время как более крупные модели Quin 2 могут сохранять относительно высокую производительность даже при 8-битном квантовании.
При развертывании этих моделей в производстве, как правило, рекомендуется использовать как минимум 8-битное квантование, а при возможности - 16-битное, чтобы избежать значительного ухудшения производительности, особенно для более мелких вариантов моделей.
В целом, анализ команды Quin подчеркивает важность тщательного рассмотрения компромиссов между размером модели, уровнем квантования и производительностью при развертывании больших языковых моделей в реальных приложениях.
Часто задаваемые вопросы
Часто задаваемые вопросы

