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
总结
- 了解百炼支持的模型以及对应的API参考文档,请参考模型列表
- 通过Web界面创建大模型应用,请参考0代码构建私有知识问答应用
- 通过API创建Agent,请参考添Assistant API
- 通过对话框与大模型互动,请访问模型体验
- 零代码进行大模型微调,请参考在控制台使用模型调优
- 部署自己的专有模型,请参考模型部署