3

模型微调平台 · 微调模型调用

目标:理解与模块一不同的鉴权方式,并完成一次纯文本请求

承接模块二:在 模型微调平台 打开「模型部署」页签 → 部署状态为部署成功 → 查看访问凭据 / 接口文档。 接口细节见 模型部署 API。 若还没有凭据,先完成模块二的转换与部署。 获取密钥后可用本页 匿名在线验证器 完成调用验证: 请求由本站服务端转发,凭据不会保存且仅用于当前请求;页面不会生成包含密钥的 curl 命令。

从平台获取凭据

「模型部署」列表状态为部署成功后,打开该条的 API / 访问凭据(弹窗标题多为「API接口」),即可看到地址与密钥:

部署后的 API 接口凭据

图 3-1 部署成功后的「API接口」:访问地址、文档入口、APP_ID / APP_KEY(请妥善保管密钥,请勿以明文写入前端代码)

  • API 访问地址https://api-ai.vivo.com.cn/sft/chat/completions
  • API 密钥:复制 APP_IDAPP_KEY(请使用「API接口」弹窗中显示的完整凭据替换示例值)
  • 需要时可点「API接口文档」对照请求体字段
  1. 打开「API接口」弹窗,复制 APP_ID / APP_KEY

    平台提供通用 API:你在自己的程序里调用接口、处理返回结果即可。请妥善保管密钥,请勿以明文写入前端代码或上传至公开代码库。

部署与调用

图 3-2 云平台部署后:获取凭据后调用云端 API(本模块)或走端侧下载(模块四)

鉴权(与模块一不同)

text
POST https://api-ai.vivo.com.cn/sft/chat/completions
Authorization: Bearer sk-xuanji-{app_id}-{base64.b64encode(app_key).decode()}
Content-Type: application/json

官方文档 id=1865 一致:先对 APP_KEY 原文做 UTF-8 Base64,再按规定格式组成 Bearer 鉴权值。

匿名在线模型验证器

填写凭据与提问内容后,可通过本站同源接口验证已部署模型。凭据仅用于本次请求,不会保存。

凭据仅用于本次请求,不会保存

模型回答


        
  1. 用上方工具完成一次纯文本在线调用验证

    若调用失败,先核对模块二是否已完成「转换成功 → 部署成功」,并使用最新 APP_ID / APP_KEY;勿与模块一 AppKey 混用,勿对 APP_KEY 重复 Base64。

Python 参考(摘自官方文档 id=1865)

下面与文档「完整调用代码示例」中的鉴权与纯文本调用一致,请只改 APP_ID / APP_KEY

python
import base64
import requests

# ================= 1. 基础配置 =================
APP_ID = "your_app_id"       # 替换为「API接口」里的 APP_ID
APP_KEY = "your_app_key"     # 替换为「API接口」里的 APP_KEY(原文,请勿预先进行 Base64 编码)
URL = "https://api-ai.vivo.com.cn/sft/chat/completions"

# ================= 2. 鉴权(与文档 get_auth_headers 相同) =================
def get_auth_headers():
    b64_app_key = base64.b64encode(APP_KEY.encode("utf-8")).decode()
    return {
        "Authorization": f"Bearer sk-xuanji-{APP_ID}-{b64_app_key}",
        "Content-Type": "application/json",
    }

def call_model(messages, max_tokens=2048, temperature=0.1):
    payload = {
        "messages": messages,
        "temperature": temperature,
        "max_tokens": max_tokens,
    }
    resp = requests.post(URL, json=payload, headers=get_auth_headers(), timeout=120)
    print("HTTP", resp.status_code, resp.text[:500])  # 排查时优先检查原始返回
    resp.raise_for_status()
    return resp.json()["choices"][0]["message"]["content"]

# ================= 3. 纯文本单轮 =================
if __name__ == "__main__":
    text_msgs = [
        {"role": "user", "contentType": "text", "content": "请解释什么是量子力学?"}
    ]
    print("AI 答复:\n", call_model(text_msgs, max_tokens=512))
💡
常见误用:使用平台中已打码或截断的 KEY;对 APP_KEY 重复进行 Base64 编码;或误将模块一的 AppKey 用于拼接 sk-xuanji。以上操作均会导致调用失败。 APP_KEY 应是「API接口」弹窗里可复制的完整原文(通常一串字母数字)。

进阶实践

  • 图文:先一条 contentType=image(data URL),再一条 text
  • 多轮:user / assistant 交替
  • 接入作品服务端