中文 | английский
Qwen-Agent — это платформа для разработки приложений LLM, основанная на следовании инструкциям, использовании инструментов, планировании и возможностях памяти Qwen. Он также поставляется с примерами приложений, таких как Browser Assistant, Code Interpreter и Custom Assistant.
18 сентября 2024 г.: добавлена демонстрация Qwen2.5-Math для демонстрации возможностей Qwen2.5-Math по интегрированному инструментальному рассуждению. Примечание. Исполнитель Python не изолирован в песочнице и предназначен только для локального тестирования, а не для использования в рабочей среде.
Установите стабильную версию из PyPI:
pip install -U "qwen-agent[gui,rag,code_interpreter,python_executor]"# Или используйте `pip install -U qwen-agent` для минимальных требований.# Необязательные требования, указанные в двойных скобках:# [gui ] для поддержки графического интерфейса на основе Gradio;# [rag] для поддержки RAG;# [code_interpreter] для поддержки интерпретатора кода;# [python_executor] для Инструментально-интегрированное рассуждение с помощью Qwen2.5-Math.
Альтернативно вы можете установить последнюю разрабатываемую версию из исходного кода:
git клон https://github.com/QwenLM/Qwen-Agent.gitcd Qwen-Agent pip install -e ./"[gui,rag,code_interpreter,python_executor]"# Или `pip install -e ./` для минимальных требований.
Вы можете либо использовать сервис моделей, предоставляемый DashScope от Alibaba Cloud, либо развернуть и использовать свой собственный сервис моделей, используя модели Qwen с открытым исходным кодом.
Если вы решите использовать модельный сервис, предлагаемый DashScope, убедитесь, что вы установили переменную среды DASHSCOPE_API_KEY для вашего уникального ключа DashScope API.
В качестве альтернативы, если вы предпочитаете развернуть и использовать собственную службу модели, следуйте инструкциям, приведенным в README Qwen2, для развертывания службы API, совместимой с OpenAI. В частности, обратитесь к разделу vLLM для развертывания графического процессора с высокой пропускной способностью или разделу Ollama для развертывания локального процессора (+ графического процессора).
Qwen-Agent предлагает атомарные компоненты, такие как LLM (которые наследуются от class BaseChatModel и имеют вызов функций) и Tools (которые наследуются от class BaseTool ), а также компоненты высокого уровня, такие как Agents (производные от class Agent ).
Следующий пример иллюстрирует процесс создания агента, способного читать файлы PDF и использовать инструменты, а также включать специальный инструмент:
import pprintimport urllib.parseimport json5from qwen_agent.agents import Assistantfrom qwen_agent.tools.base import BaseTool, Register_tool# Шаг 1 (необязательно): добавьте пользовательский инструмент с именем `my_image_gen`.@register_tool('my_image_gen')class MyImageGen(BaseTool):# `Описание` сообщает агенту о функциональности этого инструмента.description = 'ИИ-рисование (генерации изображений), входное текстовое описание и возврат URL-адреса изображения, нарисованного на основе текстовой информации.'# `Параметры` сообщают агенту, какие входные параметры имеет инструмент.parameters = [{'name': 'prompt',' type': 'string','description': 'Подробное описание желаемого содержимого изображения на английском языке','required': True}]def call(self, params: str, **kwargs) -> str:# ` параметры` являются аргументы, сгенерированные агентом LLM.prompt = json5.loads(params)['prompt']prompt = urllib.parse.quote(prompt)return json5.dumps(
{'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},ensure_ascii=False)# Шаг 2. Настройте используемый LLM.llm_cfg = {# Используйте сервис модели, предоставляемый DashScope:'model': 'qwen-max','model_server': 'dashscope',# 'api_key': 'YOUR_DASHSCOPE_API_KEY',# Он будет использовать переменную среды `DASHSCOPE_API_KEY', если здесь не установлен 'api_key'.# Используйте модельный сервис, совместимый с API OpenAI, например vLLM или Ollama:# 'model': 'Qwen2-7B- Chat',# 'model_server': 'http://localhost:8000/v1', # base_url, также известный как api_base# 'api_key': 'EMPTY',# (Необязательно) Гиперпараметры LLM для генерации:'generate_cfg': {'top_p': 0.8}
}# Шаг 3. Создайте агента. Здесь в качестве примера мы используем агент `Ассистент`, который способен использовать инструменты и читать файлы.system_instruction = '''Вы полезный помощник. После получения запроса пользователя вам следует:- сначала нарисовать изображение и получить URL-адрес изображения, - затем запустите код `request.get(image_url)`, чтобы загрузить изображение, - и, наконец, выберите операцию с изображением из данного документа для обработки изображения. Пожалуйста, покажите изображение, используя `plt.show()`.'''tools = ['my_image_gen', 'code_interpreter'] # `code_interpreter` — встроенный инструмент для выполнения code.files = ['./examples/resource/doc.pdf' ] # Даем боту PDF-файл для чтения.bot = Assistant(llm=llm_cfg,system_message=system_instruction,function_list=tools,files=files)# Шаг 4. Запустите агента как чат-бота.messages = [] # Здесь сохраняется история чата. Пока True:# Например, введите запрос «нарисуйте собаку и поверните ее на 90 градусов».query = input('user query: ')# Добавьте пользовательский запрос в чат History.messages.append({'role': 'user', 'content': query})response = []для ответа в bot.run(messages=messages):# Streaming output.print('bot response:') pprint.pprint(response, indent=2)# Добавляем ответы бота в чат History.messages.extend(response) Помимо использования встроенных реализаций агента, таких как class Assistant , вы также можете разработать собственную реализацию агента, унаследовав его от class Agent . Пожалуйста, обратитесь к каталогу примеров для получения дополнительных примеров использования.
Да. Классы LLM обеспечивают вызов функций. Кроме того, некоторые классы агентов также основаны на возможности вызова функций, например FnCallAgent и ReActChat.
Мы выпустили быстрое решение RAG, а также дорогого, но конкурентоспособного агента для ответов на вопросы по сверхдлинным документам. Им удалось превзойти собственные модели с длинным контекстом в двух сложных тестах, оставаясь при этом более эффективными, и отлично показать себя в одном игольном тесте «иголка в стоге сена», включающем контексты с 1 млн токенов. Технические подробности смотрите в блоге.

BrowserQwen — это помощник браузера, созданный на основе Qwen-Agent. Подробности см. в его документации.
Интерпретатор кода не изолирован в изолированной программной среде и выполняет код в вашей собственной среде. Пожалуйста, не просите Qwen выполнять опасные задачи и не используйте интерпретатор кода напрямую в производственных целях.