中文 | английский
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
для вашего уникального ключа API DashScope.
В качестве альтернативы, если вы предпочитаете развернуть и использовать собственную службу модели, следуйте инструкциям, приведенным в 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):# `Описание` сообщает агенту о функциональности этого инструмента. параметры, которые имеет инструмент.parameters = [{'name': 'prompt','type': 'string','description': 'Подробное описание желаемого содержимого изображения на английском языке','required': True}]def call(self, params: str, **kwargs) -> str:# `params` — это аргументы, сгенерированные агентом LLM.prompt = json5.loads(params)['prompt']prompt = urllib.parse.quote( подскажите) вернуть 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` — это встроенный инструмент для выполнения кода.files = ['./examples/resource/doc.pdf'] # Передайте боту PDF-файл для read.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)# Добавляем ответы бота в история чата.messages.extend(ответ)
Помимо использования встроенных реализаций агента, таких как class Assistant
, вы также можете разработать собственную реализацию агента, унаследовав его от class Agent
. Пожалуйста, обратитесь к каталогу примеров для получения дополнительных примеров использования.
Да. Классы LLM обеспечивают вызов функций. Кроме того, некоторые классы агентов также основаны на возможности вызова функций, например FnCallAgent и ReActChat.
Мы выпустили быстрое решение RAG, а также дорогого, но конкурентоспособного агента для ответов на вопросы по сверхдлинным документам. Им удалось превзойти собственные модели с длинным контекстом в двух сложных тестах, оставаясь при этом более эффективными, и отлично показать себя в одном игольном тесте «иголка в стоге сена», включающем контексты с 1 млн токенов. Технические подробности смотрите в блоге.
BrowserQwen — это помощник браузера, созданный на основе Qwen-Agent. Подробную информацию см. в его документации.
Интерпретатор кода не изолирован в изолированной программной среде и выполняет код в вашей собственной среде. Пожалуйста, не просите Qwen выполнять опасные задачи и не используйте интерпретатор кода напрямую в производственных целях.