小程序开放平台

文档中心
简介(函数式智能体)
开发框架(函数式智能体)
访问与调用(函数式智能体)
调用多模态能力(函数式智能体)
智能体如何在小组件中集成
如何使用多模态能力
模型的出入参标准

模型的出入参标准

开发
>
框架
>
模型的出入参标准
>
更新时间:2025-11-04 16:19:22

本文档说明不同模型的输入参数和输出格式标准,帮助开发者正确使用各个模型。

通用输入参数格式

所有模型都使用统一的

ModelRequestOptions
接口:

typescript
interface ModelRequestOptions {
  /** 
   * 异步模式(可选)
   * 注意:仅图片生成模型(QwenImage等)支持,文本模型不支持
   * 生效:❌ 文本模型忽略此参数
   */
  async?: boolean;
  
  /** 
   * 模型名称(SDK会自动设置)
   * 注意:用户调用 streamText/generateText 时不需要传递此字段
   * SDK 会自动从模型实例中获取并设置,用户传入的值会被覆盖
   * 生效:❌ 会被 SDK 覆盖
   */
  model: ModelName | string;
  
  /** 
   * 最大生成token数(可选)
   * 默认值:1000(DefaultSimpleModel),2000(QwenVlMax),2000(QwenDocTurbo)
   * 范围:1 - 8000(QwenDocTurbo),1 - 无限制(其他模型)
   * 生效:✅ 所有模型都支持
   */
  max_tokens?: number;
  
  /** 
   * 温度参数,控制生成文本的随机性(可选)
   * 默认值:0.7(DefaultSimpleModel),1.0(QwenVlMax/QwenDocTurbo)
   * 范围:0.0 - 2.0
   * 值越大,输出越随机;值越小,输出越确定
   * 生效:✅ 所有模型都支持
   */
  temperature?: number;
  
  /** 
   * 核采样参数,控制词汇选择的多样性(可选)
   * 默认值:1.0
   * 范围:0.0 - 1.0
   * 生效:✅ 所有模型都支持
   */
  top_p?: number;
  
  /** 
   * 生成候选数量限制(可选)
   * 默认值:1
   * 范围:1 - 10(QwenDocTurbo),1 - 无限制(其他模型)
   * 生效:✅ 所有模型都支持
   */
  n?: number;
  
  /** 
   * 会话ID(可选)
   * 注意:仅 DefaultSimpleModel 会发送到后端,是否生效取决于后端支持
   * 生效:⚠️ 部分模型/后端支持
   */
  conversation_id?: string;
  
  /** 
   * 频率惩罚,减少重复内容(可选)
   * 默认值:0.0
   * 范围:-2.0 - 2.0
   * 生效:✅ 所有模型都支持
   */
  frequency_penalty?: number;
  
  /** 
   * 存在惩罚,鼓励新话题(可选)
   * 默认值:0.0
   * 范围:-2.0 - 2.0
   * 生效:✅ 所有模型都支持
   */
  presence_penalty?: number;
  
  /** 
   * 是否流式输出(可选)
   * 默认值:true
   * 注意:调用 streamText 方法时,此参数会被强制设置为 true
   * 生效:❌ streamText 强制为 true,generateText 可以设置为 false
   */
  stream?: boolean;
  
  /** 
   * 平台工具列表(可选)
   * 注意:仅 DefaultSimpleModel 会发送到后端,是否生效取决于后端支持
   * 生效:⚠️ 部分模型/后端支持
   */
  platform_tools?: Array<{
      plantform_tool_id: string;
      payload: any;
  }>;
  
  /** 
   * 消息数组(必需)
   * 包含对话历史,支持 system、user、assistant 角色
   * 支持文本和多模态内容(图片、文档等)
   * 生效:✅ 所有模型都支持,必需参数
   */
  messages?: Array<{
      role: string;
      content: string | MultiModalContent[];
  }>;
  
  /** 
   * 知识库检索配置(可选)
   * 注意:仅 DefaultSimpleModel 会发送到后端,是否生效取决于后端支持
   * 生效:⚠️ 部分模型/后端支持
   */
  knowledge_base?: Array<{
      knowledge_base_id: string;
      search_mode?: "vector" | "full_text" | "hybrid";
      limit?: number;
      score_threshold?: number;
  }>;
  
  /** 
   * 数据库操作配置(可选)
   * 注意:仅 DefaultSimpleModel 会发送到后端,是否生效取决于后端支持
   * 生效:⚠️ 部分模型/后端支持
   */
  db_base?: any[];
  
