🤖✨ ChatGPT API深度体验:让AI看懂图片、听懂语音、调用你的代码

60 阅读6分钟

前言

当你让AI看懂医疗报告、实时翻译会议录音、甚至自动查询航班—— 这不再是科幻电影,而是ChatGPT API的日常操作!作为开发者2025年必备利器,它能:

  • 🌐 128K超长上下文:直接分析整本《三体》

  • 🖼️ 多模态交互:图文理解+语音转写

  • 🔌 函数调用:3行代码教会AI调用你的服务

  • .....

本文将手把手带你玩转这些「超能力」!

代码仓库: github.com/SuYxh/chatg…

如何使用 ChatGPT API

什么是 ChatGPT API 🌐

ChatGPT API 是 OpenAI 提供的一个接口,允许开发者将 ChatGPT 模型(如 GPT-3.5、GPT-4)集成到自己的应用中,比如网站、App、小程序、机器人等。它提供了强大的自然语言理解与生成能力,能够实现自然语言理解与生成、多轮对话、内容创作等多种功能。

简单理解:ChatGPT API = 让你的程序可以“直接调用 ChatGPT 智能大脑”!

ChatGPT API 的主要特点 📋

特点类别描述优势/用途
🤖 对话式结构使用 messages 实现多轮对话,支持 systemuserassistant角色上下文记忆强,模拟真实对话,非常适合聊天机器人、问答系统
🔧 模型选择支持 gpt-3.5-turbogpt-4gpt-4-turbo根据预算和性能灵活选择,GPT-4-Turbo 高性价比
🎛 参数可调节temperaturetop_pmax_tokens控制输出风格、创意度、回复长度,自定义对话风格
💬 流式响应支持 stream: true 实时输出结果类似打字机效果,提升用户体验,适合聊天界面或写作应用
🌍 多语言支持能处理中文、英文、日语、韩语、德语等几十种语言可用于国际化产品、多语言客服、全球化智能助手
🧠 上下文长度支持GPT-4-Turbo 最多支持 128K tokens可用于大文档问答、长文章摘要、代码分析等场景
🛠 函数调用支持 Function Calling、工具插件调用功能AI 可调用你的 API,具备实际执行能力,适合复杂业务场景

Token ✨

什么是 Token

Token 语言模型处理文本的基本单位。你可以理解为“比字小,比词粗”的单位。

  • 对于英文,一个 token 通常是 4 个字符左右,例如:
    • ChatGPT 是一个 token
    • is, a, great, tool 是 4 个 token
  • 对于中文,一个字一般就是 1 个 token(比如:“你好”是 2 个 token)

举个例子:

文本内容Token 数量估算
"Hello, how are you?"5 个 token
"今天天气真不错。"7 个 token(每个字或符号算一个)
Markdown/HTML 文本通常比字符数少 25~30%
英文论文一页(500词)约 700~800 token
中文一页(500字)约 500~600 token

Token计费规则

OpenAI 采用 输入****Token + 输出Token 的总量计费(包括输入+输出),不同模型价格不同。

👉 截至 2024 年的 GPT 模型定价(单位:USD 美元/ 1M tokens):platform.openai.com/docs/pricin…

img

如何查看Token消耗

  1. 使用 API 返回的 usage 字段(最直接)

每次你调用 ChatCompletion,返回结果里就会带有这个字段:

const { OpenAI } = require("openai");

const openai = new OpenAI({ apiKey: 'YOUR_KEY' });

async function getTokenUsage() {
  const response = await openai.chat.completions.create({
    model: "gpt-3.5-turbo",
    messages: [{ role: "user", content: "Hello" }]
  });

  console.log(`输入 token: ${response.usage.prompt_tokens}`);
  console.log(`输出 token: ${response.usage.completion_tokens}`);
  console.log(`总消耗: ${response.usage.total_tokens}`);
}


"usage": {
  "prompt_tokens": 600,
  "completion_tokens": 400,
  "total_tokens": 1000
}
  • prompt_tokens:输入消耗
  • completion_tokens:输出消耗
  • total_tokens:总 token,用来计费
  1. 使用官方工具手动估算

OpenAI 提供了一个可视化工具: 👉 Tokenizer 工具地址(OpenAI 官方)

你可以在这里粘贴任意文本,查看它将被分成多少个 token。

imgimg

🔍 为什么不同模型下 token 数不同?

