基于dashscope在线调用千问大模型

前言

dashscope是阿里云大模型服务平台——灵积提供的在线API组件。基于它,无需本地加载大模型,通过在线方式访问云端大模型来完成对话。 

申请API key

老规矩:要想访问各家云端大模型,需要先申请API key。

对于阿里云,需要先访问:https://dashscope.console.aliyun.com/。然后注册一个账号,接着就可以申请sk-开头的api-key了,如下图所示。

有了key后,就可以点击上面选项:模型体验中心,输入简单的prompt来验证本地电脑访问阿里云网络通信有没有问题:

 代码

下面是一个简单python代码,自己封装message,并添加api-key,并通过在线方式访问Qwen大模型进行对话。

import dashscope
from typing import List
import logging

class Params:
    def __init__(self, model, temperature, api_key, messages):
        self.model = model
        self.temperature = temperature
        self.api_key = api_key
        self.messages = messages #List[Dict[str, str]]
        

class QwenClient:
    def __init__(self, log_verbose: bool = False):
        self.log_verbose = log_verbose
        self.logger = logging.getLogger(__name__)
        if log_verbose:
            self.logger.setLevel(logging.INFO)

    def call_qwen(self, params: Params) -> List[dict]:
        # 加载配置文件,根据需要选择第一个模型        
        if self.log_verbose:
            self.logger.info(f'{self.__class__.__name__}:params: {params}')

        # 初始化生成器对象
        gen = dashscope.Generation()

        # 调用千问API并获取回复
        responses = gen.call(
            model=params.model,
            temperature=params.temperature,
            api_key=params.api_key,
            messages= params.messages,
            result_format='message',
            stream=True,
        )        
        print("responses: ", responses)

        # 处理API返回的结果
        response_list = []
        for resp in responses:
            if resp["status_code"] == 200 and "output" in resp and "choices" in resp["output"]:
                choice = resp["output"]["choices"][0]["message"]["content"]
                response_list.append({"error_code": 0, "text": choice})
            else:
                error_data = {
                    "error_code": resp["status_code"],
                    "text": resp["message"],
                    "error": {
                        "message": resp["message"],
                        "type": "invalid_request_error",
                        "param": None,
                        "code": None,
                    }
                }
                self.logger.error(f"请求千问 API 时发生错误:{error_data}")
                response_list.append(error_data)

        return response_list

# 使用示例
if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    #model_names = ["qwen-turbo"]
    client = QwenClient(log_verbose=True)

    user_input = "你好,请问今天北京天气怎么样?"
    messages = [{"role": "user", "content": user_input}]
    params = Params("qwen-turbo", 0.7, "sk-axxxxxx3b4a2fa1cb1dd7e71a4bee", messages)
    
    responses = client.call_qwen(params)

    print("千问的回答:", responses[-1]["text"])

 需要先安装好组件:dashscope,typing以及logging。本平台是ubuntu20.04,直接输入:python3 xxx.py即可到预期结果:

<think>好的,用户想了解如何使用2.5大模型API进行开发。首先,我需要回忆一下相关的引用内容。引用[1]提到Qwen2.5-Coder是基于Qwen2.5基础模型,适用于编程领域。引用[2]和[3]则介绍了通义2.5的发布以及相关的课程内容,包括API应用开发工程。 用户的需求很明确,他们需要具体的步骤或指南来使用API。根据引用[3],阶段2是关于API应用开发工程的,所以可能需要参考该课程中的内容。另外,引用[1]中的Qwen2.5-Coder可能是一个具体的模型文件,用户需要下载并根据文档进行开发。 接下来,我应该分步骤回答,包括获取API密钥、安装SDK、调用API的示例代码以及错误处理等。同时,需要确保代码示例正确,并符合用户提到的LaTeX格式要求。例如,数学公式用$...$,独立公式用$$...$$。 可能还需要生成相关题,比如性能优化、应用场景等,但用户的题集中在API使用上,所以相关题应围绕开发中的常见题展开,比如认证失败、处理响应、最佳实践等。 需要检查是否有遗漏的引用内容,确保回答准确。引用[2]提到通义2.5是最强开源大模型,可能涉及访问官方文档的步骤。另外,引用[3]中的L1.4.4模型工程实践可能包含具体案例,可以建议用户参考相关课程资料。 最后,确保回答结构清晰,步骤明确,代码正确,并且自然融入引用标识。需要避免使用Markdown格式,但用户允许在回答中使用代码块,所以Python示例是合适的。</think>以下是如何使用2.5大模型API进行开发的详细步骤说明: ### 一、开发准备 1. **获取API凭证** 需要先注册阿里云账号并开通通义服务,通过控制台获取API Key和Secret[^2] 2. **安装开发工具包** 推荐使用Python SDK: ```python pip install dashscope ``` ### 二、基础API调用 ```python import dashscope # 配置API密钥 dashscope.api_key = "YOUR_API_KEY" # 创建对话请求 response = dashscope.Generation.call( model="qwen2.5-72b-chat", prompt="帮我用Python写一个快速排序算法", temperature=0.8 ) # 输出响应内容 print(response.output.text) ``` 该代码实现了与2.5模型的文本生成交互,其中`temperature`参数控制生成随机性,取值范围为$[0,1]$,当$t \to 1$时输出更具创造性 ### 三、进阶功能实现 1. **流式响应处理** 添加`stream=True`参数启用流式传输: ```python from dashscope import Generation from http import HTTPStatus response = Generation.call( model="qwen2.5-72b-chat", prompt="解释量子计算的基本原理", stream=True, incremental_output=True ) for chunk in response: if chunk.status_code == HTTPStatus.OK: print(chunk.output.text, end="") ``` ### 四、最佳实践建议 1. **性能优化** 通过调整`top_p`(核心采样概率)和`max_length`(最大生成长度)参数平衡响应质量与速度,其中: $$ P(w_i|w_{<i}) \geq (1 - top\_p) $$ 该不等式定义了采样过程中候选词的概率阈值[^3] 2. **错误处理** 建议实现重试机制,特别是处理API限流(HTTP 429)和服务器错误(HTTP 5xx)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ltshan139

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值