python 调用通义千问SDK API

前言

配置流程

1、通义千问API-KEY申请,
官方流程网址指导:https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key

2、安装DashScope SDK
官网教程网址:https://help.aliyun.com/zh/dashscope/developer-reference/install-dashscope-sdk

安装和更新dashscope依赖库

pip install dashscope
pip install dashscope --upgrade

3、API-KEY环境设置
参考官方文档网址:https://help.aliyun.com/zh/dashscope/developer-reference/api-key-settings

  • Linux/maxOS
export DASHSCOPE_API_KEY="YOUR_DASHSCOPE_API_KEY"
  • windows 环境变量,新建系统变量(变量:DASHSCOPE_API_KEY,值:你申请到的API_KEY字符串)
    windows

  • 或者可以直接在代码调用中全局设置(代码暴露风险)

import dashscope
dashscope.api_key="YOUR_DASHSCOPE_API_KEY"

4、代码实例

示例1:

# 官网示例
from http import HTTPStatus
from dashscope import Generation


def call_with_stream():
    user_input = input("请输入:")
    messages = list()
    msg_dict = [
        {'role': 'system', 'content': 'you are a helpful assistant'},
        {'role': 'user', 'content': user_input}]
    messages.append(msg_dict)
    responses = Generation.call(
        model="qwen-turbo",
        messages=messages,  
        result_format='message',  # 设置输出为'message'格式
        stream=True,  # 设置输出方式为流式输出
        incremental_output=True)  # 增量式流式输出
    full_content = ""
    for response in responses:
        if response.status_code == HTTPStatus.OK:
            print(response)
            full_content += response.output.choices[0].message.content
        else:
            # 网络请求异常
            print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
                response.request_id, response.status_code, response.code, response.message))
    print(f"Full content:{full_content}")


if __name__ == '__main__':
    call_with_stream()

示例2:

from dashscope import Generation
from dashscope.api_entities.dashscope_response import Role

messages = list()

while True:
    message = input('user:')
    messages.append({'role': Role.USER, 'content': message})
    whole_message = ''
    responses = Generation.call(Generation.Models.qwen_max, messages=messages, result_format='message', stream=True,
                                incremental_output=True)
    print('system:', end='')
    for response in responses:
        whole_message += response.output.choices[0]['message']['content']
        print(response.output.choices[0]['message']['content'], end='')
    print()
    messages.append({'role': 'assistant', 'content': whole_message})    

参考文档:
调用阿里通义千问大语言模型API-小白新手教程-python

posted @ 2024-08-21 12:23  二月雪  阅读(49)  评论(0编辑  收藏  举报