原因是:**不同模型使用的 Tokenizer(分词器)不同。**OpenAI 每个模型在训练时,都会选择一个特定的分词方式(Tokenizer)。虽然这些 Tokenizer 都是基于 Byte Pair Encoding(BPE)方法,但它们的细节是有差异的:

模型使用的 Tokenizer 名称特点描述
GPT-3p50k_base原始 GPT-3 使用的 tokenizer,分词较细
Codex (代码模型)p50k_edit专为代码编辑优化的 tokenizer
GPT-3.5-Turbocl100k_base更高效、token 更少,适配新模型
GPT-4cl100k_base与 GPT-3.5-Turbo 一样,更统一,token 压缩更好

不同模型 = 不同的 tokenizer → 相同文本会分成不同数量的 token,这会影响成本、性能、估算结果

  1. 使用 tiktoken 工具

OpenAI 提供了一个 Python 库来计算 token:

import tiktoken

encoding = tiktoken.encoding_for_model("gpt-4")
text = "你好,世界"
tokens = encoding.encode(text)
print(f"Token 数量: {len(tokens)}")  # 输出 5

上下文窗口(Context Window)🔍

理解“上下文窗口”(context window)是核心关键之一。它直接影响你能发送多长的 prompt、多轮对话记忆、处理多大文档,以及……你要花多少钱 💸

什么是“上下文窗口”

上下文窗口(Context Window)就是:

模型一次“看得见”的 token 数量总上限(包括你的输入 + 它的输出)。

  • 它不是字符数,也不是字节数,而是 token
  • 超出这个窗口,模型就 “看不见”之前的内容了,相当于“忘掉”了

不同模型的上下文窗口大小

模型名称上下文窗口****大小(tokens)估算最大可处理字符数主要特点与说明
GPT-4.11,000,000~750,000 字符OpenAI 于 2025 年 4 月发布的最新旗舰模型,支持高达 100 万 tokens 的上下文窗口,适用于处理超长文本和复杂任务。
GPT-4 Turbo128,000~96,000 字符GPT-4 的高效版本,具有更大的上下文窗口和更低的成本,适用于需要处理长文本的应用场景。
GPT-48,192 / 32,768~6,000 / ~24,000 字符标准版本的 GPT-4,提供两个上下文窗口选项,适用于一般的文本生成和理解任务。
GPT-4o128,000~12,000 字符成本效益高的模型,适用于对上下文窗口要求不高的应用,如实时聊天和简单的文本处理。
GPT-3.5 Turbo16,385~96,000 字符多模态模型,支持文本、图像和语音输入,适用于多语言和多模态任务。

💡 记住:上下文 = 你的提问 + 系统提示 + 模型回答,总 token 不可超过此限制!

📦 举个例子:

你使用 GPT-4-turbo:

System prompt:1000 tokens  
用户对话历史(多轮):8000 tokens  
你当前提问:500 tokens  
模型生成的回复:只能用 128000 - 已用的 token

一旦你发送的内容 + 模型回复长度 > 128K,API 会报错或者自动截断前面的内容(可能丢失关键信息)。

成本也和上下文窗口密切相关

上下文越大 → token 越多 → 成本越高

发送内容长度回复长度使用 GPT-4-TurboToken 总数费用估算
1000 tokens1000 tokens2000$0.31 + $0.03 = $0.34
30,000 tokens1000 tokens31,000$0.31 + $0.03 = $0.34

建议的最佳实践:

场景做法建议
多轮对话控制历史轮数 / 精选上下文摘要 / 截断旧内容
长文处理(PDF、小说)切段处理,或使用 GPT-4-turbo 一次输入全文
自动摘要 / 归纳用 summary 替换旧对话,压缩 token 数量
成本优化用 GPT-3.5 处理简单内容,GPT-4 用在高价值场景

常用参数详解

在上述案例中只用了很基础的参数,比如 modelmessagestemperature。但实际上 ChatGPT API(尤其是 chat.completions 接口)支持更多参数,可以细致控制模型行为和生成效果。下面我将系统、详细、以开发者视角地总结一下每个常用参数。

参数概览

