一、环境配置:

1、注册阿里云账号,使用阿里云主账号前往阿里云百炼大模型服务平台进行开通并实名认证,然后获取API Key,并将API Key添加到环境变量
在这里插入图片描述

export DASHSCOPE_API_KEY=“实际的API KEY”

2、配置python 3.10环境并配置openai环境

pip install -U openai

3、执行测试脚本

import os
from openai import OpenAI

try:
    client = OpenAI(
        # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
        # 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 以下是北京地域base_url,如果使用新加坡地域的模型,需要将base_url替换为:https://dashscope-intl.aliyuncs.com/compatible-mode/v1
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )

    completion = client.chat.completions.create(
        model="qwen-plus",  # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            {'role': 'user', 'content': '你是谁?'}
            ]
    )
    print(completion.choices[0].message.content)
except Exception as e:
    print(f"错误信息:{e}")
    print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")

4.输出

(py310_qwen) test@aitest:~/codes/qwen$ python hello_qwen.py
我是通义千问,是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我可以帮助你回答问题、创作文字、提供信息查询等多种服务。很高兴认识你!

二、mcp支持

1、安装mcp环境

pip install –U “qwen-agent[gui,mcp]

2、前往高德开放平台申请高德的API KEY
https://lbs.amap.com/?ref=https://console.amap.com/dev/key/app
在这里插入图片描述
3、以高德地图与网页部署 MCP 服务器为例。前往ModelScope的MCP 广场,分别找到高德地图EdgeOne Pages,通过右侧的通过SSE URL连接服务获取专属URL。
在这里插入图片描述
在这里插入图片描述
4、将自己的url替换到下方的测试脚本里

import os
from qwen_agent.agents import Assistant

# LLM 配置
llm_cfg = {
    "model": "qwen-plus-latest",
    "model_server": "https://dashscope.aliyuncs.com/compatible-mode/v1",
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx"
    "api_key": os.getenv("DASHSCOPE_API_KEY"),
}

# 系统消息
system = "你是会天气查询、地图查询、网页部署的助手"

# 工具列表
tools = [
    {
        "mcpServers": {
            "amap-maps": {
                "type": "sse",
                # 替换为您的 URL
                "url": "https://mcp.api-inference.modelscope.net/xxx/sse",
            },

            "edgeone-pages-mcp": {
               "type": "sse",
                # 替换为您的 URL
                "url": "https://mcp.api-inference.modelscope.net/xxx/sse",
            },

        }
    }
]

# 创建助手实例
bot = Assistant(
    llm=llm_cfg,
    name="助手",
    description="高德地图、天气查询、公网链接部署",
    system_message=system,
    function_list=tools,
)

messages = []

while True:
    query = input("\nuser question: ")
    if not query.strip():
        print("user question cannot be empty!")
        continue
    messages.append({"role": "user", "content": query})
    bot_response = ""
    is_tool_call = False
    tool_call_info = {}
    for response_chunk in bot.run(messages):
        #print(response_chunk)
        new_response = response_chunk[-1]
        #print(new_response)
        #print('\n')
        if "function_call" in new_response:
            is_tool_call = True
            tool_call_info = new_response["function_call"]
        elif "function_call" not in new_response and is_tool_call:
            is_tool_call = False
            print("\n" + "=" * 20)
            print("工具调用信息:", tool_call_info)
            print("工具调用结果:", new_response)
            print("=" * 20)
        elif new_response.get("role") == "assistant" and "content" in new_response:
            incremental_content = new_response["content"][len(bot_response):]
            print(incremental_content, end="", flush=True)
            bot_response += incremental_content
    messages.extend(response_chunk)

这是未添加高德mcp之前模型的能力,无法查询天气
在这里插入图片描述
添加高德mcp之后可以通过高德提供的接口获取天气,并返回给通义千问,再由通义千问整合回答给用户
在这里插入图片描述
5、Qwen-Agent 提供了可视化界面进行交互,请替换以下代码中的 URL 后运行:

import os
from qwen_agent.agents import Assistant
from qwen_agent.gui import WebUI

# LLM 配置
llm_cfg = {
    "model": "qwen-plus-latest",
    "model_server": "https://dashscope.aliyuncs.com/compatible-mode/v1",
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx"
    "api_key": os.getenv("DASHSCOPE_API_KEY"),
}

# 系统消息
system = "你是会天气查询、地图查询、网页部署的助手"

# 工具列表
tools = [
    {
        "mcpServers": {
            "amap-maps": {
                "type": "sse",
                # 替换为您的 URL
                "url": "https://mcp.api-inference.modelscope.net/xxx/sse",
            },
            "edgeone-pages-mcp": {
                "type": "sse",
                # 替换为您的 URL
                "url": "https://mcp.api-inference.modelscope.net/xxx/sse",
            },
        }
    }
]

# 创建助手实例
bot = Assistant(
    llm=llm_cfg,
    name="助手",
    description="高德地图、天气查询、公网链接部署",
    system_message=system,
    function_list=tools,
)
WebUI(bot).run()

界面显示Running on local URL: http://127.0.0.1:7860后,通过浏览器访问该链接。
在这里插入图片描述
如果代码跑在服务器上,并通过ssh工具连接的话,可以在本地通过端口转发映射服务器的端口,以mobaxterm为例,将远程服务器的端口映射到本地9999
在这里插入图片描述
这样在本地浏览器里输入127.0.0.1:9999就可以实现界面交互了
可以看到查询天气调用了高德的能力amap-maps-maps_weather

生成可公网访问的URL则调用的腾讯的edgeone-pages-mcp-deploy_html
在这里插入图片描述
参考文档:
首次调用通义千问API
使用qwen-agent实现MCP工具调用-大模型服务平台百炼-阿里云

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