【常见大模型API调用】第二篇:阿里巴巴--通义千问

1.公司及模型介绍

嗯,公司介绍就省了吧
通义千问系列
在这里插入图片描述
在这里插入图片描述
详情来这里看吧
阿里巴巴大模型服务平台-百炼

2.通义千文API调用

注册账号:如果没有阿里云账号,您需要先注册阿里云账号。注册或者登录账号

开通百炼:前往百炼控制台,如果页面顶部显示以下消息,您需要开通百炼的模型服务,以获得免费额度。如果未显示该消息,则表示您已经开通。
在这里插入图片描述
获取API Key:在控制台的右上角选择API-KEY,然后创建API Key,用于通过API调用大模型
在这里插入图片描述

2.1 单次会话

参考API开发文档大模型服务平台百炼使用手册

from openai import OpenAI
import time

def aliChat(api_key, question):

    client = OpenAI(
        api_key=api_key,
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",)
    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            {'role': 'user', 'content': question}],
    )

    print(completion.model_dump_json())


if __name__ == '__main__':
    api_key = "sk-xxxx"
    question = "易建联是是谁?,最近他发生了什么事情?"
    strat = time.time()
    aliChat(api_key, question)
    end = time.time()

易建联是中国著名的男子篮球运动员,出生于1987年10月27日,广东鹤山人。他在CBA(中国男子篮球职业联赛)的广东宏远队效力多年,并且是中国国家男子篮球队的重要成员之一。易建联以其出色的身体素质、全面的技术和在场上的领导力而闻名,在国内乃至国际篮坛都有很高的知名度。\n\n关于易建联最近的情况,因为信息更新可能会有延迟,我无法提供最新的具体事件。不过,可以肯定的是,作为一位资深的职业球员,易建联一直活跃在篮球领域,无论是参加比赛还是进行训练,都在为篮球事业贡献自己的力量。如果您想了解他最新的动态,建议关注相关的体育新闻或者官方社交媒体平台,这样可以获得最及时的信息。
此次调用花费时间为:9.5357秒

呦,最近事件没有啊?通义千问网页上试试
在这里插入图片描述
看来API没有支持联网搜索啊。
哦,发现了,添加参数enable_search,设置为true可支持联网,如下:

   
completion = client.chat.completions.create(
       model=self.model_map[self.index],
       messages=[
           {'role': 'system', 'content': 'You are a helpful assistant.'},
           {'role': 'user', 'content': question}],
       extra_body={
           "enable_search": True   # 为true是支持联网
       }
   )

2.2 模型自助选择

from openai import OpenAI
import time


