QDKT3-3-使用API调用大模型可控参数和 FunctionCalling
第一部分:API调用基础认知
1.1 为什么选择Kimi API学习?
- 文档友好:专为非技术人员(如产品经理)设计,避免复杂代码术语
- 功能全面:覆盖所有主流大模型API的核心参数与工具调用能力
- 行业通用:参数命名、格式标准与OpenAI兼容(降低跨平台切换成本)
1.2 核心概念速解
(1)OpenAI兼容
- 含义:OpenAI是首个提供大模型API服务的平台,其定义的参数规则、格式标准成为行业通用规范
- 优势:学会Kimi API后,切换到Deepseek、ChatGPT等平台时,无需重新学习核心逻辑
- 注意:不同平台仅参数范围(如temperature取值)可能不同,核心用法一致
(2)SDK与API的区别
- API:应用程序接口,本质是通过JSON格式发送请求、接收响应的规则
- SDK:软件开发工具包,是封装好的编程语言专属工具(如Python/Java版本),简化调用代码
- 产品经理视角:重点掌握API的参数与格式,SDK无需深入学习
(3)JSON格式基础
- 作用:API请求与响应的标准数据格式
- 核心规则:
- 键值对用"key": "value"表示,多个键值对用逗号分隔
- 数组用[]包裹(如messages参数),对象用{}包裹
- 字符串必须用双引号(""),不能用单引号
- 换行需用转义符\n,不能直接换行
- 嵌套引号需用转义符"(如"content": "他说"你好"")
第二部分:核心可调参数详解
2.1 必选参数(缺一不可)
(1)model(模型选择)
- 含义:指定调用的大模型版本(不同模型的能力、上下文长度不同)
- 示例:
- Kimi:K2(主流)、V1-8K、V1-32K(数字代表上下文长度)
- Deepseek:仅2个可选模型(推理型、对话型)
- 规则:
- 必须填写平台提供的官方模型ID(不可自定义)
- 一次只能选1个模型(类似"一次只能去一家餐馆吃饭")
(2)messages(对话消息)
- 含义:存储所有对话内容的数组,包含系统提示词、用户提问、AI回复
- 核心组成:每个元素是一个对象,包含2个关键字段
|
字段 |
取值范围 |
作用 |
|
role |
system/user/assistant |
角色标识(仅3种可选) |
|
content |
字符串(非空) |
对应角色的消息内容 |
- 角色优先级:system(系统)> user(用户)= assistant(AI)
- system:全局规则约束(权重最高),用于定义AI的行为准则(如"你是专业的翻译助手,仅返回翻译结果")
- user:用户的提问或需求
- assistant:AI的历史回复(多轮对话需包含)
2.2 对话构造参数(单轮/多轮)
(1)单轮对话示例
|
JSON |
(2)多轮对话示例
- 原理:每次请求需携带历史对话记录(AI无内置记忆)
- 格式:按"system→user→assistant→user→..."的顺序追加到messages数组
|
JSON |
2.3 生成控制参数(调整输出效果)
(1)temperature(温度值)
- 含义:控制输出的随机性(创意度),核心是选择下一个TOKEN的概率范围
- 取值规则:
- Kimi:0~1(默认0.7)
- Deepseek:0~2(默认1.0)
- 效果对应:
|
取值 |
特点 |
适用场景 |
|
低(0~0.3) |
严谨、固定、不易出错 |
事实问答、翻译、编程 |
|
中(0.4~0.7) |
平衡严谨与创意 |
日常对话、文案生成 |
|
高(0.8~1.0/Kimi) |
随机、有创意、可能离谱 |
头脑风暴、故事创作 |
- 注意:不同平台取值范围不同,不可直接套用(如Kimi的0.7≠Deepseek的0.7)
(2)top_p(核采样)
- 含义:与temperature类似,通过"累计概率"控制采样范围(0~1)
- 规则:
- 不建议与temperature同时调整(所有大模型API均不推荐)
- 取值越小越严谨,越大越随机(与temperature效果一致)
(3)max_tokens(最大生成长度)
- 含义:限制AI生成的TOKEN数量(1个TOKEN≈1个汉字或2个英文单词)
- 作用:
- 避免AI无限制输出(节省成本)
- 防止超出上下文长度限制
- 注意:
- 达到上限时,AI会截断输出(不会完整回答)
- 响应中finish_reason字段会显示"length"(表示因长度终止)
2.4 辅助参数(按需使用)
(1)n(多结果生成)
- 含义:指定每条消息返回的AI答案数量(仅Kimi支持)
- 取值:1~5(默认1)
- 适用场景:测试提示词稳定性(一次性获取多个答案对比)
(2)存在惩罚/频率惩罚
- 存在惩罚:降低重复出现相同TOKEN的概率(如避免多次出现"张佳")
- 频率惩罚:降低高频出现TOKEN的概率(如避免连续重复某句话)
- 作用:解决早期大模型的"复读机问题"(现在已较少使用)
(3)stop(停止词)
- 含义:设置敏感词或终止词,AI生成到该词时立即停止(不输出该词)
- 规则:
- Kimi:最多5个词,每个词不超过16个汉字(32字节)
- Deepseek:最多16个词
- 示例:设置"stop": ["敏感词1", "敏感词2"],AI生成到"敏感词1"时停止
(4)stream(流式输出)
- 含义:控制输出方式(布尔值:true/false)
- 效果:
- true:流式输出(类似网页聊天,一个字一个字蹦出),需前端代码适配
- false:完整输出(AI生成完毕后一次性返回)
- 产品经理视角:需流式输出时,告知程序员适配即可,无需关注技术实现
(5)response_format(响应格式)
- 含义:指定AI返回的数据格式(默认是字符串)
- 关键选项:"type": "json_object"(要求AI返回JSON格式)
- 注意:
- 必须提供JSON格式示例(否则AI会乱输出)
- 仅用于需要结构化数据的场景(如调用工具前的参数提取)
第三部分:工具调用(Function/tool calling)
3.1 核心原理
- 本质:让AI生成符合工具API规则的JSON,由人类或程序执行实际调用(AI本身不会直接调用工具)
- 流程:
- 用户发起需求(如"查明天北京的天气")
- 开发者告知AI可用工具及API规则(通过tools参数)
- AI生成工具调用所需的JSON参数(如{"tool": "weather", "location": "北京", "date": "明天"})
- 程序用该JSON调用天气API,获取结果
- 将结果返回给AI,AI整理后回复用户
3.2 tools参数格式(核心重点)
- 含义:存储可用工具信息的数组,与model、messages同级
- 每个工具的必选字段:
|
JSON |
3.3 工具调用完整示例
(1)请求参数
|
JSON |
(2)响应结果
|
JSON |
3.4 关键注意事项
- 工具描述(description)是核心:必须清晰说明"何时调用",否则AI可能误判
- 参数定义要完整:明确必填参数、类型、格式(如日期格式YYYY-MM-DD)
- 避免格式错误:花括号、逗号、引号必须成对出现(最容易出错的地方)
- 响应解析:finish_reason为"tool_calls"时,需提取tool_calls中的参数执行工具调用
第四部分:响应参数解析
4.1 通用响应格式
|
JSON |
4.2 关键字段说明
- finish_reason:
- stop:正常回答完毕
- length:达到max_tokens上限(输出不完整)
- tool_calls:触发工具调用(未直接回答)
- usage:用于计费(按TOKEN数收费),需关注总TOKEN数不超过模型上下文限制
第六部分:常见问题排查
- JSON格式错误:
- 检查是否有遗漏的逗号、花括号
- 确保字符串用双引号,嵌套引号加转义符"
- 换行用\n,不直接换行
- 参数错误:
- model填写非官方ID(需核对平台文档)
- messages中role取值错误(仅支持3种角色)
- content为空(不允许空消息)
- 工具调用失败:
- 工具描述不清晰(AI无法判断何时调用)
- 缺少必填参数定义(required字段未列出)
- 格式错误(tool_calls未正常生成)
课程总结
- 核心逻辑:API调用本质是"按规则构造JSON请求,解析JSON响应"
- 关键重点:必选参数(model/messages)、工具调用格式(tools)、JSON语法
更多推荐
所有评论(0)