参数名类型作用建议与示例
modelstring指定使用哪个模型,比如 gpt-4, gpt-4o, gpt-3.5-turbo必填。根据需求选模型,比如长文本用 gpt-4o。 示例:model: 'gpt-4o'
messagesarray传递对话历史,控制上下文(每条消息包括 rolecontent必填。标准结构,系统、用户、助手角色示例:见下面细节
temperaturenumber控制生成内容的随机性。值越大,回答越随机越有创意通常设 0.2-1 正式场景稳定输出建议 0.2,创意内容建议 0.8 示例:temperature: 0.7
top_pnumber另一个随机性控制参数(Nucleus Sampling)。一般和 temperature 二选一通常不同时用。一般保留 temperature
ninteger一次生成多少个回答(选项)默认为 1。设为 2 或以上可以生成多版本回答供选择 示例:n: 3
streamboolean是否开启流式输出(边生成边返回)建议聊天产品使用,体验更好 示例:stream: true
stopstring[]string设定遇到特定文本就停止生成用于控制回答结构,比如遇到 "\\n\\n" 停止
max_tokensinteger限制单次输出最大 token 数量防止回答太长耗费过多 token 示例:max_tokens: 300
presence_penaltynumber惩罚模型重复提及新主题,提高内容多样性设为正数让回答更爱提新点子;设为负数更守旧 示例:presence_penalty: 0.6
frequency_penaltynumber惩罚模型在回答中重复同样的词句设为正数减少啰嗦;适合对内容要求紧凑的场景
logit_biasobject调整某些 token 出现概率(token -> -100~100 权重)高级用法,比如强制避免说某些话
userstring填用户唯一标识 ID,有助于模型行为分析和滥用检测可选。但建议加。示例:user: 'user-12345'
toolsarray定义可以让模型调用的外部函数(Function Calling)高级场景,如调用天气 API、数据库查询等

重点参数示范

messages
[
  { "role": "system", "content": "你是一个友善的写作助手。" },
  { "role": "user", "content": "帮我写一首关于春天的诗。" }
]
role说明
system设定 AI 的身份、语气、风格(非常重要)
user用户输入内容
assistantAI 回复内容(可选,构建多轮历史)
temperature vs top_p
  • temperature 高:更疯狂、有创意,比如写小说
  • temperature 低:更稳定、严肃,比如写法律文档
  • top_p 也控制“随机性”,但更温和,一般不与 temperature 同时调。

常规建议:只设 temperature 就够了,严肃文档设 0.2;创意文案设 0.7。

stream(流式返回)

适合做实时打字效果

stream: true
  • 服务器会一段一段发回来
  • 你需要监听 data 事件不断渲染内容
  • 用在聊天机器人体验非常自然
stop(停止词)

比如你想让回答到“END”就立刻停止:

stop: ["END"]

当生成到 END 时模型会停止继续输出。

stop 可以配置特定的词语就停止嘛?

max_tokens(控制输出长度)

假设你只想要一小段回答,怕模型废话太多:

max_tokens: 200

最大只生成 200 tokens 左右的文本(注意不是字符!)。

presence_penalty / frequency_penalty
  • presence_penalty 正数:鼓励引入新话题
  • frequency_penalty 正数:减少重复词

适合写作、聊天防止啰嗦时用。比如:

presence_penalty: 0.5,
frequency_penalty: 0.5

可以让回复更简洁、丰富。

tools(调用外部函数)

如果定义一个获取天气的函数:

tool: [
  {
    name: "get_weather",
    description: "获取指定城市天气",
    parameters: {
      type: "object",
      properties: {
        location: {
          type: "string",
          description: "城市名称"
        }
      },
      required: ["location"]
    }
  }
]

这样模型就能在需要时主动提出调用这个函数!

不同应用场景推荐参数表

应用场景推荐模型temperaturepresence_penaltyfrequency_penaltymax_tokens说明
文案创作(短文、广告语、标题)gpt-4o / gpt-4-turbo0.8~1.20.6~1.00.2~0.5500~1000高创意,强调新颖表达,不怕轻微偏离
技术文档撰写(标准化文档、说明书)gpt-4 / gpt-4-turbo0.2~0.40.0~0.20.0~0.21000~2000低温度,输出规范、严谨、连贯
智能客服对话gpt-3.5-turbo0.3~0.50.0~0.30.0~0.5500~1000要求稳定,且尽量避免废话、重复
长文档摘要 / 归纳总结gpt-4-turbo / gpt-4o0.2~0.40.0~0.20.0~0.21500~3000尽量客观总结,结构清晰
创意写作(小说、剧本、故事大纲)gpt-4o0.9~1.30.7~1.20.0~0.32000~5000鼓励想象力暴走,允许自由发挥
法律、合同、政策文案gpt-40.1~0.30.00.01000~3000要求准确、正式、逻辑清晰
代码生成 / 代码解释gpt-4o / gpt-4-turbo0.1~0.30.0~0.10.0~0.2500~2000低创意,强调正确、清晰、简洁
多轮聊天机器人gpt-3.5-turbo / gpt-4o0.6~0.80.5~0.70.2~0.4500~1500保持活泼又不过度偏题,适合对话系统
思维导图生成 / 头脑风暴gpt-4o1.0~1.50.8~1.50.0~0.21000~3000高自由度,输出尽可能多的想法

实操技巧与开发示例

代码仓库: github.com/SuYxh/chatg…

公共代码 utils/openai-client.js :

import OpenAI from 'openai';
import dotenv from 'dotenv';

dotenv.config();

const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});

