# 精调服务_HTTP协议

# 1. 接口说明

协议 :HTTP 请求方法:POST

若使用 http client 的方式,直接发起request请求,地址如下:

https://maas-api.cn-huabei-1.xf-yun.com/v1/chat/completions

若使用 openai sdk,url地址如下:

https://maas-api.cn-huabei-1.xf-yun.com/v1

部分模型因为部署原因可能略有差异,具体可参考服务管控 > 模型服务列表右侧调用信息。

# 2. 接口请求

# 2.1 请求示例

下面基于openAI SDK请求的 Python Demo 示例:

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="<从服务管控获取要访问服务的serviceID>",
        messages=[{"role": "user", "content": "你好"}],
        stream=False,
        temperature=0.7,
        max_tokens=4096,
        extra_headers={"lora_id": "0"},  
        stream_options={"include_usage": True} 
    )

    print(response.choices[0].message.content)
    
except Exception as e:
    print(f"Error: {e}")

注意:在执行此代码之前,请务必替换 api_key 为您的API Key。

如果想使用 HTTP 请求的 流式输出,请参考如下实例:

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="<从服务管控获取要访问服务的serviceID>",
        messages=[{"role": "user", "content": "你好"}],
        stream=True,
        temperature=0.7,
        max_tokens=4096,
        extra_headers={"lora_id": "0"},  
        stream_options={"include_usage": True} 
    )

    full_response = ""
    for chunk in response:
        # 只对支持深度思考的模型才有此字段
        if hasattr(chunk.choices[0].delta, 'reasoning_content') and chunk.choices[0].delta.reasoning_content is not None:
            reasoning_content = chunk.choices[0].delta.reasoning_content
            print(reasoning_content, end="", flush=True)  # 实时打印思考模型输出的思考过程每个片段
        
        if hasattr(chunk.choices[0].delta, 'content') and chunk.choices[0].delta.content is not None:
            content = chunk.choices[0].delta.content
            print(content, end="", flush=True)  # 实时打印每个片段
            full_response += content
    
    print("\n\n ------完整响应:", full_response)    
except Exception as e:
    print(f"Error: {e}")

注意:在运行此代码之前,请务必替换 api_key 为您的API Key。

# 2.2 请求参数

参数 类型 是否必填 要求 说明
model string 指定要调用的对话生成模型ID
messages array [{"role": "user", "content":"用户输入内容"}] 表示对话上下文的消息列表,支持多轮对话交互。其中,role 用于标识消息发送方(例如 user 表示用户、assistant 表示模型回复、 system 用以设置对话背景信息),content 则为实际文本内容。
stream boolean 取值为 truefalse,默认值为 false 指定是否采用流式响应模式。若设置为 true,系统将逐步返回生成的回复内容;否则,将一次性返回完整响应
temperature float 取值为[0,1],默认值为0.7 核采样阈值。用于决定结果随机性,取值越高随机性越强即相同的问题得到的不同答案的可能性越高
max_tokens int 取值为[1,32768],默认值为2048 限制生成回复的最大 token 数量,max_tokens的限制需要满足输入promptToken + 设置参数max_tokens <= 32768 - 1,参数设置过大可能导致回答中断,请酌情调整,建议取值16384以下
extra_headers object 默认值为{"lora_id": "0"} 通过传递 lora_id 加载特定的LoRA模型
stream_options object 默认值为{"include_usage": True} 针对流式响应模式的扩展配置,如控制是否在响应中包含API调用统计信息等附加数据。

# 2.2.1 messages 参数说明

messages 参数用于传递对话内容,包括用户输入和 AI 回复

字段 含义 数据类型 取值范围 默认值 说明
role 角色 string system,user,assistant 通过system设置对话背景信息,user表示用户的问题,assistant表示AI的回复
content 文本内容 string -- 该角色的对话内容

示例:单轮交互 单轮交互只需要传递一个user角色的数据

[
    {"role": "user", "content": "你会做什么?"}  
]