  /** 
   * 是否启用思考模式(可选)
   * 默认值:false
   * 适用于:deepseek-r1 等推理模型
   * 生效:✅ DefaultSimpleModel 和 QwenVlMax 支持,QwenDocTurbo 不支持
   */
  enable_thinking?: boolean;
  
  /** 
   * 是否启用联网搜索功能(可选)
   * 默认值:false
   * 生效:✅ DefaultSimpleModel 和 QwenVlMax 支持,QwenDocTurbo 不支持
   */
  enable_search?: boolean;
  
  /** 
   * 额外参数对象(可选)
   * 注意:仅 QwenDocTurbo 支持,用于传递模型特定的额外参数
   * 生效:✅ QwenDocTurbo 支持,其他模型忽略
   */
  parameters?: any;
}

通用输出格式

所有模型的流式输出都遵循统一的

ChatCompletion
格式:

typescript
interface ChatCompletion {
  id: string;                       // 响应ID
  log_id: string;                    // 日志ID
  object: string;                   // 对象类型,如 "chat.completion.chunk"
  created: number;                  // 创建时间戳
  model: string;                     // 模型名称
  code: number;                      // 错误码,0表示成功
  error: string;                     // 错误信息
  choices: Array<{                  // 选择项数组
    index: number;
    message?: {                      // 完整消息(非流式或最后一个chunk)
      id: string;
      role: "assistant";
      type: MessageType;             // 消息类型
      content?: string;              // 内容
      reasoning_content?: string;    // 推理内容(deepseek-r1特有)
    };
    delta?: {                        // 增量内容(流式响应)
      content?: string;              // 增量文本
      reasoning_content?: string;    // 增量推理内容
      role?: "assistant";
    };
    finish_reason: string | null;    // 完成原因:STOP、error等
  }>;
  usage: {                          // Token使用统计
    prompt_tokens: number;
    completion_tokens: number;
    knowledge_tokens: number;
    reasoning_tokens: number;
    total_tokens: number;
  };
}

qwen-turbo

模型类型:文本生成模型
适用场景:通用对话、文本生成、问答

输入参数

javascript
const model = this.createModel('qwen-turbo');

const messages = [
  {
    role: 'system',
    content: '你是一个AI助手'
  },
  {
    role: 'user',
    content: '你好'  // 纯文本内容
  }
];

const response = await model.streamText({
  messages,
  max_tokens: 1000,
  temperature: 0.7,
});

输出格式

流式响应(streamText)

javascript
for await (const chunk of response) {
  // 流式内容在 message 中
  const content = chunk?.choices?.[0]?.message?.content;

  // 发送给客户端
  this.sseSender.send({ data: chunk });
}

典型 chunk 结构

{
  "id": "674147096081051648",
  "model": "qwen-turbo",
  "object": "chat.completion.chunk",
  "created": 1762239593037,
  "choices": [{
    "index": 0,
    "message": {
      "content": "AI",
      "role": "assistant"
    },
    "finish_reason": null
  }]
}

最后一个 chunk(finish)

{
  "choices": [{
    "message": {
      "id": "674147096081051648",
      "role": "assistant",
      "type": "answer",
      "content": ""
    },
    "finish_reason": "STOP"
  }],
  "usage": {
    "prompt_tokens": 43,
    "completion_tokens": 8,
    "total_tokens": 51
  }
}

qwen-vl-max

模型类型:多模态模型
适用场景:图片理解、图文对话、视觉问答

输入参数

javascript
const model = this.createModel('qwen-vl-max');

const messages = [
  {
    role: 'user',
    content: [
      {
        type: 'text',
        text: '请描述这张图片'
      },
      {
        type: 'image_url',
        image_url: {
          url: 'https://example.com/image.jpg',
          detail: 'high'  // 可选:auto, low, high
        }
      }
    ]
  }
];

const response = await model.streamText({
  messages,
  max_tokens: 2000,
  temperature: 1.0,
});

输出格式

流式响应格式

{
  "id": "...",
  "model": "qwen-vl-max",
  "choices": [{
    "index": 0,
    "delta": {
      "content": "这是一张..."
    },
    "finish_reason": null
  }]
}

特点

  • 使用
    delta.content
    获取流式文本
  • 支持图片和文本混合输入
  • 输出为纯文本描述

