一、MiMo 简介:为什么用它来搭建问答服务?
MiMo 是小米公司自研的大语言模型系列,其中 MiMo-MoE-Chat 是一个专门为对话场景优化的模型。选择它来搭建我们的智能问答服务,主要有两个原因:首先,它针对中文和对话进行了深度优化,在理解用户意图和生成流畅回答方面表现优秀;其次,它提供了稳定且易于使用的 API 接口,让我们能快速将强大的 AI 能力集成到自己的应用中,而无需从头训练模型。
与直接使用开源模型本地部署相比,调用 API 的方式更轻量、免去了复杂的环境配置和算力成本,非常适合个人开发者或小型项目快速验证想法。我们的目标就是利用这个 API,构建一个能接收用户问题、并返回智能回答的 Web 服务。
二、准备工作:获取钥匙与搭建环境
在开始编写代码之前,我们需要完成两项关键准备:获取 API 密钥和安装必要的开发库。
- 获取 API 密钥:访问小米开放平台或 MiMo 官方文档指定的开发者门户,注册账号并创建应用,以申请
API Key。这个密钥相当于你调用 API 的“身份证”和“密码”,请务必妥善保管,不要泄露在公开的代码或文档中。 - 安装 Python 库:我们将使用 Python 的
requests库来发送 HTTP 请求。在你的项目环境中,运行以下命令进行安装:
pip install requests
提示:建议在虚拟环境中进行开发,以避免包版本冲突。同时,将 API Key 存储在环境变量或单独的配置文件中,而不是直接硬编码在代码里,这是一个重要的安全实践。
三、核心实现:发送第一个问题
准备工作就绪,我们来编写第一个能调用 MiMo API 的 Python 脚本。核心逻辑是向模型的 API 端点发送一个 HTTP POST 请求,请求体中包含你的问题(即 prompt)。
下面是一个最简单的示例代码,它向 MiMo-MoE-Chat 模型询问“什么是API?”,并打印出模型的回答。
import requests
import json
from config import API_KEY # 假设你从单独的配置文件导入了密钥
# API 端点 (请以官方文档为准)
API_URL = "https://api.mimo.xiaomi.com/v1/chat/completions"
# 构造请求头
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}"
}
# 构造请求体,这是最关键的部分
data = {
"model": "MiMo-MoE-Chat", # 指定使用的模型
"messages": [
{
"role": "user", # 发送消息的角色是用户
"content": "请用简单易懂的语言解释一下,什么是API?" # 用户的具体问题
}
],
"temperature": 0.7, # 控制回答的创造性,值越高越随机
"max_tokens": 500 # 控制回答的最大长度
}
# 发送请求并获取响应
response = requests.post(API_URL, headers=headers, json=data)
response_json = response.json()
# 解析并打印回答
if response.status_code == 200:
answer = response_json['choices'][0]['message']['content']
print("MiMo 的回答是:", answer)
else:
print("请求出错,状态码:", response.status_code, "错误信息:", response_json)
四、解码请求与响应:消息格式详解
从上面的代码可以看到,请求体中的 messages 是一个列表,这是与模型进行多轮对话的关键。它记录了对话的历史上下文。每个消息对象包含两个字段: