通过API接口进行标准化,能让开源模型以更加轻量和迅速的方式被开发者使用起来,并集成到不同的AI应用中。魔搭通过API-Inference,支持广大开发者无需本地的GPU和环境设置,就能轻松的依托不同开源模型的能力,展开富有创造力的尝试,与工具结合调用,来构建多种多样的AI应用原型。
Note:当前API-Inference处于公测beta状态,欢迎大家使用后及时提供反馈。
前提条件:创建账号并获取Token#
API-Inference面向魔搭注册用户免费提供,请在登陆后获取您专属的Token。具体可以参见账号注册和登陆以及Token的管理等相关文档。
使用方法#
大语言模型 LLM#
当前魔搭平台提供的免费模型推理API,针对大语言模型提供OpenAI API兼容的接口。 对于LLM模型的API,使用前,请先安装OpenAI SDK:
pip install openai
安装后就可以通过标准的OpenAI调用方式使用。具体调用方式,在每个模型页面右侧的API-Inference范例中以提供,请以模型页面的 API-Inference 示范代码为准,尤其例如对于reasoning模型,调用的方式与标准LLM会有一些细微区别。以下范例仅供参考。
from openai import OpenAI client = OpenAI( api_key="MODELSCOPE_SDK_TOKEN", # 请替换成您的ModelScope SDK Token base_url="https://api-inference.modelscope.cn/v1/" ) response = client.chat.completions.create( model="Qwen/Qwen2.5-Coder-32B-Instruct", # ModleScope Model-Id messages=[ { 'role': 'system', 'content': 'You are a helpful assistant.' }, { 'role': 'user', 'content': '用python写一下快排' } ], stream=True ) for chunk in response: print(chunk.choices[0].delta.content, end='', flush=True)
在这个范例里,针对魔搭平台提供的API,适配的有几个地方:
- base url: 指向魔搭的服务
https://api-inference.modelscope.cn/v1/
- api_key: 使用魔搭的SDK token, 可以从您的魔搭账号中获取:魔搭社区
- 模型名字(model):使用魔搭上开源模型的Model Id,例如
Qwen/Qwen2.5-Coder-32B-Instruct
视觉模型#
对于视觉VL模型,同样可以通过OpenAI API调用,例如:
from openai import OpenAI client = OpenAI( api_key="MODELSCOPE_SDK_TOKEN", # 请替换成您的ModelScope SDK Token base_url="https://api-inference.modelscope.cn/v1" ) response = client.chat.completions.create( model="Qwen/QVQ-72B-Preview", # ModleScope Model-Id messages = [ { "role": "system", "content": [ {"type": "text", "text": "You are a helpful and harmless assistant. You are Qwen developed by Alibaba. You should think step-by-step."} ], }, { "role": "user", "content": [ { "type": "image_url", "image_url": {"url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/QVQ/demo.png"} }, { "type": "text", "text": "What value should be filled in the blank space?" }, ], } ], stream=True ) for chunk in response: print(chunk.choices[0].delta.content, end='', flush=True)
文生图模型#
支持API调用的模型列表,可以通过AIGC模型页面进行搜索。 API的调用示例如下:
import json import requests from io import BytesIO from PIL import Image endpoint = "https://api-inference.modelscope.cn/v1/images/generations" payload = { "model": 'MAILAND/majicflus_v1', # ModelScope Model-Id "prompt": "A mysterious girl walking down the corridor." } response = requests.post( url = "https://api-inference.modelscope.cn/v1/images/generations", headers = { "Authorization": "Bearer <ModelScope-SDK-TOKEN>", # <ModelScope-SDK-TOKEN> 请替换成您的ModelScope SDK Token "Content-Type": "application/json" }, data = json.dumps( payload, ensure_ascii=False).encode('utf-8'), ) # get output image image_url = response.json()['images'][0]['url'] image = Image.open(BytesIO(requests.get(image_url).content)) image.save("result_image.jpg")
更多参数说明
参数名 | 参数说明 | 是否必须 | 参数类型 | 示例 | 取值范围 |
model | 模型id | 是 | string | MAILAND/majicflus_v1 | ModelScope上的AIGC 模型ID |
prompt | 正向提示词,大部分模型建议使用英文提示词效果较好。 | 是 | string | A mysterious girl walking down the corridor. | 长度小于2000 |
negative_prompt | 负向提示词 | 否 | string | lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry | 长度小于2000 |
size | 生成图像分辨率大小 | 否 | string | 1024x1024 | SD系列:[64x64,2048x2048],FLUX:[64x64,1024x1024] |
seed | 随机种子 | 否 | int | 12345 | [0,2^31-1] |
steps | 采样步数 | 否 | int | 30 | [1,100] |
guidance | 提示词引导系数 | 否 | float | 3.5 | [1.5,20] |
使用限制#
- 魔搭免费推理API,旨在为开发者提供迅速免费的便捷模型调用方式,请勿用于需要高并发以及SLA保障的线上任务,如有商业化使用的需求,建议使用各商业化平台的API。
- 免费推理API由阿里云提供算力支持,要求您的ModelScope账号必须绑定阿里云账号后才能正常使用。
- 当前我们为每位魔搭注册用户,提供了每天2000个请求的使用容量**。
- 实际允许的调用并发,会根据平台的压力进行动态的速率限制调整。
** 注意:处于资源考虑,平台可能对于部分模型进行单独的限制,例如对于deepseek-ai/DeepSeek-V3-0324,当前配置了单模型每天50次的调用限制。
支持的模型范围#
公测beta期间,API-Inference首先为魔搭平台上的部分开源大语言模型(LLM),多模态模型(MLLM),以及AIGC专区文生图模型等,提供可直接使用的API。
API-Inference覆盖的模型范围,主要根据模型在魔搭社区中的关注程度(参考了点赞,下载等数据)来判断。因此,在能力更强,关注度更高的下一代开源模型发布之后,支持的模型清单也会持续迭代。开发者可根据模型页面的过滤条件直接筛选,根据标记有“蓝绿色闪电”的 API-Inference logo 来判断。
同时在模型详情页面右侧,对于支持API-Inference的模型,也会展示使用入口和对应的代码范例。