前言

作为一名NLP开发者,你可能每天都在和Prompt打交道——无论是情感分类、实体抽取,还是让大模型“看图说话”。但你是否想过:摆脱庞大的SDK,只用一行fetch,就能同时驾驭文本理解和图像生成?

本文将带你从Prompt在NLP中的经典应用出发,一路进阶到多模态图像生成,并手把手演示如何用原生HTTP请求调用阿里云通义万象(qwen-image)API,通过多张参考图+文本指令精准生成新图像。全文无SDK依赖,只有最纯粹的fetch实战。


一、Prompt在NLP中的“基本功”:情感推断与信息提取

Prompt(提示)是引导大语言模型完成特定任务的输入。在纯文本领域,它早已被证明是“四两拨千斤”的利器。

1. 情感推断(Sentiment Inference)

通过设计简单的Prompt,可以让模型判断一段文本的情感倾向。

Prompt: 请判断下面评论的情感是「正面」还是「负面」。
评论:等了两个小时才上菜,服务员还板着脸。
情感:

模型输出:负面

更高级的用法包括Few-shot Prompting(给几个例子再提问)和Chain-of-Thought(引导模型逐步推理)。

2. 信息提取(Information Extraction)

从非结构化文本中抽取出结构化信息,例如命名实体识别、关系抽取。

Prompt: 从以下文本中提取「人名」「组织名」「地点」。
文本:马斯克在SpaceX总部宣布,星舰将于2026年从火星基地起飞。
输出格式:JSON

模型输出:{"人名":"马斯克","组织名":"SpaceX","地点":"火星基地"}

核心洞察:无论任务多么复杂,Prompt本质上都是用自然语言向模型下达清晰的指令。而当我们把这种能力扩展到“图像+文本”的多模态场景时,Prompt的魔力被再次放大。


二、跨入多模态:从文本生成到图像生成

传统图像生成(如GAN)需要大量训练数据。如今,多模态大模型允许我们通过自然语言+视觉输入来生成或编辑图像。

  • 文本到图像Prompt = “一只穿西装的柴犬” → 模型输出图像。

  • 多模态Prompt文本指令 + 参考图像1 + 参考图像2 → 模型综合理解并生成新图像。

这就像给了模型三样东西:“图1的人物 + 图2的裙子 + 图3的姿势” → 它就能生成“图1的女生穿着图2的裙子摆出图3的姿势”这张新图。这才是Prompt工程在视觉领域的杀手级应用


三、实战:用原生Fetch调用多模态生成API

很多人习惯用OpenAI SDK(如openai.createImage),但它的本质也不过是一次HTTP请求。用原生fetch的好处是:

  • 无需安装和维护SDK版本

  • 可以直接看到请求/响应的全貌,方便调试

  • 轻松切换不同厂商的API(阿里云、月之暗面、讯飞等)

下面我们以阿里云DashScope的通义万象(qwen-image-2.0-pro)为例,演示如何通过fetch发送多模态生成请求。

3.1 准备工作

  1. 注册阿里云账号,开通DashScope服务,获取API Key

  2. 在项目中安装dotenv(用于管理密钥)。

npm install dotenv
  1. 创建.env文件:

DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx

3.2 完整的图像生成代码(Node.js环境)

import dotenv from 'dotenv';
dotenv.config();

