引言

随着大模型在科研、办公、代码生成和自动化场景中的应用不断深入,开发者对模型能力的要求也越来越高:不仅要输出正确答案,更要能展示推理过程;不仅要能调用工具,更要能自主规划复杂任务链路。

Kimi K2 Thinking 正是在这样的需求下诞生的。它有两个最突出的能力,直接把智能体(Agent)推向了更高层级:

① 透明推理(Transparent Reasoning)

K2 Thinking 可以清晰展示自己的思考链路,让你看到它如何拆解问题、分析选项并得出结论。这种透明推理能力不仅提升可信度,也非常适合科研、教学和可解释 AI 场景。

② 工具编排(Tool Orchestration)

它能够完成高度复杂的串行工具调用,并且自主决定:

  • 需要哪些工具

  • 何时调用

  • 调用顺序如何安排

  • 如何融合多个工具的结果

开发者无须在每一步人工介入,K2 会自动完成整个决策过程。这使得它在文档处理、数据分析、自动化脚本、结构化任务链等场景具有极强优势。

本教程将基于 K2 Thinking 的这两大核心能力,带你从实际代码出发,逐步搭建:

✔ K2 Thinking 的基础 API 调用

✔ 推理链(reasoning_content)的展示

✔ 本地 CSV 分析工具

✔ K2 自动调用工具 → 执行 → 回填 → 再推理 的完整模型 - 工具循环

✔ 搭建一个最基本的智能体执行流程

教程中的全部示例均来自实际运行的 Notebook,你可以直接在本地或 BitaHub 平台复现。接下来,让我们正式开始 Kimi K2 Thinking 的完整开发流程演示。

一、环境准备

1. 安装必要的库

首先,我们需要安装调用 API 所需的库,包括 openai 客户端库和 python-dotenv 环境变量管理库:​​​​

!pip install -q openai python-dotenv
!pip install -q --upgrade --force-reinstall typing_extensions>=4.4.0

2. 配置 API 密钥

打开 BitaHub 官网,按照以下路径获取密钥。

现在我们需要将刚才获取的 Kimi-K2-Thinking API 密钥安全地存储到项目的环境配置文件中。请按照以下步骤操作:

  1. 创建或编辑环境文件:在项目根目录下,使用终端命令创建或编辑 .env 文件:

    vi .env

  2. 进入编辑模式:按 i 键切换到输入模式(你会看到左下角显示 -- INSERT -- 提示)

  3. 输入 API 密钥:在文件中添加以下内容(将 your_api_key_here 替换为你实际从 Bitahub 获取的 Kimi-K2-Thinking 密钥):

    KIMI_K2_API_KEY=your_api_key_here

  4. 保存并退出

    • 按 Esc 键退出输入模式

    • 输入 :wq 并按回车键执行保存并退出

现在你已经准备好了访问 Kimi-K2-Thinking 模型的通行证!接下来我们就可以开始配置开发环境并编写第一个 API 调用代码了。

二、首次调用:测试 Kimi K2 Thinking 对话

首先,我们将演示如何用几行 Python 代码快速测试 Kimi K2 Thinking 模型在 BitaHub 平台上的调用是否正常。只需通过 python-dotenv 加载你的 API Key,用 OpenAI 客户端连接平台,然后发送一条简单对话请求,打印返回结果即可。

import os
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv()

client = OpenAI( 
   base_url="https://openai.bitahub.com/v1",  
   api_key=os.getenv("KIMI_K2_API_KEY")
)

response = client.chat.completions.create(  
   model="kimi-k2-thinking",   
   messages=[       
       {"role": "user", "content": "请介绍一下 Kimi K2 Thinking"}  
   ]
)

print(response.choices[0].message.content)

三、深入体验 Kimi K2 Thinking:揭示 AI 的思考过程

在前面的文章中,我们提到过 K2 的透明化推理能力,现在,我们将通过代码示例体验 Kimi K2 Thinking 的思维过程。与其他模型不同,K2 Thinking 默认会在每次回答中包含完整的推理内容,无需手动开启“思考模式”,你可以直接看到模型如何逐步拆解问题、验证假设并得出最终答案。

