1 请求参数
model指定要调用的模型ID。请参考 服务管控 > 模型服务列表 获取。
messages可选值:
[{"role": "user", "content": [...]}]表示对话上下文的消息列表。其中,role 用于标识消息发送方, content 则为包含文本和图像信息的数组。
role可选值:
useruser表示用户的问题
content可选值:--
包含文本和图像信息的数组
type: text用户的文本输入
image_url图像数据, 包含一个 url 字段
url图像的URL或者Base64编码的图像数据
stream可选值:
true 或 false,默认值为 false指定是否采用流式响应模式。若设置为 true,系统将逐步返回生成的回复内容;否则,将一次性返回完整响应
temperature可选值:取值为[0,1],默认值为0.7
核采样阈值。用于决定结果随机性,取值越高随机性越强即相同的问题得到的不同答案的可能性越高
max_tokens可选值:取值为[1,8192],默认值为2048
限制生成回复的最大 token 数量
示例:
json
[{"role": "user","content": [{"type": "text","text": "这题的答案是什么"},{"type": "image_url","image_url": {"url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbQAA..."}}]}]2 请求示例
如果想使用 HTTP 请求的流式输出,请参考如下实例:
python
from openai import OpenAI
api_key = "<从服务管控页面获取 对应服务的APIKey>" 请替换为您的 API Key
api_base = "http://maas-api.cn-huabei-1.xf-yun.com/v1"
client = OpenAI(api_key=api_key,base_url=api_base)
try:
response = client.chat.completions.create(
model="<从服务管控页面获取 对应服务的ModelID>", 请根据实际情况替换为您的 Model ID
messages=[{"role": "user","content": [{"type": "text","text": "这题的答案是什么"},{"type": "image_url","image_url": {"url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbQAA..."}}]}],
stream=True,
temperature=0.7,
max_tokens=8192)
full_response = ""for chunk in response:if hasattr(chunk.choices[0].delta, 'content') and chunk.choices[0].delta.content is not None:
content = chunk.choices[0].delta.contentprint(content, end="", flush=True) 实时打印每个片段
full_response += content
print("\n\n ------完整响应:", full_response)
except Exception as e:print(f"Error: {e}")3 响应
- 成功响应示例
流式响应会返回一系列的事件(data-only server-sent events),每个事件都是一个JSON对象,称为数据块(chunk)。
下面是几个响应数据块的示例:
(1)数据块 1 (包含内容)
json
{"id": "cht000b920a@dx194e0205ccbb8f3700","object": "chat.completion.chunk","created": 1738927005,"model": "xqwen2d5s32bvl","choices": [{"index": 0,"delta": {"role": "assistant","content": "这张图"},"finish_reason": null}]}(2)数据块 2 (继续包含内容)
json
{"id": "cht000b920a@dx194e0205ccbb8f3700","object": "chat.completion.chunk","created": 1738927005,"model": "xqwen2d5s32bvl","choices": [{"index": 0,"delta": {"content": "标显示的是..."},"finish_reason": null}]}(3)结束数据块 (finish_reason 为 stop)
json
{"id": "cht000b920a@dx194e0205ccbb8f3700","object": "chat.completion.chunk","created": 1738927005,"model": "xqwen2d5s32bvl","choices": [{"index": 0,"delta": {},"finish_reason": "stop"}],"usage": {"prompt_tokens": 44,"completion_tokens": 42,"total_tokens": 86}}- 异常结果示例
http
Error: Error code: 403 - {'error': {'message': '该令牌无权使用模型:xqwen2d5s32bvl (request id: 2025020809381060443349905703260)', 'type': 'one_api_error'}}- 响应数据参数
在流式响应中,每个数据块(chunk)都包含以下字段:
id唯一标识符,标识本次对话调用的唯一ID。
object对象类型,对于流式响应,其值为 chat.completion.chunk。
created响应生成时间的Unix时间戳(秒级)。
model实际调用的模型名称。
choices包含模型生成回复候选项的数组。
index回复候选项在数组中的索引位置,从0开始。
delta包含增量消息内容的对象。
role在第一个数据块中出现,值为 assistant。
content模型生成的增量回复文本内容。
finish_reason在最后一个数据块中出现,指示回复生成结束的原因,如 "stop"。
usage在最后一个数据块中出现(需在请求中加入stream_options={"include_usage": True}),包含token使用统计信息。
completion_tokens回复文本消耗的token数量。
prompt_tokens输入prompt消耗的token数量。
total_tokensprompt与回复消耗token数量的总和。