export { openai };

ChatGPT 核心能力实操 ⚙️

自然语言理解(NLU)

ChatGPT 能够准确理解人类自然语言表达的内容,包括:

  • 语义理解:能读懂各种句式、短语和隐含含义
  • 意图识别:理解用户真正想要做什么,比如提问、命令、建议
  • 上下文理解:根据对话历史推断出当前语境和逻辑关联
  • 歧义处理:遇到模棱两可的表达时,能给出合理推测或主动澄清

✅ 应用场景:

  • 聊天机器人
  • 智能客服
  • 对话式搜索

📄 Demo 案例

import { openai } from '../utils/openai-client.js';

// 预定义意图列表,供模型参考
const INTENT_CATEGORIES = [
  "订票",
  "取消订单",
  "查询航班",
  "酒店预订",
  "天气查询",
  "投诉反馈",
  "闲聊",
  "其他"
];

export async function understandIntent(userInput) {
  const response = await openai.chat.completions.create({
    model: 'gpt-4.1-mini',
    messages: [
      { role: 'system', content: `你是一个意图识别引擎,需要根据用户的输入,从以下意图中选择最匹配的一项返回:

${INTENT_CATEGORIES.map((c, i) => `${i + 1}. ${c}`).join('\n')}

只返回最匹配的意图名称,其他任何内容都不要输出。` },
      { role: 'user', content: userInput },
    ],
  });

  console.log('识别结果:', response.choices[0].message.content.trim());
}


// 调用
understandIntent('我想预定五一飞往杭州的航班')

img

自然语言生成(NLG)

ChatGPT 擅长流畅地生成符合人类习惯的自然语言文本,包括:

  • 回答问题:准确、逻辑清晰地给出回答
  • 内容创作:撰写故事、诗歌、广告文案、社交媒体帖子
  • 多样风格切换:可以根据指令改变语气(正式、幽默、感性)
  • 多语言输出:支持中、英、日、韩、德等多种语言写作

✅ 应用场景:

  • 内容营销
  • 自动写作
  • 知识问答平台

📄 Demo 案例

import { openai } from '../utils/openai-client.js';

export async function generateShortStory(prompt) {
  const response = await openai.chat.completions.create({
    model: 'gpt-4.1-mini',
    messages: [
      { role: 'system', content: '你是一个优秀的短篇故事作者,写的内容不超过 100 字' },
      { role: 'user', content: prompt },
    ],
  });

  console.log('生成的故事:', response.choices[0].message.content.trim());
}

// 调用
generateShortStory('写一个关于勇敢小狗的温暖故事')

img

多轮对话管理(Contextual Dialogue)

ChatGPT 可以在多轮对话中保持上下文一致性和逻辑连贯性:

  • 记住历史对话:在当前对话窗口内,追溯上下文,记得前几轮对话
  • 动态调整回答:根据最新输入和历史内容,自适应调整回复
  • 情绪跟踪(部分场景):模拟理解用户的情绪变化,调整回应

✅ 应用场景:

  • 智能助理
  • 聊天 App
  • 游戏 NPC 互动

📄 Demo 案例

import { openai } from '../utils/openai-client.js';

export async function continueConversation(history, userInput) {
  const messages = [
    ...history,
    { role: 'user', content: userInput },
  ];

  const response = await openai.chat.completions.create({
    model: 'gpt-4.1-mini',
    messages: messages,
  });

  console.log('AI 回答:', response.choices[0].message.content.trim());
  return messages.concat({ role: 'assistant', content: response.choices[0].message.content.trim() });
}

// 调用
let history = [];
await withLoading(async () => {
  history = await continueConversation(history, '你好');
  history = await continueConversation(history, '你喜欢什么食物?');
  history = await continueConversation(history, '我之前的问题是什么?');
});

img

信息检索与总结(Summarization & Extraction)