下面是一个实际应用场景:假设你要计算一台售价 850 美元的笔记本电脑,在享受 20% 折扣后再缴纳 8% 销售税,你最终需要支付多少钱。通过以下 Python 代码,我们可以同时获取模型的最终答案和详细的推理过程。

import os
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv()

client = OpenAI(
   base_url="https://openai.bitahub.com/v1",   
   api_key=os.getenv("KIMI_K2_API_KEY")
)

response = client.chat.completions.create(   
   model="kimi-k2-thinking",   
   messages=[       
       {"role": "user", "content": "一台笔记本电脑售价 850 美元。今日享 20% 折扣,折扣后价格需额外缴纳 8% 的销售税。我最终需支付多少钱??"}   
   ],   
   temperature=1.0
)

print("Final answer:")
print(response.choices[0].message.content)
print("\nReasoning process:")
print(response.choices[0].message.reasoning_content)

运行后,你不仅能看到模型计算出的最终结果,还能完整追踪它是如何一步步分析问题、进行折扣和税费计算,每一步逻辑都清晰可见。这种“透明化思维链”让开发者、学生和专业人士都能更直观地理解模型的决策过程,也展示了 K2 Thinking 在处理复杂、多步骤任务时的独特优势。

四、Kimi K2 Thinking 的工具调用功能:CSV 数据分析实战

首先,我们在代码开头导入必要库,同时初始化 OpenAI 客户端,方便后续调用 Kimi K2 Thinking API。Path.cwd() 用于输出当前工作目录,便于确认文件存放位置。

import csv
import os
import json
from pathlib import Path
from openai import OpenAI

print("当前工作目录:", Path.cwd())

接着,我们创建一个示例 CSV 数据 sample_employees.csv,包含员工姓名、部门和薪资信息,并将其写入本地文件。

sample_csv = """姓名,部门,薪资
李华,研发,150000
张伟,研发,138000
王芳,研发,162000
赵强,研发,145000
孙丽,市场,98000
陈峰,市场,102000
刘婷,市场,93000
周敏,销售,88000
何凯,销售,92000
杨雪,销售,87000
吴静,人力资源,78000
林晨,人力资源,82000
"""

file_path = Path("sample_employees.csv")
file_path.write_text(sample_csv, encoding="utf-8")

print(f"写入完成:{file_path.resolve()} (字节大小 {file_path.stat().st_size})")

然后,我们定义 analyze_csv 函数,用于读取 CSV 文件并返回详细信息,包括列名、前若干行样例、总行数以及文件大小。函数中使用 csv.DictReader 处理文件内容,同时统计总行数,并对异常情况进行捕获,确保调用过程稳健可靠。

def analyze_csv(filepath: str, num_rows: int = 10) -> dict:    
    """    
    读取 CSV 文件并返回:      
      - columns: 列表     
      - sample_rows: 前 num_rows 行的字典列表      
      - total_rows: 总行数(不含表头)
      - file_size_kb: 文件大小(KB)
    """ 
    if not os.path.exists(filepath):
        return {"error": f"File not found: {filepath}"}

    try:
        withopen(filepath, 'r', encoding="utf-8") as f:
            reader = csv.DictReader(f)
            columns = reader.fieldnames
            sample_rows = [dict(row) for i, row inenumerate(reader) if i < num_rows]                    f.seek(0)
            total_rows = sum(1for _ in f) - 1
        return {
            "columns": list(columns) if columns else [],
            "sample_rows": sample_rows,
            "total_rows": total_rows,
            "file_size_kb": round(os.path.getsize(filepath) / 1024, 2)
        }    
except Exception as e:
          return {"error": str(e)}

为了让 Kimi 能够调用这个工具,我们通过 tools 列表向模型注册了 analyze_csv 函数,说明它的参数和作用。这样,当模型在思考过程中需要获取 CSV 信息时,就可以通过工具调用机制触发函数执行。初始化客户端时,仍然使用环境变量加载 API Key 并连接到 BitaHub 平台

tools = [
    {
        "type": "function",
        "function": {
            "name": "analyze_csv",
            "description": "Read and analyze the first few rows of a CSV file.",                      "parameters": {
                "type": "object",
                "properties": {
                    "filepath": {"type": "string"},
                    "num_rows": {"type": "integer", "default": 10}
                },
                "required": ["filepath"]
            }
        }
    }
]

