掘金 人工智能 12小时前
国产AI大模型API入门指南:从文本生成到图片解析
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入介绍了如何通过Node.js调用阿里云百炼平台(通义千问)的AI大模型API,涵盖了从基础的文本情感分析,到利用Function Calling实现天气查询等工具调用,再到多模态能力的应用,包括图像理解和OCR文字提取。文章强调了API兼容OpenAI协议的重要性,它极大地降低了开发者的迁移成本,并加速了工具链的统一。通过具体的代码示例,展示了模型调用、参数配置及结果处理的详细流程,为开发者快速集成和应用国产AI大模型提供了实践指导。

📦 **API兼容性驱动生态发展**:国内主流AI大模型平台如阿里云百炼、火山方舟等纷纷兼容OpenAI风格的API协议,旨在降低开发者迁移成本,加速工具链(如LangChain)的统一,并实现模型即插即用,体现了生态效率驱动下的标准化趋势。

💬 **文本生成与输出控制**:通过阿里云百炼的通义千问模型,可以实现如舆情分析等文本生成任务。关键在于利用system prompt设定AI角色和输出格式,例如强制模型仅返回“正向”或“负向”等简洁结果,以满足自动化分析需求。

🛠️ **Function Calling实现工具调用**:利用qwen-turbo模型,可以通过Function Calling功能让大模型调用外部工具(如天气查询)。核心流程包括定义工具函数、设置模型工具调用参数,并处理两轮对话:模型先决策调用哪个函数,执行后将结果反馈给模型生成最终回答。

🖼️ **多模态能力拓展应用**:阿里云百炼的通义千问模型支持多模态输入,能够处理图像和文本的联合输入。例如,使用qwen-vl-plus模型可以实现“看图说话”或图文问答;而qwen-vl-ocr-latest模型则能从车票、发票等图片中提取结构化文字信息,并以JSON格式输出,极大丰富了AI的应用场景。

🚀 **国产AI生态的机遇与挑战**:文章指出,国产AI大模型API的开放为开发者提供了强大的能力接入。同时,对于有更高自定义需求的用户,也可以考虑部署开源大模型,形成“自部署 + API调用”的双轨并行架构,以实现更灵活的模型控制和成本优化。

国产AI大模型API入门指南:从文本生成到工具调用

一行代码调用千模之力,中国AI生态正迎来黄金时代

在AI大模型爆发的今天,API已成为连接智能能力与现实应用的桥梁。无论是通义千问、DeepSeek还是百度文心,越来越多企业通过开放API,让开发者无需从头训练就能集成顶尖AI能力。但一个现实问题是:不同平台的API协议各异,调用方式五花八门,开发成本陡增。

一、为什么大模型平台都在做API兼容?

生态效率驱动标准化。当前国内主流平台如阿里云百炼、火山方舟、DeepSeek、Moonshot等,纷纷兼容OpenAI风格的API协议,背后是三大动因:

    降低开发者迁移成本:OpenAI已成为事实标准,兼容其协议可吸引庞大开发者生态加速工具链统一:如LangChain、LlamaIndex等框架已内置OpenAI适配器促进模型即插即用:通过统一接口,开发者可灵活切换不同模型供应商

以阿里云百炼为例,它虽自研底层架构,却完整支持OpenAI SDK调用——这正是生态智慧的体现。

二、API基础:从文本生成到工具调用

通过Node.js调用阿里云百炼API,需要先注册。

注册阿里云百炼新用户领千万Tokens免费额,点击开通,学习完全够用!!!

示例代码

1. 文本生成(阿里云百炼实战)

1-API使用/1-情感分析-文本chat-Qwen.js

