本阶段课程 · 模型 API 与工具调用
API:一次模型请求与响应消息角色与对话历史调用参数、流式输出与错误处理Function Calling:模型怎样使用工具
LESSON 17 / 36阅读约 7 分钟

API:一次模型请求与响应

用可读的请求结构,说明用户、应用和模型服务分别负责什么。

API 解决的是软件怎样调用另一种能力

API是软件之间约定好的通信接口。一个天气应用可以通过天气API取得预报,一个AI应用也可以通过模型API提交输入并取得生成结果。使用API不一定意味着自己训练或部署模型,可以直接调用服务方已经运行的模型。

你在聊天网页里输入问题时,网页背后的应用已经替你完成了调用。自己开发一个AI功能,就是把“收集输入、发送请求、处理结果”放进自己的产品。对非程序员来说,先理解这三个环节,比先记命令行语法更有帮助。

一次模型调用怎样往返

假设做一个“消息改写器”。用户在页面输入“今天三点前发报告”。应用把这段原文与改写规则打包,发送给模型服务;服务运行模型,返回一段改写结果;应用读取返回内容并显示给用户。

参与方负责什么在这个例子里做什么
使用者提供任务与必要材料填入原始消息
应用组织请求、保存状态、展示结果加上改写规则,向服务发送请求
模型服务接收调用并运行模型生成礼貌、自然的改写
应用处理成功或失败显示草稿,或说明调用失败

这里有两次网络通信的可能:浏览器与应用后端通信,应用后端再与模型服务通信。许多产品会这样安排,以便保护凭据、控制用量和处理权限。具体架构可以不同,但模型密钥不应该作为公开网页里的普通文本暴露。

请求里通常有什么

下面是教学用的请求结构示意。它采用常见的消息形式帮助阅读,不代表所有服务都接受这些字段,也不能直接当作可运行命令。

结构示例
{
  "model": "所选模型",
  "messages": [
    {"role": "system", "content": "礼貌改写,只用原有事实。"},
    {"role": "user", "content": "今天三点前发报告。"}
  ]
}

model说明希望调用哪个模型。messages包含本次消息;role标出消息来源与用途,content是具体内容。真正发送请求时,还需要正确的服务地址、身份凭据和符合接口要求的其他信息。下一课会详细解释消息角色。

响应里不只有一段文字

成功响应通常会包含生成结果,也可能带有请求编号、结束原因和用量信息。应用需要从结构里提取实际内容,而不是把所有字段直接展示给使用者。失败时可能得到权限、额度、格式或服务错误,而不是模型回答。

在改写例子中,返回文字可能是:“报告方便今天下午三点前发我吗?谢谢!”此时完成的是生成草稿,应用没有因此自动发送消息,收件人也没有因此同意期限。API返回什么能力的结果,就应按那个能力理解。

API Key、模型和额度分别是什么

API Key通常是一种调用凭据,服务用它识别或授权调用方,并关联相应账户与用量。模型是要运行的能力,额度是账户允许的使用范围。拥有一个密钥,并不代表可以免费使用所有模型或访问所有数据。

可视化平台把许多接口细节封装成节点:输入节点收材料,LLM节点调用模型,输出节点显示结果。课后可以用Dify体验这一过程。即使用了节点界面,底层的请求、响应与错误处理仍然存在。

检查一下理解

应用调用模型API并收到改写结果后,哪件事已经发生?

本节参考与继续阅读

下列章节用于核对概念与机制。本站以中文重新组织讲解,例子和练习为独立编写。

可选练习理解一个应用怎样把你的输入交给模型,再把返回文字显示给你。
练习目标

理解一个应用怎样把你的输入交给模型,再把返回文字显示给你。

这一课可选择在 Dify 中搭建,也可以先沿着步骤读懂。真实搭建需要可用的 Dify 工作区,并按平台说明配置模型提供商;调用可能产生费用。无需把密钥发给 AI。没有这些条件时,用普通 AI 对话完成相同输入输出,再继续下一课,不影响理解。

要做的小应用
名字:消息改写器
输入:original_message(原始消息)
处理:改得自然礼貌,保留事实
输出:一段可以人工核对的消息草稿

跟着做一遍

下面的结果是本站编写的对照示例。实际工具的措辞可能不同,按每步的关键条件检查即可。

01

创建输入,把变量想成空格

在 Dify 的 Studio 中从空白创建 Workflow。给用户输入节点添加文本字段 original_message,显示名称写“原始消息”。本课字段名由我们自己定义。

做完后,展开结果对照
对照示例 · 不要求逐字相同

运行时会出现一个让使用者填写原始消息的输入项。它目前还不会改写,因为还没有接处理步骤。

为什么这样做变量就是每次使用时会换的值。这里输入字段只负责收文字,并不具备 AI 能力。

02

加一个 LLM 节点,填入规则和材料

在流程中添加 LLM 节点并选择已配置的模型。填入下方规则,然后在用户消息位置用变量选择器引用 original_message;不要只打字段名当作正文。

发给 AI 的内容
把用户提供的消息改得自然、礼貌。保留日期、数字、人物和原意,不增加背景。只输出改写后的消息正文。
做完后,展开结果对照
对照示例 · 不要求逐字相同

LLM节点收到两部分:固定改写规则,以及这一次输入的原始消息。它会把这些内容交给所选模型服务。

为什么这样做LLM是“大语言模型”的缩写。这个节点替你处理发送模型请求的细节,底层通常通过模型API通信。

03

接上输出,再运行一次

添加 Output 节点,用变量选择器引用 LLM 的文本输出。把输入、LLM、输出连起来,在测试运行中填入下面原文。不同版本的终点可能显示为 Output 或输出。

发给 AI 的内容
原始消息:报告怎么还没给我?今天下午三点之前发我。
做完后,展开结果对照
对照示例 · 不要求逐字相同

预期得到类似“报告方便今天下午三点前发我吗?谢谢!”的草稿。输入“今天三点”后不应输出昨天或四点。

为什么这样做你现在能分清三处:页面收输入,模型服务生成文字,页面展示返回结果。没有输出节点时,即使模型执行成功,用户也可能看不到结果。

刚才用到的一个新词

API

软件之间约定好的通信接口;你的应用按要求发送请求,模型服务返回结果。

没做出来?从这里排查

LLM节点提示模型未配置

按Dify模型提供商说明配置你有权使用的服务;暂时不配置也可用聊天工具完成同一练习。

输出为空或把original_message原样打印出来

检查输入变量是否通过选择器引用,以及Output是否引用LLM实际输出。

换一个例子验证

把改写器换成“通知整理器”。

  1. 输入仍是一段原文。
  2. 把固定规则改成按时间、地点、报名方式整理。
  3. 分别测试完整通知与缺少地点的通知,缺失信息应标为未说明。
检查标准能指出输入、模型处理、输出各负责什么,知道缺字段时先检查哪处连接。

完成状态仅保存在当前浏览器,可再次点击取消。