class TongYiQinWen():
    def __init__(self, api_key, model_index):
        self.model_map = {
            1: "qwen-max",
            2: "qwen-plus",
            3: "qwen-turbo",
            4: "qwen-long",
            5: "qwen2.5-7b-instruct",
            6: "qwen2-7b-instruct"
        }
        self.api_key = api_key
        self.index = model_index


    def aliChat(self, question):

        print("此次使用的模型是{}".format(self.model_map[self.index]))
        client = OpenAI(
            api_key=self.api_key,
            base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",)
        completion = client.chat.completions.create(
            model=self.model_map[self.index],
            messages=[
                {'role': 'system', 'content': 'You are a helpful assistant.'},
                {'role': 'user', 'content': question}],
        )

        print(completion.model_dump_json())


if __name__ == '__main__':
    api_key = "sk-xxxxx"
    question = "简单介绍一下--菜菜2024"
    strat = time.time()
    Ty = TongYiQinWen(api_key, 6)
    Ty.aliChat(question)
    end = time.time()
    print(f"此次调用花费时间为:{(end-strat):.4f}秒")

还支持的模型,在模型列表中查找,添加在model_map就好了

2.3 多轮对话


import time
import os
from openai import OpenAI

def get_response(api_key, messages):
    client = OpenAI(
        api_key=api_key,
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    completion = client.chat.completions.create(model="qwen-plus", messages=messages)
    return completion


if __name__ == '__main__':
    api_key = "sk-xxxx"

    strat = time.time()

    messages = [
        {
            "role": "system",
            "content": """你是一名百炼手机商店的店员,你负责给用户推荐手机。手机有两个参数:屏幕尺寸(包括6.1英寸、6.5英寸、6.7英寸)、分辨率(包括2K、4K)。
            你一次只能向用户提问一个参数。如果用户提供的信息不全,你需要反问他,让他提供没有提供的参数。如果参数收集完成,你要说:我已了解您的购买意向,请稍等。""",
        }
    ]
    assistant_output = "欢迎光临百炼手机商店,您需要购买什么尺寸的手机呢?"
    print(f"模型输出:{assistant_output}\n")
    while "我已了解您的购买意向" not in assistant_output:
        user_input = input("请输入:")
        # 将用户问题信息添加到messages列表中
        messages.append({"role": "user", "content": user_input})
        assistant_output = get_response(api_key, messages).choices[0].message.content
        # 将大模型的回复信息添加到messages列表中
        messages.append({"role": "assistant", "content": assistant_output})
        print(f"模型输出:{assistant_output}")
        print("\n")

    end = time.time()
    print(f"此次调用花费时间为:{(end - strat):.4f}秒")

在这里插入图片描述

2.4 视觉模型-图片描述

通义千问VL是具有视觉(图像)理解能力的文本生成模型,不仅能进行OCR(图片文字识别),还能进一步总结和推理,例如从商品照片中提取属性,根据习题图进行解题等。


class TongYiQinWen():
    def __init__(self, api_key, model_index):
        self.model_map = {
            1: "qwen-max",
            2: "qwen-plus",
            3: "qwen-turbo",
            4: "qwen-long",
            5: "qwen-vl-v1",
            6: "qwen-vl-max",
        }
        self.api_key = api_key
        self.index = model_index
        
	 def aliImgDes(self, img_url):
	        print("此次使用的模型是{}".format(self.model_map[self.index]))
	        client = OpenAI(
	            api_key=self.api_key,
	            base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
	        )
	        completion = client.chat.completions.create(
	            model="qwen-vl-max",
	            messages=[{"role": "user", "content": [
	                {"type": "text", "text": "描述图片内容"},
	                {"type": "image_url",
	                 "image_url": {"url": img_url}}
	            ]}]
	        )
	        print(completion.model_dump_json())

if __name__ == '__main__':
    api_key = "sk-xxxx"
    img_url = "https://oss9.komect.com/userdeviceocr/test1.jpg"
    strat = time.time()
    Ty = TongYiQinWen(api_key, 6)
    Ty.aliImgDes(img_url)
    end = time.time()
    print(f"此次调用花费时间为:{(end-strat):.4f}秒")

此次使用的模型是qwen-vl-max
“这张图片展示了一个现代风格的客厅。客厅的墙壁主要是白色的,其中一面墙是橙色的,增加了空间的活力。墙上挂着几幅装饰画,其中一幅较大的画作位于沙发上方。沙发是灰色的,配有多个靠垫,显得非常舒适。茶几是圆形的,设计简洁,上面放着一些装饰品和茶具。\n\n电视挂在墙上,旁边有一个白色的架子,上面放着一些装饰品和书籍。房间的照明设计现代,天花板上安装了多个射灯,提供充足的光线。整体布局整洁,色彩搭配和谐,给人一种温馨和现代的感觉。”
此次调用花费时间为:7.6879秒

2.5 文生图大模型

在这里插入图片描述

from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis

prompt = '少女,高分辨率,增加细节,细节强化,侧面视角,森林,奶油风,暖色调,精致的脸部比例,精细的裙子,五官立体,长卷发,极高分辨率,清晰度强化,全身像,微笑,五颜六色的花瓣飞舞,自然光'


def async_call():
    print('----create task----')
    task_info = create_async_task()
    print('----wait task done then save image----')
    wait_async_task(task_info)


# 创建异步任务
def create_async_task():
    rsp = ImageSynthesis.async_call(model=ImageSynthesis.Models.wanx_v1,
                                    prompt=prompt,
                                    n=1,
                                    style='<auto>',
                                    size='1024*1024')
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output)
    else:
        print('create_async_task Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))
    return rsp


# 等待异步任务结束
def wait_async_task(task):
    rsp = ImageSynthesis.wait(task)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.task_status)
        # save file to current directory
        for result in rsp.output.results:
            file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
            with open('./%s' % file_name, 'wb+') as f:
                f.write(requests.get(result.url).content)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))


