第一部分: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
{
  "model": "K2",
  "messages": [
    {
      "role": "system",
      "content": "你是简洁的回答助手,回复不超过10个字"
    },
    {
      "role": "user",
      "content": "1+1等于几?"
    }
  ]
}

(2)多轮对话示例

  • 原理:每次请求需携带历史对话记录(AI无内置记忆)
  • 格式:按"system→user→assistant→user→..."的顺序追加到messages数组

JSON
{
  "model": "K2",
  "messages": [
    {
      "role": "system",
      "content": "你是简洁的回答助手,回复不超过10个字"
    },
    {
      "role": "user",
      "content": "1+1等于几?"
    },
    {
      "role": "assistant",
      "content": "等于2"
    },
    {
      "role": "user",
      "content": "那2+3呢?"
    }
  ]
}

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本身不会直接调用工具)
  • 流程:
  1. 用户发起需求(如"查明天北京的天气")
  1. 开发者告知AI可用工具及API规则(通过tools参数)
  1. AI生成工具调用所需的JSON参数(如{"tool": "weather", "location": "北京", "date": "明天"}
  1. 程序用该JSON调用天气API,获取结果
  1. 将结果返回给AI,AI整理后回复用户

3.2 tools参数格式(核心重点)

  • 含义:存储可用工具信息的数组,与model、messages同级
  • 每个工具的必选字段:

JSON
{
  "tools": [
    {
      "type": "function", // 固定值,不可修改
      "function": {
        "name": "weather_query", // 工具名称(建议英文,易识别)
        "description": "查询指定城市指定日期的天气,当用户询问天气时调用", // 关键!让AI判断是否调用
        "parameters": {
          "type": "object", // 固定值
          "required": ["location", "date"], // 必选参数列表
          "properties": { // 每个参数的详细定义
            "location": {
              "type": "string", // 参数类型(string/number等)
              "description": "城市名称,从用户输入中提取" // 参数说明
            },
            "date": {
              "type": "string",
              "description": "查询日期,格式为YYYY-MM-DD"
            }
          }
        }
      }
    }
  ]
}

3.3 工具调用完整示例

(1)请求参数

JSON
{
  "model": "K2",
  "messages": [
    {
      "role": "system",
      "content": "仅使用提供的工具响应,不直接回答用户问题"
    },
    {
      "role": "user",
      "content": "查一下2024-05-20上海的天气"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "weather_query",
        "description": "查询指定城市指定日期的天气,当用户询问天气时调用",
        "parameters": {
          "type": "object",
          "required": ["location", "date"],
          "properties": {
            "location": {
              "type": "string",
              "description": "城市名称,从用户输入中提取"
            },
            "date": {
              "type": "string",
              "description": "查询日期,格式为YYYY-MM-DD"
            }
          }
        }
      }
    }
  ]
}

(2)响应结果

JSON
{
  "id": "xxx",
  "object": "chat.completion",
  "created": 1716123456,
  "model": "K2",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "",
        "tool_calls": [
          {
            "index": 0,
            "id": "xxx",
            "type": "function",
            "function": {
              "name": "weather_query",
              "arguments": {
                "location": "上海",
                "date": "2024-05-20"
              }
            }
          }
        ]
      },
      "finish_reason": "tool_calls" // 标识因调用工具终止
    }
  ],
  "usage": {
    "prompt_tokens": 120,
    "completion_tokens": 30,
    "total_tokens": 150
  }
}

3.4 关键注意事项

  1. 工具描述(description)是核心:必须清晰说明"何时调用",否则AI可能误判
  1. 参数定义要完整:明确必填参数、类型、格式(如日期格式YYYY-MM-DD)
  1. 避免格式错误:花括号、逗号、引号必须成对出现(最容易出错的地方)
  1. 响应解析:finish_reason为"tool_calls"时,需提取tool_calls中的参数执行工具调用

第四部分:响应参数解析

4.1 通用响应格式

JSON
{
  "id": "请求唯一标识",
  "object": "chat.completion", // 固定值
  "created": 时间戳(如1716123456),
  "model": "调用的模型ID",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "AI的回答内容",
        "tool_calls": [] // 工具调用时出现
      },
      "finish_reason": "stop/length/tool_calls" // 结束原因
    }
  ],
  "usage": {
    "prompt_tokens": 输入TOKEN数,
    "completion_tokens": 输出TOKEN数,
    "total_tokens": 总TOKEN数
  }
}

4.2 关键字段说明

  • finish_reason
  • stop:正常回答完毕
  • length:达到max_tokens上限(输出不完整)
  • tool_calls:触发工具调用(未直接回答)
  • usage:用于计费(按TOKEN数收费),需关注总TOKEN数不超过模型上下文限制

第六部分:常见问题排查

  1. JSON格式错误:
  • 检查是否有遗漏的逗号、花括号
  • 确保字符串用双引号,嵌套引号加转义符"
  • 换行用\n,不直接换行
  1. 参数错误:
  • model填写非官方ID(需核对平台文档)
  • messages中role取值错误(仅支持3种角色)
  • content为空(不允许空消息)
  1. 工具调用失败:
  • 工具描述不清晰(AI无法判断何时调用)
  • 缺少必填参数定义(required字段未列出)
  • 格式错误(tool_calls未正常生成)

课程总结

  1. 核心逻辑:API调用本质是"按规则构造JSON请求,解析JSON响应"
  1. 关键重点:必选参数(model/messages)、工具调用格式(tools)、JSON语法

更多推荐