/** * 第一个文本生成对话应用 * OpenAI文本聊天功能测试应用 * 集成OpenAI SDK实现简单的文本对话功能,阿里云通义千问API * 模型:qwen-plus */import { initOpenAI } from './initOpenAI.js';async function main() {  const completion = await initOpenAI().chat.completions.create({    model: "qwen-plus",  //模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models    messages: [      { role: "system", content: "你是一名舆情分析师,帮我判断产品口碑的正负向,回复请用一个词语:正向 或者 负向" },      { role: "user", content: "这款音乐软件很棒" }    ],  });  console.log(JSON.stringify(completion.choices[0].message, null, 2))}main();

输出

{ "role": "assistant", "content": "正向"}
核心参数解析

    model: "qwen-plus"

      指定阿里云百炼平台的大模型(通义千问增强版),需在平台申请API Key并配置。模型列表参考:阿里云官方模型文档。

    messages 消息结构

      role: system:设定AI角色为舆情分析师,强制约束输出格式(仅返回"正向/负向")。

      { role: "system", content: "你是一名舆情分析师...回复请用一个词语:正向 或者 负向" }

      role: user:用户输入待分析的文本,如"这款音乐软件很棒"

    输出控制

      通过system prompt的严格指令,确保返回结果精简为单次(如"正向"),避免冗余解释。
2. 工具调用-一个天气查询

大模型在面对实时性问题、数学计算等问题时可能效果不佳。可以使用 Function Calling 功能,通过引入外部工具,使得大模型可以与外部世界进行交互。1-API使用/2-天气-FunctionCall-Qwen.js

/** * Function Call使用 - 天气查询功能 * 实现天气查询Function Call,支持查询城市的天气信息 *  * 关键技术点: * 1. 使用阿里云百炼平台的qwen-turbo模型 * 2. 实现OpenAI兼容的Function Calling功能 * 3. 完整的两轮对话流程(模型决策->函数执行->结果生成) */import { initOpenAI } from './initOpenAI.js';/** * 获取指定地点的天气信息(模拟函数) * @param {string} location - 地点名称 * @param {string} unit - 温度单位,默认为"摄氏度" * @returns {string} 天气信息的JSON字符串 *  * 关键说明: * - 实际项目中应替换为真实天气API调用 * - 返回的JSON字符串将作为后续模型的输入 */function getCurrentWeather({ location, unit = "摄氏度" }) {  // 模拟数据(大连固定返回10度,其他城市36度)  const weatherInfo = {    location: location,    temperature: location.includes('大连') ? 10 : 36,    unit: unit,    forecast: ["晴天", "微风"]  };  return JSON.stringify(weatherInfo);}/** * 工具函数映射对象 * 关键说明: * - 用于动态调用工具函数(此处只有getCurrentWeather) * - 函数名必须与tools定义中的name严格一致 */const toolFunctions = { getCurrentWeather };/** * 工具定义(核心配置) * 关键参数解析: * - type: "function" - 声明这是一个函数工具 * - function.name: 必须与实际函数名一致(大小写敏感) * - function.description: 决定模型何时调用此函数的关键描述 * - parameters: 定义参数结构(JSON Schema格式) *   - properties: 定义每个参数的名称、类型和描述 *   - required: 声明必填参数 */const tools = [  {    type: "function",    function: {      name: "getCurrentWeather",      description: "Get the current weather in a given location.",      parameters: {        type: "object",        properties: {          location: {             type: "string",             description: "The city and state, e.g. San Francisco, CA"           },          unit: {             type: "string",             enum: ["celsius", "fahrenheit"] // 限制可选值          }        },        required: ["location"] // 必须提供location参数      }    }  }];/** * 获取模型响应 * @param {Array} messages - 消息历史数组 * @param {Array} tools - 工具定义数组 * @returns {Promise<Object>} API响应对象 *  * 关键参数说明: * - model: "qwen-turbo" - 指定使用的阿里云百炼模型 * - messages: 包含role为system/user/assistant的对话历史 * - tools: 传入工具定义数组 * - tool_choice: "auto" - 让模型自主决定是否调用工具 */async function getModelResponse(messages, tools) {  const openai = initOpenAI();  return await openai.chat.completions.create({    model: "qwen-turbo",    messages: messages,    tools: tools,    tool_choice: "auto" // 也可指定为{"type: "function", function: {name: "getCurrentWeather"}}强制调用  });}/** * 主对话流程 * 关键流程说明: * 1. 初始化系统提示和用户问题 * 2. 第一次调用API获取模型响应 * 3. 检查是否需要调用工具函数 * 4. 执行工具函数并追加结果到对话历史 * 5. 第二次调用API获取最终回复 */async function main() {  const userQuery = "大连的天气怎样";  const messages = [    {      role: "system",      content: "你是一个很有帮助的助手。如果用户提问关于天气的问题,请调用天气查询函数。回答时请使用友好语气。",    },    { role: "user", content: userQuery }  ];  // 第一轮API调用:模型决策阶段  console.log('[1] 发送初始请求...');  const firstResponse = await getModelResponse(messages, tools);  const assistantMessage = firstResponse.choices[0].message;  messages.push(assistantMessage);  console.log('[2] 模型首次响应:', JSON.stringify(assistantMessage, null, 2));  // 检查工具调用  if (assistantMessage.tool_calls) {    const toolCall = assistantMessage.tool_calls[0];    console.log('[3] 检测到工具调用:', toolCall.function.name);        // 解析参数并执行函数    const args = JSON.parse(toolCall.function.arguments);    console.log('[4] 函数参数:', args);    const functionResult = toolFunctions[toolCall.function.name](args);    console.log('[5] 函数执行结果:', functionResult);    // 追加工具执行结果到对话历史    messages.push({      role: "tool",      tool_call_id: toolCall.id, // 必须与调用请求的ID匹配      content: functionResult    });    // 第二轮API调用:生成最终回复    console.log('[6] 发送工具执行结果给模型...');    const finalResponse = await getModelResponse(messages, tools);    console.log('[7] 最终回复:', JSON.stringify(finalResponse.choices[0].message, null, 2));  } else {    console.log('模型未触发工具调用,直接返回结果');  }}// 启动对话console.log("启动天气查询对话系统...");main().catch(err => console.error('流程执行出错:', err));
启动天气查询对话系统...[1] 发送初始请求...[2] 模型首次响应: {  "content": "",  "role": "assistant",  "tool_calls": [    {      "function": {        "name": "getCurrentWeather",        "arguments": "{\"location\": \"大连\"}"      },      "index": 0,      "id": "call_5ffd203437414791a0a4c7",      "type": "function"    }  ]}[3] 检测到工具调用: getCurrentWeather[4] 函数参数: { location: '大连' }[5] 函数执行结果: {"location":"大连","temperature":10,"unit":"摄氏度","forecast":["晴天","微风"]}[6] 发送工具执行结果给模型...[7] 最终回复: {  "content": "大连现在的天气是晴天,气温为10摄氏度,微风。",  "role": "assistant"}
3. 多模态实践

什么是多模态(Multimodal)

多模态 是指模型能够同时处理并理解多种类型的数据输入,比如:

甚至结构化数据或传感器数据,在本例中:

模型接受了 图像(image_url)文本提问(text) 的联合输入,并输出对图片内容的理解结果(比如画面内容描述、对象识别、场景判断等)。这类多模态模型可以执行“看图说话”、“图文问答”、“图像摘要”等任务,是目前最前沿的AI能力之一。

3.1-图片分析-视觉理解-多模态-Qwen copy.js

/** * 图片分析功能 - 多模态对话 * 使用通义千问API分析图片内容 * 支持图片URL和文本输入,输出图片分析结果 */import { initOpenAI } from './initOpenAI.js'; // 初始化通义千问兼容OpenAI风格的客户端实例async function main() {  // 定义图像URL(可以是任意公网可访问的图片)  const imageUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg";  // 调用通义千问 qwen-vl-plus 模型进行多模态对话(支持图像+文字)  const response = await initOpenAI().chat.completions.create({    model: "qwen-vl-plus", // 多模态模型,支持图像与文字联合理解    messages: [      {        role: "user",        content: [          // 输入的图片内容,类型为 image_url          { type: "image_url", image_url: { url: imageUrl } },          // 对图片提出的问题(图文混合输入)          { type: "text", text: "图中描绘的是什么景象?" }        ]      }    ],  });  // 输出模型对图像及问题的分析结果  console.log("API响应:", response.choices[0].message.content);}main(); // 执行主函数
API响应: 图中描绘的是一幅温馨和谐的海滩景象。画面中有一个人和一只狗在沙滩上互动。具体细节如下:1. **人物**:一位女性坐在沙滩上,穿着格子衬衫和黑色裤子,面带微笑,显得非常开心和放松。她的姿态自然,似乎在与狗进行友好互动。2. **动物**:一只金毛犬坐在女性面前,戴着彩色的项圈,看起来很温顺。它正伸出前爪,与女性的手相触碰,显示出一种友好的交流。3. **环境**:背景是广阔的海洋和天空,海浪轻轻拍打着岸边,远处的海水呈现出柔和的蓝色调。天空的颜色渐变,可能是日出或日落时分,光线温暖而柔和,给整个场景增添了一种宁静和美好的氛围。4. **氛围**:整体画面给人一种轻松愉快的感觉,展现了人与宠物之间的亲密关系以及与自然环境的和谐共处。阳光洒在沙滩上,使得整个场景显得格外温暖和美丽。这张照片捕捉到了一个简单而美好的瞬间,体现了生活中人与宠物之间的情感纽带以及与大自然的亲近感。

参考图片

1-API使用/3.2-文字提取-多模态-Qwen.js

/** * 文字提取功能 - 多模态对话 * 使用通义千问API提取图片中的文字内容 * 支持图片URL和文本输入,输出JSON格式的文字数据 */import { initOpenAI } from './initOpenAI.js'; // 引入通义千问 OpenAI 兼容 SDK 初始化模块async function main() {  // 图片地址:此处为一张车票图像,必须是公网可访问的 URL  const imageUrl = "https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg";  // 调用多模态 OCR 模型(专用于图像文字识别及结构化抽取)  const response = await initOpenAI().chat.completions.create({    model: "qwen-vl-ocr-latest", // 模型名称:通义千问 OCR 多模态模型,适合结构化文档识别    messages: [      {        role: "user",        content: [          // 图像输入:用于识别的车票图像          { type: "image_url", image_url: { url: imageUrl } },          // 任务指令:使用自然语言明确指定要提取的字段          {            type: "text",            text: `请提取车票图像中的发票号码、车次、起始站、终点站、发车日期和时间点、座位号、席别类型、票价、身份证号码、购票人姓名。要求准确无误地提取上述关键信息,不要遗漏,也不要捏造虚假信息。对于模糊或强光遮挡导致无法识别的字符,请用英文问号 ? 替代。返回格式请使用 JSON,结构如下:{'发票号码':'xxx','车次':'xxx','起始站':'xxx','终点站':'xxx','发车日期和时间点':'xxx','座位号':'xxx','席别类型':'xxx','票价':'xxx','身份证号码':'xxx','购票人姓名':'xxx'}`          }        ]      }    ]  });  // 输出提取结果(控制台打印 JSON 格式)  console.log("API响应:", response.choices[0].message.content);}main(); // 执行主程序
{    "发票号码": "2432911680400000000",    "车次": "G1948",    "起始站": "南京南站",    "终点站": "郑州东站",    "发车日期和时间点": "11:46开",    "座位号": "04车12A号",    "席别类型": "二等座",    "票价": "337.50",    "身份证号码": "4107281991****5515",    "购票人姓名": "读小光"}

这部分内容展示了如何通过 Node.js 使用阿里云百炼平台(通义千问)的 API,实现从基础文本生成到多模态感知的完整应用流程。以下是总结与说明:

三、API 基础能力总结

1. 文本生成:舆情分析


2. 工具调用(Function Calling):天气查询


3. 多模态能力(图文结合)

📸 图像理解
🧾 图像文字提取(OCR)

🧭 还有更多 API 值得探索(可参考阿里云百炼控制台)

    代码生成与解释:构建编程助手。语义搜索:智能问答系统、知识库检索。音频转文本 / 语音问答:打造语音助手。视频内容分析:理解视频片段、生成视频摘要。长文本摘要 / 文本翻译:文档处理、跨语言沟通。角色扮演对话:客服机器人、教育陪练。结构化信息提取:合同字段抽取、信息聚合等。

📌 建议下一步:你可以尝试自定义函数并结合模型使用(如股票价格查询、日历提醒等),打造你自己的 AI 工具箱。

总结

通过上文我们可以看到,阿里云百炼等平台已经提供了统一、兼容 OpenAI API 的调用方式,让开发者可以快速接入通义千问的文本生成、多模态理解、OCR识别等强大能力。但平台调用并非唯一选择,对于有更高自定义需求、私有化部署要求或成本控制目标的团队来说,也可以选择在本地或云端自行部署 DeepSeek、Moonshot、LLaMA、Qwen 等开源大模型,形成“自部署 + API 调用”双轨并行的架构。这样不仅可以避免部分调用限制,还能根据业务场景灵活控制模型精度、推理速度与成本。

下篇内容我们将重点介绍如何部署 DeepSeek 大模型,以及如何通过 API 对接,实现类似 OpenAI 的推理调用体验。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

AI大模型 API调用 通义千问 Function Calling 多模态AI
相关文章