if __name__ == '__main__':
    async_call()

----create task----
{“status_code”: 200, “request_id”: “86fcdf77-da0b-927f-91ac-a27579197485”, “code”: “”, “message”: “”, “output”: {“task_id”: “fcdf63d8-a719-44d0-a031-0cca8ef276bf”, “task_status”: “PENDING”, “results”: []}, “usage”: null}
{“task_id”: “fcdf63d8-a719-44d0-a031-0cca8ef276bf”, “task_status”: “PENDING”, “results”: []}
----wait task done then save image----
{“status_code”: 200, “request_id”: “8bfc9b36-9291-9759-b273-88659e8b6718”, “code”: null, “message”: “”, “output”: {“task_id”: “fcdf63d8-a719-44d0-a031-0cca8ef276bf”, “task_status”: “SUCCEEDED”, “results”: [{“url”: “https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/1d/6c/20241021/1b61f1c0/b24339de-2625-4af9-9ad3-d71b9254e6e1-1.png?Expires=1729590935&OSSAccessKeyId=LTAI5tQZd8AEcZX6KZV4G8qL&Signature=Ra0kfwmLypVD9CSudcv2O28F0fs%3D”}], “submit_time”: “2024-10-21 17:55:08.603”, “scheduled_time”: “2024-10-21 17:55:08.658”, “end_time”: “2024-10-21 17:55:36.261”, “task_metrics”: {“TOTAL”: 1, “SUCCEEDED”: 1, “FAILED”: 0}}, “usage”: {“image_count”: 1}}
SUCCEEDED

在这里插入图片描述

总结

  1. 了解百炼支持的模型以及对应的API参考文档,请参考模型列表
  2. 通过Web界面创建大模型应用,请参考0代码构建私有知识问答应用
  3. 通过API创建Agent,请参考添Assistant API
  4. 通过对话框与大模型互动,请访问模型体验
  5. 零代码进行大模型微调,请参考在控制台使用模型调优
  6. 部署自己的专有模型,请参考模型部署
### 阿里云百炼 API Key 获取和使用方法 #### 注册账号并登录 为了获得阿里云百炼平台的API Key,需先访官方网站完成注册流程[^1]。输入有效的邮箱地址以及设置密码之后提交表单创建新用户。 #### 创建项目与实例 成功登陆后,在控制台内新建一个项目,并按照指引启动相应的服务实例。这一步骤对于后续申请特定于项目的密钥至关重要。 #### 获取API Key 进入指定页面填写必要的信息以请求专属的应用程序接口密钥(API Key)。通常情况下,此过程可能涉及提供应用名称、描述以及其他安全验证措施。 #### 使用API Key进行开发 一旦取得了API Key,就可以利用官方提供的SDK(支持多种主流编程语言如Java, Python等)将其集成到个人项目当中[^2]。例如,在Python环境中可以安装`aliyun-python-sdk-core`库并通过如下方式初始化客户端对象: ```python from aliyunsdkcore.client import AcsClient client = AcsClient('<your-access-key-id>', '<your-access-key-secret>', 'cn-hangzhou') ``` 上述代码片段展示了如何基于所获API凭证建立连接至阿里云的服务端点。 #### 实际应用场景案例 除了直接编码外,还有其他途径能够简化这一操作。比如在某些第三方平台上可以直接配置好环境变量或图形界面选项来间接运用这些认证资料。像Cherry Studio就允许用户轻松地将Deepseek功能嵌入其中而无需手动编写大量底层逻辑[^3];另外也有更简便的方式如RAG平台仅需上传文件即可快速上手尝试[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值