示例:多轮交互 多轮交互需要将之前的交互历史按照user->assistant->user->assistant规则进行拼接,并保证最后一条是user的当前问题。

[
    {"role": "user", "content": "你好"},
    {"role": "assistant", "content": "你好!"},
    {"role": "user", "content": "你是谁?"},
    {"role": "assistant", "content": "我是 Spark API。"},
    {"role": "user", "content": "你会做什么?"}
]

# 3. 接口响应

# 3.1 响应示例

# 3.1.1 成功响应示例

Response: ChatCompletion(
    id='cht000b920a@dx194e0205ccbb8f3700',
    choices=[
        Choice(
            finish_reason='stop',
            index=0,
            logprobs=None,
            message=ChatCompletionMessage(
                content='大模型回复',
                refusal=None,
                role='assistant',
                audio=None,
                function_call=None,
                tool_calls=None
            )
        )
    ],
    created=1738927005,
    model=None,
    object='chat.completion',
    service_tier=None,
    system_fingerprint=None,
    usage=CompletionUsage(
        completion_tokens=42,
        prompt_tokens=44,
        total_tokens=86,
        completion_tokens_details=None,
        prompt_tokens_details=None
    )

# 3.1.2 异常结果示例

Error: Error code: 403 - {'error': {'message': '该令牌无权使用模型:xqwen257bxxx (request id: 2025020809381060443349905703260)', 'type': 'one_api_error'}}

# 3.2 响应数据参数

字段说明如下:

字段名 类型 字段说明
id string 唯一标识符,标识本次对话调用的唯一ID,用于跟踪和调试
choices array 包含模型生成回复候选项的数组
  •finish_reason string 指示回复生成结束的原因,如"stop"
  •index int 回复候选项在数组中的索引位置,从0开始
  •logprobs object 如启用token概率日志,则返回具体信息
  •message object 描述回复消息内容的对象,其内部字段如下
    ◦content string 模型生成的回复文本内容
    ◦reasoning_content string 模型生成的思考文本内容(支持深度思考的模型才有此字段)
    ◦refusal object 模型拒绝回答时返回拒绝信息
    ◦role string 消息发送方,通常为"assistant"
    ◦audio object 如支持语音回复则返回音频数据
    ◦function_call objec 模型调用外部函数时返回调用信息
    ◦tool_calls object 模型调用工具时返回调用详情,
created int 响应生成时间的Unix时间戳(秒级)
model string 实际调用的模型名称
object string 表示响应对象类型
service_tier string 表示调用所属的服务层级
system_fingerprint string 系统指纹或配置标识
usage object 包含token使用统计信息,其内部字段如下:
  •completion_tokens int 回复文本消耗的token数量
  •prompt_tokens int 输入prompt消耗的token数量
  •total_tokens int prompt与回复消耗token数量的总和
  •completion_tokens_details object 回复生成过程中token的详细统计信息,若无则为null
  •prompt_tokens_details object prompt部分token的详细统计信息

# 4 . 错误码列表

错误码 原因 解决方案
401-无效的身份验证 身份验证无效。 确保使用正确的API密钥及请求组织。
401-提供的API密钥不正确 请求的API密钥不正确。 检查所用API密钥是否正确,清除浏览器缓存或生成新的密钥。
403-不支持的国家、地区或领土 您正在从不支持的国家、地区或领土访问API。 请参考相关页面获取更多信息。
429-请求速率限制已达上限 您发送请求过快。 控制请求频率,阅读速率限制指南。
429-超出当前配额,请检查计划和计费详情 您的额度已用尽或已达到每月最高消费限制。 购买更多额度或了解如何提高使用限制。
500-服务器处理请求时发生错误 服务器内部出现问题。 稍后重试请求;若问题持续,请联系我们查看状态页面。
503-引擎当前过载,请稍后重试 服务器流量过大。 稍候重试您的请求。
在线
咨询
建议
反馈
体验
中心