QwenLM / Qwen-Agent

Agent framework and applications built upon Qwen>=2.0, featuring Function Calling, Code Interpreter, RAG, and Chrome extension.
https://pypi.org/project/qwen-agent/
Other
3.54k stars 355 forks source link

demo无法正常使用 #231

Open silence-dxs-v2 opened 5 months ago

silence-dxs-v2 commented 5 months ago

 The local demo cannot use the drawing feature.

1

# import sys
# import logging
# import os
# # 把当前文件所在文件夹的父文件夹路径加入到PYTHONPATH
# sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import pprint
import urllib.parse
import json5
from qwen_agent.agents import Assistant
from qwen_agent.tools.base import BaseTool, register_tool
from qwen_agent.gui import WebUI

# 步骤 1(可选):添加一个名为 `my_image_gen` 的自定义工具。
@register_tool('my_image_gen')
class MyImageGen(BaseTool):
    # `description` 用于告诉智能体该工具的功能。
    description = 'AI 绘画(图像生成)服务,输入文本描述,返回基于文本信息绘制的图像 URL。'
    # `parameters` 告诉智能体该工具有哪些输入参数。
    parameters = [{
        'name': 'prompt',
        'type': 'string',
        'description': '期望的图像内容的详细描述',
        'required': True
    }]

    def call(self, params: str, **kwargs) -> str:
        # `params` 是由 LLM 智能体生成的参数。
        prompt = json5.loads(params)['prompt']
        print('--------------调用画图-----------------')
        prompt = urllib.parse.quote(prompt)
        return json5.dumps(
            {'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},
            ensure_ascii=False)

def init_app():
    # 步骤 2:配置您所使用的 LLM。
    llm_cfg = {
        # 使用 DashScope 提供的模型服务:
        'model': 'qwen2-instruct',
        'model_server': 'http://192.168.18.100:9997/v1',
        # 'api_key': 'YOUR_DASHSCOPE_API_KEY',
        # 如果这里没有设置 'api_key',它将读取 `DASHSCOPE_API_KEY` 环境变量。

        # 使用与 OpenAI API 兼容的模型服务,例如 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:创建一个智能体。这里我们以 `Assistant` 智能体为例,它能够使用工具并读取文件。
    system_instruction = '''你是一个乐于助人的AI助手。
    在收到用户的请求后,你应该:
    - 首先绘制一幅图像,得到图像的url,
    - 然后运行代码`request.get`以下载该图像的url,
    - 最后从给定的文档中选择一个图像操作进行图像处理。
    用 `plt.show()` 展示图像。
    你总是用中文回复用户。'''
    tools = ['my_image_gen', 'code_interpreter']  # `code_interpreter` 是框架自带的工具,用于执行代码。
    files = ['/home/lenovo/ai-dxs/Qwen-Agent/examples/resource/doc.pdf']  # 给智能体一个 PDF 文件阅读。
    bot = Assistant(llm=llm_cfg,
                    system_message=system_instruction,
                    function_list=tools,
                    files=files

                   )
    chatbot_config = {
        'prompt.suggestions': [

            '你是一个代码生成器',
        ]
    }
    WebUI(bot, chatbot_config=chatbot_config).run()

if __name__ == '__main__':
    # test()
    # app_tui()
    init_app()
JianxinMa commented 5 months ago

image

It works fine when I use the model service provided by alibaba cloud's dashscope:

    llm_cfg = {
        'model': 'qwen2-7b-instruct',
        'model_server': 'dashscope',
        'api_key': 'YOUR_DASHSCOPE_API_KEY',
    }

May I ask how your model service (qwen2-instruct at http://192.168.18.100:9997/v1) is deployed? Which model engine are you using, be it vllm, ollama, or something else? And where are the model weights obtained?

silence-dxs-v2 commented 4 months ago

Xinference transoformer启动 Model ID: qwen2-instruct Model Size: 7 Billion Parameters Model Format: pytorch Model Quantization: none

silence-dxs-v2 commented 4 months ago

换了个模型可以生成图片,但是不能展示,只有下载链接

silence-dxs-v2 commented 4 months ago
image
silence-dxs-v2 commented 4 months ago
image
silence-dxs-v2 commented 4 months ago

可以了