async function generateMultiModalImage() {
  const API_KEY = process.env.DASHSCOPE_API_KEY;
  const API_URL = 'https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation';

  // 构造请求体 —— 这是Prompt的核心!
  const requestBody = {
    model: 'qwen-image-2.0-pro',
    input: {
      messages: [
        {
          role: 'user',
          content: [
            // 参考图1: 人物
            { image: 'https://example.com/person.png' },
            // 参考图2: 裙子
            { image: 'https://example.com/skirt.png' },
            // 参考图3: 姿势
            { image: 'https://example.com/pose.png' },
            // 文本指令
            { text: '图1中的女生穿着图2中的黑色裙子,按图3的姿势坐下' }
          ]
        }
      ]
    },
    parameters: {
      // 可选:生成图片尺寸、数量等
      size: '1024*1024',
      n: 1
    }
  };

  try {
    const response = await fetch(API_URL, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${API_KEY}`
      },
      body: JSON.stringify(requestBody)
    });

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }

    const result = await response.json();
    console.log('生成成功,返回数据:', result);

    // 阿里云返回的图片URL通常位于 output.choices[0].message.content[0].image
    const generatedImageUrl = result.output?.choices?.[0]?.message?.content?.[0]?.image;
    if (generatedImageUrl) {
      console.log('图片地址:', generatedImageUrl);
    }
    return result;
  } catch (error) {
    console.error('请求失败:', error);
  }
}

generateMultiModalImage();

3.3 关键点解析

组成部分 作用 说明
URL 多模态生成服务的入口 阿里云固定地址,不同厂商不同
Method: POST 创建资源 比GET更安全,请求体可携带复杂数据
Headers.Authorization 身份认证 Bearer ${API_KEY} 格式
Headers.Content-Type 告诉服务器请求体是JSON 必须是application/json
Body 真正的Prompt内容 包含messages数组,每个元素可混合imagetext

3.4 为什么这个Prompt设计很妙?

我们用了 三张参考图 + 一段文本指令

  • { image: ... } 提供视觉锚点(人物、衣服、姿势)

  • { text: ... } 描述它们之间的组合关系

模型需要同时理解:

  • 图1里谁是“女生”

  • 图2中哪件是“黑色裙子”

  • 图3的“姿势”是什么角度

这种多图联合推理能力,是纯文本Prompt无法实现的,也是多模态大模型真正的价值所在。


四、从Demo到生产:你需要注意的4个细节

  1. 图片URL必须可公开访问
    阿里云/OpenAI等服务的图像输入通常要求图片是公网可访问的URL,或使用Base64编码(部分平台支持)。测试时可以使用图床或阿里云OSS。

  2. Prompt越具体,生成越精准
    对比:
    ❌ “改一下这张图”
    ✅ “将图1中女生的蓝色连衣裙换成图2中的红色外套,背景保持原样”

  3. 处理异步与重试
    图像生成往往需要几秒到十几秒,记得设置超时和重试逻辑。

  4. 成本控制
    多模态生成消耗的Token数(或调用次数)通常高于纯文本,建议限制生成图片数量(parameters.n=1)。


五、扩展:把HTTP请求封装成你的专属“SDK”

你可以轻松封装一个通用函数,适配不同厂商的API:

async function callMultiModalAPI(provider, promptImages, textInstruction) {
  const endpoints = {
    aliyun: 'https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation',
    openai: 'https://api.openai.com/v1/images/generations',  // OpenAI暂不支持多图输入,需用其他接口
    // 其他厂商...
  };
  // 根据provider构造不同的请求体...
}

这样,你既享受了fetch的轻量,又保留了对底层逻辑的完全控制。


总结

阶段 技术本质 Prompt示例
NLP情感推断 文本 → 类别 “判断这句话是正面还是负面:...”
NLP信息提取 文本 → JSON “从文本中抽出人名、地名”
文本生成图像 文本 → 图像 “一只穿西装的柴犬”
多模态生成 图像+文本 → 新图像 “图1的人 + 图2的裙子 + 图3的姿势”

无论任务如何变化,Prompt始终是连接人类意图与模型能力的桥梁。而原生fetch则是最轻量、最透明的桥梁建设工具——它让你不被任何SDK绑架,赤裸裸地看到HTTP请求的每个字节。

希望这篇文章能帮你打开思路:下次想要调用大模型时,不妨直接打开浏览器控制台或Node.js REPL,用几行fetch就验证你的Prompt设计。

掌握了Prompt + fetch,你就拥有了调用一切大模型API的万能钥匙。 🔑


互动一下:你在实际项目中用过哪些“脑洞大开”的多模态Prompt?欢迎在评论区分享你的经验~

 

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