中文| Inglês
Qwen-Agent é uma estrutura para o desenvolvimento de aplicativos LLM com base no seguimento de instruções, uso de ferramentas, planejamento e recursos de memória do Qwen. Ele também vem com aplicativos de exemplo, como Browser Assistant, Code Interpreter e Custom Assistant.
18 de setembro de 2024: Adicionada demonstração do Qwen2.5-Math para mostrar os recursos de raciocínio integrado a ferramentas do Qwen2.5-Math. Nota: O executor python não está em área restrita e destina-se apenas a testes locais, não para uso em produção.
Instale a versão estável do PyPI:
pip install -U "qwen-agent[gui,rag,code_interpreter,python_executor]"# Ou use `pip install -U qwen-agent` para os requisitos mínimos.# Os requisitos opcionais, especificados entre colchetes duplos, são:# [gui ] para suporte GUI baseado em Gradio;# [rag] para suporte RAG;# [code_interpreter] para suporte de intérprete de código;# [python_executor] para raciocínio integrado a ferramentas com Qwen2.5-Math.
Alternativamente, você pode instalar a versão de desenvolvimento mais recente da fonte:
clone git https://github.com/QwenLM/Qwen-Agent.gitcd Qwen-Agent pip install -e ./"[gui,rag,code_interpreter,python_executor]"# Ou `pip install -e ./` para requisitos mínimos.
Você pode usar o serviço de modelo fornecido pelo DashScope do Alibaba Cloud ou implantar e usar seu próprio serviço de modelo usando os modelos Qwen de código aberto.
Se você optar por usar o serviço de modelo oferecido pelo DashScope, certifique-se de definir a variável de ambiente DASHSCOPE_API_KEY
como sua chave API exclusiva do DashScope.
Alternativamente, se você preferir implantar e usar seu próprio serviço de modelo, siga as instruções fornecidas no README do Qwen2 para implantar um serviço de API compatível com OpenAI. Especificamente, consulte a seção vLLM para implantação de GPU de alto rendimento ou a seção Ollama para implantação de CPU local (+GPU).
Qwen-Agent oferece componentes atômicos, como LLMs (que herdam da class BaseChatModel
e vêm com chamada de função) e Ferramentas (que herdam da class BaseTool
), junto com componentes de alto nível como Agents (derivados da class Agent
).
O exemplo a seguir ilustra o processo de criação de um agente capaz de ler arquivos PDF e utilizar ferramentas, bem como incorporar uma ferramenta customizada:
import pprintimport urllib.parseimport json5from qwen_agent.agents import Assistantfrom qwen_agent.tools.base import BaseTool, Register_tool# Etapa 1 (opcional): adicione uma ferramenta personalizada chamada `my_image_gen`.@register_tool('my_image_gen')class MyImageGen(BaseTool):# A `descrição` informa ao agente a funcionalidade desta ferramenta.description = 'Serviço de pintura de IA (geração de imagens), insere a descrição do texto e retorna o URL da imagem desenhado com base nas informações do texto.'# Os `parâmetros` informam ao agente qual entrada parâmetros que a ferramenta possui.parameters = [{'name': 'prompt','type': 'string','description': 'Descrição detalhada do conteúdo da imagem desejada, em inglês','required': True}]def call(self, params: str, **kwargs) -> str:# `params` são os argumentos gerados pelo agente LLM.prompt = json5.loads(params)['prompt']prompt = urllib.parse.quote( prompt) retornar json5.dumps ( {'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},ensure_ascii=False)# Etapa 2: Configure o LLM que você está usando.llm_cfg = {# Use o serviço de modelo fornecido por DashScope:'model': 'qwen-max','model_server': 'dashscope',# 'api_key': 'YOUR_DASHSCOPE_API_KEY',# Ele usará a variável de ambiente `DASHSCOPE_API_KEY' se 'api_key' não estiver definido aqui.# Use um serviço de modelo compatível com a API OpenAI, como vLLM ou Ollama:# 'model': 'Qwen2-7B-Chat',# 'model_server': 'http://localhost:8000/v1', # base_url, também conhecido como api_base# 'api_key': 'EMPTY',# (Opcional) Hiperparâmetros LLM para geração:'generate_cfg': {'top_p': 0,8} }# Etapa 3: Crie um agente. Aqui usamos como exemplo o agente `Assistente`, que é capaz de usar ferramentas e ler arquivos.system_instruction = '''Você é um assistente útil.Depois de receber a solicitação do usuário, você deve:- primeiro desenhar uma imagem e obter o url da imagem, - então execute o código `request.get(image_url)` para baixar a imagem,- e finalmente selecione uma operação de imagem do documento fornecido para processar a imagem. Por favor, mostre a imagem usando `plt.show()`.' ''tools = ['my_image_gen', 'code_interpreter'] # `code_interpreter` é uma ferramenta integrada para executar code.files = ['./examples/resource/doc.pdf'] # Dê ao bot um arquivo PDF para read.bot = Assistant(llm=llm_cfg,system_message=system_instruction,function_list=tools,files=files)# Etapa 4: Execute o agente como um chatbot.messages = [] # Isso armazena o histórico do chat.while True:# Por exemplo , insira a consulta "desenhe um cachorro e gire-o 90 graus".query = input('user query: ')# Anexe a consulta do usuário ao chat history.messages.append({'role': 'user', 'content ': query})response = []para resposta em bot.run(messages=messages):# Streaming output.print('bot response:')pprint.pprint(response, indent=2)# Anexe as respostas do bot ao histórico de bate-papo.messages.extend(resposta)
Além de usar implementações de agente integradas, como class Assistant
, você também pode desenvolver sua própria implementação de agente herdando da class Agent
. Consulte o diretório de exemplos para obter mais exemplos de uso.
Sim. As classes LLM fornecem chamadas de funções. Além disso, algumas classes de Agente também são construídas com base na capacidade de chamada de função, por exemplo, FnCallAgent e ReActChat.
Lançamos uma solução RAG rápida, bem como um agente caro, mas competitivo, para responder perguntas em documentos muito longos. Eles conseguiram superar os modelos nativos de longo contexto em dois benchmarks desafiadores, ao mesmo tempo em que foram mais eficientes, e tiveram um desempenho perfeito no teste de pressão de agulha única "agulha no palheiro" envolvendo contextos de 1 milhão de tokens. Veja o blog para detalhes técnicos.
BrowserQwen é um assistente de navegador desenvolvido com base no Qwen-Agent. Consulte sua documentação para obter detalhes.
O interpretador de código não está em área restrita e executa o código em seu próprio ambiente. Por favor, não peça ao Qwen para realizar tarefas perigosas e não use o interpretador de código diretamente para fins de produção.