小程序开放平台

文档中心
平台概述

createModel

更新时间:2025-10-31 14:45:14

createModel

方法概述

createModel
是智能体框架中用于创建 AI 模型实例的核心方法。该方法根据指定的模型名称返回一个模型对象,该对象提供了与 AI 模型交互的能力,包括流式和非流式的文本生成功能。

基本信息

  1. 函数签名
    createModel(model: string): ReactModel
  2. 服务 URI 【不支持外部调用】- 内部方法
  3. 返回类型
    ReactModel
    - 模型实例对象
  4. 调用方式 内部方法,在
    sendMessage
    等方法中调用

功能说明

  • 模型实例化:根据模型名称创建对应的 AI 模型实例
  • 统一接口:提供统一的模型调用接口,屏蔽不同模型的差异
  • 流式支持:支持流式和非流式两种文本生成方式
  • 多模态支持:部分模型支持文本、图片等多模态输入

支持的模型

模型名称
类型
描述
参数文档
deepseek-r1文本生成深度求索推理模型,支持复杂推理任务阿里云百炼控制台
qwen-turbo文本生成通义千问快速模型,适合一般对话场景待补充
qwen-vl-plus多模态通义千问视觉语言模型,支持图片理解待补充
其他模型待定更多模型正在接入中待服务端补充

返回对象说明

ReactModel 对象

createModel
方法返回一个
ReactModel
对象,该对象包含以下主要方法:

1. streamText() - 流式文本生成

方法签名

streamText(options: StreamTextOptions): AsyncIterable<ModelResponse>

功能:以流式方式调用模型生成文本,适合实时对话场景

参数

typescript
interface StreamTextOptions {
  messages: Message[];  // 消息数组
  temperature?: number; // 温度参数(可选)
  max_tokens?: number;  // 最大生成长度(可选)
}

2. generateText() - 非流式文本生成

方法签名

generateText(options: GenerateTextOptions): Promise<ModelResponse>

功能:一次性生成完整文本,适合批量处理场景

参数

typescript
interface GenerateTextOptions {
  messages: Message[];  // 消息数组
  temperature?: number; // 温度参数(可选)
  max_tokens?: number;  // 最大生成长度(可选)
}

使用示例

基础使用示例

class MyAgent extends AgentRuntime {
    async sendMessage(input) {
        try {
            // 1. 创建模型实例
            const model = this.createModel('deepseek-r1');
            
            // 2. 构建消息
            const messages = [
                {
                    role: 'system',
                    content: '你是一个有用的AI助手。'
                },
                {
                    role: 'user',
                    content: JSON.parse(input.msg).msg
                }
            ];
            
            // 3. 流式调用
            const modelResponse = await model.streamText({ messages });
            
            // 4. 处理响应
            for await (const chunk of modelResponse) {
                this.sseSender.send({ data: chunk });
            }
            
        } catch (error) {
            console.error('Model error:', error);
        } finally {
            this.sseSender.end();
        }
    }
}

多模态使用示例

class MultiModalAgent extends AgentRuntime {
    async sendMessage(input) {
        try {
            const parsedInput = JSON.parse(input.msg);
            const model = this.createModel('qwen-vl-plus'); // 多模态模型
            
            const messages = [
                {
                    role: 'system',
                    content: '你是一个可以理解图片的AI助手。'
                },
                {
                    role: 'user',
                    content: parsedInput.image ? [
                        { type: 'text', text: parsedInput.msg },
                        { type: 'image_url', image_url: { url: parsedInput.image } }
                    ] : parsedInput.msg
                }
            ];
            
            const modelResponse = await model.streamText({ 
                messages,
                temperature: 0.7,
                max_tokens: 1000
            });
            
            for await (const chunk of modelResponse) {
                this.sseSender.send({ data: chunk });
            }
            
        } catch (error) {
            console.error('MultiModal error:', error);
        } finally {
            this.sseSender.end();
        }
    }
}

非流式调用示例

class BatchAgent extends AgentRuntime {
    async processBatch(inputs) {
        const model = this.createModel('qwen-turbo');
        const results = [];
        
        for (const input of inputs) {
            try {
                const response = await model.generateText({
                    messages: [
                        { role: 'user', content: input.text }
                    ],
                    temperature: 0.5
                });
                
                results.push({
                    input: input.text,
                    output: response.choices[0].message.content
                });
                
            } catch (error) {
                results.push({
                    input: input.text,
                    error: error.message
                });
            }
        }
        
        return results;
    }
}

注意事项

⚠️ 重要提醒

  1. 模型选择:根据任务需求选择合适的模型(推理、对话、多模态等)
  2. 参数调优:合理设置
    temperature
    max_tokens
    参数
  3. 错误处理:模型调用可能失败,需要适当的错误处理
  4. 资源管理:流式调用需要正确管理连接和资源
  5. 成本考虑:不同模型的调用成本不同,请根据实际需求选择

类型声明

typescript
// 模型创建函数
function createModel(modelName: string): ReactModel;

// 消息类型
interface Message {
  role: 'system' | 'user' | 'assistant';
  content: string | Array<{type: string; text?: string; image_url?: {url: string}}>;
}

// 模型响应类型
interface ModelResponse {
  choices: Array<{
    message: {
      role: string;
      content: string;
      type?: string;
    };
  }>;
  usage?: {
    prompt_tokens: number;
    completion_tokens: number;
    total_tokens: number;
  };
}