通义千文大模型API调用示例(python)

API详情

通义千问是阿里云自主研发的大语言模型,能够在用户自然语言输入的基础上,通过自然语言理解和语义分析,理解用户意图,在不同领域、任务内为用户提供服务和帮助。您可以通过提供尽可能清晰详细的指令,来获取更符合您预期的结果。

模型具备的能力包括但不限于:

  1. 创作文字,如写故事、写公文、写邮件、写剧本、写诗歌等
  2. 编写代码
  3. 提供各类语言的翻译服务,如英语、日语、法语、西班牙语等
  4. 进行文本润色和文本摘要等工作
  5. 扮演角色进行对话
  6. 制作图表

通义千问以用户以文本形式输入的指令(prompt)以及不定轮次的对话历史(history)作为输入,返回模型生成的回复作为输出。在这一过程中,文本将被转换为语言模型可以处理的token序列。Token是模型用来表示自然语言文本的基本单位,可以直观的理解为“字”或“词”。对于中文文本来说,1个token通常对应一个汉字;对于英文文本来说,1个token通常对应3至4个字母或1个单词。例如,中文文本“你好,我是通义千问”会被转换成序列[‘你’, ‘好’, ‘,’, ‘我’, ‘是’, ‘通’, ‘义’, ‘千’, ‘问’],而英文文本"Nice to meet you."则会被转换成[‘Nice’, ’ to’, ’ meet’, ’ you’, ‘.’]。

目前(2023-12-15)API调用免费,具体截止时间还没有通知,大家赶快尝试一下!!!
官网文档:点击查看

模型概览

模型名模型简介模型输入输出限制
qwen-turbo通义千问超大规模语言模型,支持中文英文等不同语言输入。模型支持 8k tokens上下文,为了保障正常的使用和输出,API限定用户输入为6k tokens。
qwen-plus通义千问超大规模语言模型增强版,支持中文英文等不同语言输入。模型支持 32k tokens上下文,为了保障正常的使用和输出,API限定用户输入为 30k tokens。
qwen-max
(限时免费开放中)
通义千问千亿级别超大规模语言模型,支持中文英文等不同语言输入。随着模型的升级,qwen-max将滚动更新升级,如果希望使用稳定版本,请使用qwen-max-1201。模型支持 8k tokens上下文,为了保障正常的使用和输出,API限定用户输入为6k tokens。
qwen-max-1201
(限时免费开放中)
通义千问千亿级别超大规模语言模型,支持中文英文等不同语言输入。该模型为qwen-max的快照稳定版本,预期维护到下个快照版本发布时间(待定)后一个月。模型支持 8k tokens上下文,为了保障正常的使用和输出,API限定用户输入为6k tokens。
qwen-max-longcontext
(限时免费开放中)
通义千问千亿级别超大规模语言模型,支持中文英文等不同语言输入。模型支持 30k tokens上下文,为了保障正常的使用和输出,API限定用户输入为 28k tokens。
qwen-vl-plus通义千问VL plus支持灵活的交互方式,包括多图、多轮问答、创作等能力的模型,大幅提升了图片文字处理能力,增加可处理分辨率范围,增强视觉推理和决策能力-

开通DashScope并创建API-KEY

API-KEY创建说明
说明:需要通过阿里云主账号或者得到主账号AliyunDashScopeFullAccess授权的子账号进行DashScope模型服务的开通及API-KEY的创建。

开通DashScope灵积模型服务

访问DashScope管理控制台:前往控制台
在这里插入图片描述
在这里插入图片描述

创建API-KEY

访问DashScope管理控制台API-KEY管理页面:前往API-KEY管理,然后点击“创建新的API-KEY”。
在这里插入图片描述
在这里插入图片描述

API-KEY添加至系统变量

  1. 新建用户变量
  2. 输入变量名(可以自定义):DASHSCOPE_API_KEY
  3. 输入变量值(API-KEY):直接复制
    在这里插入图片描述

Python调用示例

import os
import time
import json
import random
from http import HTTPStatus
import dashscope
from dashscope import Generation
from dashscope.api_entities.dashscope_response import Role

# 两种方式调用api-key
key = os.getenv("DASHSCOPE_API_KEY")  # 调用时需要手动添加key
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")  # 不需要手动添加key

流式输出

def call_with_stream(question):
    messages = [
        {'role': 'user', 'content': f'{question}'}]
    responses = Generation.call(
        model='qwen-max-1201',
        max_tokens=1500,
        messages=messages,
        result_format='message',
        stream=True,
        incremental_output=True
    )
    full_content = ''
    for response in responses:
        if response.status_code == HTTPStatus.OK:
            full_content += response.output.choices[0]['message']['content']
            api_reports(response, question)
        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'{question}:\n\n' + full_content)

def api_reports(output_response, text):
    time_now = time.strftime('%Y年%m月%d日%H点%M分%S秒', time.localtime())
    f = open(f'大模型调用记录/通义千文/{text}_{time_now}.json', 'w')
    output_json = json.dumps(output_response)
    f.write(output_json)
    f.close()
text = '为什么我保存response的json文件,content为空'
call_with_stream(text)

在这里插入图片描述
简单多模态
在这里插入图片描述

def simple_multimodal_conversation_call(img,question):
    messages = [
        {
            "role": "user",
            "content": [
                {"image": f"{img}"},
                {"text": f"{question}"}
            ]
        }
    ]
    response = dashscope.MultiModalConversation.call(model='qwen-vl-plus',
                                                     messages=messages)
    if response.status_code == HTTPStatus.OK:
        print(response.output.choices[0]['message']['content'][0]['text'])
    else:
        print(response.code)
        print(response.message)
img = 'https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg'
text = '这是什么?'
simple_multimodal_conversation_call(img, text)

在这里插入图片描述

参考

官网文档:https://help.aliyun.com/zh/dashscope/developer-reference/api-details#8d583410d7so6

### 调用通义大模型API的方法 为了调用通义(Qwen)大模型API,通常需要遵循一系列标准化流程以确保请求的有效性和安全性。这包括但不限于获得必要的认证凭证、理解API的具体参数需求以及掌握如何解析返回的数据结构。 #### 获取访权限与配置环境 首先,开发者应当注册成为平台用户并申请相应的API密钥。这一过程可能涉及填写详细的个人信息或者企业信息以便于审核人员确认身份合法性[^1]。一旦获得了合法使用的许可,则需按照官方文档指示安装依赖库或SDK,并设置好开发环境中所需的各类变量,比如`API_KEY`等敏感数据应妥善保管且不泄露给无关第三方。 #### 构建HTTP请求发送至Qwen服务器 当一切准备就绪之后,就可以着手编写程序向目标URL发起POST请求了。下面给出了一段Python代码作为示范: ```python import requests import json url = "https://api.qwen.com/v1/chat/completions" headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer YOUR_API_KEY' } data = { "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What's the weather like today?"}, {"role": "assistant", "content": ""} ], "max_tokens": 50, } response = requests.post(url, headers=headers, data=json.dumps(data)) print(response.json()) ``` 此段脚本展示了怎样组装消息体并通过HTTPS协议传递给远程主机;其中特别注意的是要替换掉示例中的`YOUR_API_KEY`为实际取得的那个令牌字符串[^2]。 #### 解析响应内容并处理异常情况 成功接收到回复后,应该立即对其进行初步验证——检查状态码是否正常(通常是2xx系列),再进一步提取有用的信息片段供后续逻辑运算使用。如果遇到错误提示,则依据报错详情采取相应措施加以修正,例如调整输入格式或是重试连接操作直至稳定为止。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值