虽然 ChatGPT 不实时联网(除非用专门插件或接 API 调用搜索引擎),但它可以基于训练数据:

  • 总结长文档:提取重点,写摘要
  • 列出要点:将复杂内容组织成清单或结构化信息
  • 比较分析:对比不同事物、观点、产品特点

✅ 应用场景:

  • 报告生成
  • 新闻摘要
  • 法律、学术辅助

📄 Demo 案例

import { openai } from '../utils/openai-client.js';

export async function summarizeText(text) {
  const response = await openai.chat.completions.create({
    model: 'gpt-4.1-mini',
    messages: [
      { role: 'system', content: '你是一个专业的文档摘要助手' },
      { role: 'user', content: `请帮我总结以下内容:\n${text}` },
    ],
  });

  console.log('摘要内容:', response.choices[0].message.content.trim());
}

// 调用
 summarizeText('ChatGPT 是由美国人工智能研究公司OpenAI开发的一款基于大规模语言模型的对话生成系统,属于 GPT系列的重要应用之一。自 2022 年 11 月正式发布以来,它凭借强大的自然语言处理能力和交互性,迅速成为全球关注的焦点。ChatGPT基于 Transformer 架构构建,一种擅长处理序列数据(如文本)的深度学习模型,通过 “自注意力机制” 捕捉文本中的长距离依赖关系,能高效处理上下文语义。其训练数据涵盖互联网级别的海量文本(书籍、网页、对话等),早期版本(如 GPT-3)参数量达数百亿级,后续版本(如 GPT-4)进一步提升至万亿级,显著增强了逻辑推理、多模态理解等能力。')

img

代码理解与生成(Code Understanding & Generation)

ChatGPT 在编程辅助方面也非常强大(特别是 GPT-4.0 之后):

  • 写代码:支持 Python、JavaScript、C++、HTML、SQL 等主流语言
  • 代码解释:帮你理解已有代码的功能和逻辑
  • 代码调试建议:发现常见错误并提出修正方案
  • 算法设计辅助:根据需求快速草拟解决方案

✅ 应用场景:

  • AI 编程助手(如 Copilot 类工具)
  • 技术支持
  • 教学和学习辅导

📄 Demo 案例

import { openai } from '../utils/openai-client.js';

export async function generateCode(taskDescription) {
  const response = await openai.chat.completions.create({
    model: 'gpt-4.1-mini',
    messages: [
      { role: 'system', content: '你是一个资深前端工程师' },
      { role: 'user', content: `请帮我用 JavaScript 实现以下功能:\n${taskDescription}` },
    ],
  });

  console.log('生成的代码:\n', response.choices[0].message.content.trim());
}

// 调用
generateCode('使用 js 写一个快排函数')

img

多模态能力示例 🌟

GPT-4o 支持多模态输入与输出:

  • 文本图片语音 输入
  • 文本语音 输出
  • 视觉理解:可以识别图片中的物体、读图表、分析截图
  • 语音对话:超自然、低延迟的语音交流

✅ 应用场景:

  • 视觉问答(VQA)
  • 智能语音助手
  • 图文搜索

图像理解

// services/vision-image-understanding.js
import { openai } from '../utils/openai-client.js';
import fs from 'fs';

export async function analyzeImage(imagePath, question) {
  const imageBase64 = fs.readFileSync(imagePath, { encoding: 'base64' });
  const dataUrl = `data:image/jpeg;base64,${imageBase64}`;

  const response = await openai.chat.completions.create({
    model: 'gpt-4.1-mini',
    messages: [
      { role: 'system', content: '你是一个专业图像分析助手' },
      {
        role: 'user',
        content: [
          { type: 'text', text: question },
          { type: 'image_url', image_url: { url: dataUrl } }
        ],
      },
    ],
  });

  console.log('图片分析结果:', response.choices[0].message.content.trim());
}

// 调用
analyzeImage('./pic.jpg', '图片中有什么?')

需要理解的图片

img

图片理解结果

img

音频转文字

暂时无法在飞书文档外展示此内容

import { openai } from '../utils/openai-client.js';
import fs from 'fs';

export async function transcribeAudio(audioPath) {
  const response = await openai.audio.transcriptions.create({
    file: fs.createReadStream(audioPath),
    model: 'whisper-1'
  });

  console.log('音频转文字结果:', response.text);
}

// 调用
transcribeAudio('./54321.mp3')

img

Function Calling 🔌