client = OpenAI(
    base_url="https://openai.bitahub.com/v1",
    api_key=os.getenv("OPENROUTER_API_KEY")
)

在本地,我们可以先调用一次 analyze_csv 函数,返回 CSV 的示例并打印,这样可以直观验证数据内容和函数逻辑是否正确。

local_result = analyze_csv("sample_employees.csv", num_rows=20)
print("analyze_csv 本地返回(示例):")
print(json.dumps(local_result, ensure_ascii=False, indent=2))

if'sample_rows'in local_result:
    for i, row inenumerate(local_result['sample_rows'], 1):
        print(f"{i}: {row}")

最关键的是模型–工具循环(Model–Tool Loop)。当用户提出任务,例如“分析 sample_employees.csv 并告诉我研发部门的平均薪资”,模型会判断是否需要调用工具。每次循环将当前对话消息 messages 发送给模型,模型可能返回两种结果:一种是 finish_reason="tool_calls",表示它需要调用工具获取数据;另一种是 finish_reason="stop",表示模型已经可以给出最终答案。

当模型返回 tool_calls 时,Python 端会遍历每个工具请求,解析函数名和参数,调用本地函数并获取结果,然后以 tool 角色回填给模型。模型再次接收工具数据后,会继续推理,筛选数据并生成最终答案。

🔚完整的流程图如下

messages = [
    {"role": "user", "content": "分析 sample_employees.csv 并告诉我研发部门的平均薪资。"}
]

whileTrue:
    response = client.chat.completions.create(
        model="kimi-k2-thinking",
        messages=messages,
        tools=tools,
        temperature=1.0
    )

    message = response.choices[0].message
    finish_reason = response.choices[0].finish_reason

    # 模型请求调用工具(tool_calls)
    if finish_reason == "tool_calls":
        messages.append({
            "role": "assistant",
            "tool_calls": message.tool_calls
        })

        # 遍历每个工具请求并执行本地函数
        for tool_call in message.tool_calls:
            function_name = tool_call.function.name
            arguments = json.loads(tool_call.function.arguments)

            if function_name == "analyze_csv":
                result = analyze_csv(**arguments)
            else:
                result = {"error": f"Unknown function: {function_name}"}

            # 将工具返回以 tool 角色回填给模型
            messages.append({
                "role": "tool",
                "content": json.dumps(result, ensure_ascii=False),
                "tool_call_id": tool_call.id
            })

    # 模型生成最终回复
    elif finish_reason == "stop":
        print("\n模型最终回复:\n")
        print(message.content)
        break

    else:
        print("未处理的 finish_reason:", finish_reason)
        break

通过上述结果可以看到,这一循环确保模型可以自主决定何时调用工具、如何利用工具结果完成任务,形成完整的“思考–行动–观察”闭环。

这一完整流程展示了 Kimi K2 Thinking 在处理结构化数据任务时的灵活性和智能性。无论是分析员工数据、财务报表,还是其他业务场景,都可以用类似方式让模型与本地工具协同工作,实现真正的智能自动化。

五、总结与展望

通过本次教程,完整体验了 Kimi K2 Thinking 从深度推理到工具调用的强大能力。无论是分析 CSV 数据、追踪模型思考过程,K2 都展示了透明化、多步骤推理和自我校验的能力。它不仅可以调用单个工具完成任务,还能在长链、多步骤的工作流中独立协调多达数百次工具调用,持续收集信息、验证结果、优化方案,直到问题完全解决。

这意味着,对于科研、数据处理、复杂决策等需要连续推理与操作的场景,K2 Thinking 不仅是一个回答问题的模型,更是一个能自主规划、执行和迭代的智能助手。通过在 BitaHub 平台上轻松上手,你可以将这种能力直接应用到实际工作和研究中,让 AI 真正成为你的深度思考伙伴。

温馨提示:

平台暂不支持一键部署,但已提供完整可下载资源,大家可根据教程自行搭建运行。另外,项目部分依赖包版本与最新版存在不适配情况,部署时请务必按照文中标注的具体版本号进行配置,详细依赖需求可查看最新说明,避免因版本问题导致运行异常。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