qwen-doc-turbo

模型类型:文档处理模型
适用场景:PDF解析、文档理解、文档问答

输入参数

javascript
const model = this.createModel('qwen-doc-turbo');

const messages = [
  {
    role: 'user',
    content: [
      {
        type: 'text',
        text: '请分析这份文档'
      },
      {
        type: 'doc_url',
        doc_url: ['https://example.com/doc.pdf'],
        file_parsing_strategy: 'auto'  // auto 或 text_only
      }
    ]
  }
];

const response = await model.streamText({
  messages,
  max_tokens: 2000,
});

输出格式

流式响应格式

{
  "id": "...",
  "model": "qwen-doc-turbo",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "type": "answer",
      "content": "文档内容..."
    }
  }]
}

特点

  • 使用
    message.content
    获取内容(SDK内部已处理增量)
  • 支持 PDF、Word 等文档格式
  • 自动提取文档文本和结构

deepseek-r1

模型类型:推理模型
适用场景:复杂推理、数学计算、逻辑分析

输入参数

javascript
const model = this.createModel('deepseek-r1');

const messages = [
  {
    role: 'system',
    content: '你是一个推理专家'
  },
  {
    role: 'user',
    content: '解决这个数学问题:...'
  }
];

const response = await model.streamText({
  messages,
  max_tokens: 1000,
  enable_thinking: true,  // 启用思考模式
});

输出格式

流式响应格式(带推理内容)

{
  "id": "...",
  "model": "deepseek-r1",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "type": "answer",
      "content": "最终答案",
      "reasoning_content": "思考过程:..."  // 特有字段
    }
  }]
}

特点

  • 使用
    message.content
    获取最终答案
  • 使用
    message.reasoning_content
    获取思考过程
  • 需要设置
    enable_thinking: true
    启用推理
  • 流式响应中可能同时包含
    content
    reasoning_content

内容提取最佳实践

通用提取函数

javascript
function extractContent(chunk) {
  const choice = chunk?.choices?.[0];
  if (!choice) return { content: '', reasoning_content: '' };
  
  // 优先使用 delta(流式响应)
  if (choice.delta) {
    return {
      content: choice.delta.content || '',
      reasoning_content: choice.delta.reasoning_content || ''
    };
  }
  
  // 其次使用 message(完整消息)
  if (choice.message) {
    return {
      content: choice.message.content || '',
      reasoning_content: choice.message.reasoning_content || ''
    };
  }
  
  return { content: '', reasoning_content: '' };
}

// 使用示例
for await (const chunk of modelResponse) {
  const { content, reasoning_content } = extractContent(chunk);
  
  if (content) {
    // 处理文本内容
    this.sseSender.send({ data: chunk });
  }
  
  if (reasoning_content) {
    // 处理推理内容(deepseek-r1)
    console.log('思考过程:', reasoning_content);
  }
}

错误处理

javascript
for await (const chunk of modelResponse) {
  // 检查错误
  if (chunk.code || chunk.message || chunk?.choices?.[0]?.finish_reason === 'error') {
    const errorMsg = chunk.message || '未知错误';
    console.error('模型错误:', errorMsg);
    // 发送错误信息给客户端
    this.sseSender.send({
      data: {
        choices: [{
          message: {
            content: `错误: ${errorMsg}`,
            type: 'error'
          },
          finish_reason: 'error'
        }]
      }
    });
    return;
  }
  
  // 正常处理
  this.sseSender.send({ data: chunk });
}

模型格式对比表

模型
流式内容位置
推理内容
多模态支持
特殊说明
qwen-turbo
delta.content
标准文本模型
qwen-vl-max
delta.content
✅ 图片支持图片输入
qwen-doc-turbo
message.content
✅ 文档SDK已处理增量
deepseek-r1
message.content
需启用
enable_thinking

调试技巧

1. 打印完整 chunk 结构

javascript
for await (const chunk of modelResponse) {
  console.log('完整chunk结构:', JSON.stringify(chunk, null, 2));
  this.sseSender.send({ data: chunk });
}

2. 检查关键字段

javascript
const chunk = /* ... */;

console.log('模型:', chunk.model);
console.log('错误码:', chunk.code);
console.log('Delta内容:', chunk?.choices?.[0]?.delta?.content);
console.log('Message内容:', chunk?.choices?.[0]?.message?.content);
console.log('完成原因:', chunk?.choices?.[0]?.finish_reason);