从 GPT-4 开始,ChatGPT 可以调用外部定义的函数:

  • 结构化数据生成:输出符合特定 schema 的 JSON
  • 插件调用:调用搜索引擎、数据库、天气预报、购物网站等服务
  • 动作执行:如发起支付、查询库存、自动化操作

✅ 应用场景:

  • 智能客服(自动查询订单)
  • 企业内部知识库搜索
  • 多任务自动化工作流

📄 Demo 案例

import fetch from 'node-fetch';
import dotenv from 'dotenv';
import { openai } from '../utils/openai-client.js';

dotenv.config();

const QWEATHER_API_KEY = process.env.QWEATHER_API_KEY; // 和风天气 API Key

async function get_weather({ location }) {
  try {
    // 使用 GeoAPI 获取城市的 Location ID
    // 对应开发文档 https://dev.qweather.com/docs/api/geoapi/
    const geoUrl = `https://n336x6y9yf.re.qweatherapi.com/geo/v2/city/lookup?location=${encodeURIComponent(location)}&key=${QWEATHER_API_KEY}`;
    const geoRes = await fetch(geoUrl, { timeout: 5000 });
    if (!geoRes.ok) {
      throw new Error(`GeoAPI请求失败: ${geoRes.status} ${geoRes.statusText}`);
    }

    const geoData = await geoRes.json();
    if (geoData.code !== '200' || !geoData.location || geoData.location.length === 0) {
      return `抱歉,找不到 ${location} 的天气信息`;
    }

    const locationId = geoData.location[0].id;
    console.log('locationId ->', locationId);

    // 使用 Location ID 获取实时天气数据
    // 对应开发文档: https://dev.qweather.com/docs/api/weather/weather-daily-forecast/
    const weatherUrl = `https://n336x6y9yf.re.qweatherapi.com/v7/weather/3d?location=${locationId}&key=${QWEATHER_API_KEY}`;
    const weatherRes = await fetch(weatherUrl, { timeout: 5000 });
    if (!weatherRes.ok) {
      throw new Error(`天气API请求失败: ${weatherRes.status} ${weatherRes.statusText}`);
    }

    const weatherData = await weatherRes.json();
    console.log('weatherData ->', weatherData); // 打印 weatherData 以进行调试,确保正确获取了天气数据

    if (weatherData.code !== '200') {
      return `获取 ${location} 的天气信息失败,错误码:${weatherData.code}`;
    }

    return weatherData.daily[1];
  } catch (error) {
    console.error('天气查询出错:', error);
    return `获取 ${location} 的天气信息时发生错误:${error.message}`;
  }
}

export async function functionCallingExample() {
  const response = await openai.chat.completions.create({
    model: 'gpt-4.1-mini',
    messages: [
      { role: 'system', content: '你可以调用用户定义的函数。' },
      { role: 'user', content: '明天北京天气怎么样?' },
    ],
    tools: [
      {
        type: "function",
        function: {
          name: "get_weather",
          description: "获取城市天气",
          parameters: {
            type: "object",
            properties: {
              location: {
                type: "string",
                description: "城市名称,比如:北京"
              }
            },
            required: ["location"]
          }
        }
      }
    ],
    tool_choice: "auto" // 让模型自动决定是否调用函数
  });

  const message = response.choices[0].message;

  if (message.tool_calls && message.tool_calls.length > 0) {
    const toolCall = message.tool_calls[0];
    console.log('检测到需要函数调用:', JSON.stringify(toolCall, null, 2));

    if (toolCall.function && toolCall.function.name === 'get_weather') {
      const args = JSON.parse(toolCall.function.arguments);
      const result = await get_weather(args);

      // console.log(`\n函数 get_weather 执行结果:`, result);

      // 这里增加一段新的逻辑:把 result 交给模型总结
      const finalResponse = await openai.chat.completions.create({
        model: 'gpt-4.1-mini',
        messages: [
          { role: 'system', content: '你是一个天气播报员,负责把天气信息转成自然流畅的人类语言。' },
          { role: 'user', content: `帮我根据以下天气数据,总结成一段话:${JSON.stringify(result)}` }
        ],
      });

      const finalMessage = finalResponse.choices[0].message.content;
      console.log('\n最终模型回复:', finalMessage);

    } else {
      console.log(`未识别的函数调用:${toolCall.function?.name}`);
    }
  } else {
    console.log('没有触发函数调用。模型回复内容:', message.content);
  }
}

img

小结

🔮 未来已来:当API能「看」能「听」能「行动」,我们开发的早已不是工具,而是智能伙伴