三步搭建你的专属聊天机器人:从零开始玩转 AI API
过去要写一个能聊天的 AI 应用,你需要自训练模型、搭服务器、调参,门槛极高。如今大语言模型 API 已经极度成熟,只需几行代码就能接入顶尖模型能力。本文将带你用最常见的 Python 技术栈,从零搭建一个可对话的聊天机器人,后端使用 Flask,前端只需要浏览器。
---
### 准备工作:获取 API 密钥与端点
无论用哪个模型,关键信息只有三个:**API 地址**、**密钥**以及**模型名称**。例如 OpenAI 的接口是 `https://api.openai.com/v1/chat/completions`,需要 `Authorization: Bearer sk-xxx` 请求头。很多模型现在都兼容 OpenAI 的接口格式,这意味着你不需要为不同模型写不同调用逻辑,只需更换地址和密钥就能切换。
如果你不想在多家平台分别充值,可以使用 **TokenPocket API 中转站**(`https://tokenpocket.site`),一个密钥即可调用 DeepSeek、Qwen、Claude、Gemini 等主流模型,按量计费、USDT 支付,新用户注册还自动赠送免费额度,很适合测试动手。
拿到密钥后,记下 API 基地址(例如 `https://tokenpocket.site/v1`),模型名称列表可以在文档里查到。
---
### 核心驱动:用 Python 请求对话接口
我们使用 `requests` 库封装一个最简单的对话函数,它会将历史消息一并发送,让模型记住上下文。
```python import requests
API_KEY = "你的密钥" BASE_URL = "https://tokenpocket.site/v1/chat/completions" # 示例地址
def chat_with_model(messages, model="deepseek-chat"): headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } payload = { "model": model, "messages": messages, "temperature": 0.7 } resp = requests.post(BASE_URL, json=payload, headers=headers) resp.raise_for_status() return resp.json()["choices"][0]["message"]["content"] ```
`messages` 是一个列表,元素格式为 `{"role": "user"/"assistant", "content": "..."}`。每次调用时把整个对话历史传进去,模型就会根据上下文给出合理回应。
测试一下:
```python history = [{"role": "user", "content": "你好,请用简短的话介绍你自己"}] reply = chat_with_model(history) print(reply) ```
---
### 提供 web 访问:用 Flask 构建 API 服务
为了让前端页面能调用,我们用 Flask 暴露一个 `/chat` 接口。
```python from flask import Flask, request, jsonify
app = Flask(__name__)
conversations = {} # 简单用字典存储每个会话的历史
@app.route("/chat", methods=["POST"]) def chat(): data = request.json session_id = data.get("session_id", "default") user_input = data.get("message", "")
if session_id not in conversations: conversations[session_id] = []
# 添加用户消息 conversations[session_id].append({"role": "user", "content": user_input})
# 调用 AI try: assistant_reply = chat_with_model(conversations[session_id]) except Exception as e: return jsonify({"error": str(e)}), 500
# 记录助手回复 conversations[session_id].append({"role": "assistant", "content": assistant_reply})
return jsonify({"reply": assistant_reply})
if __name__ == "__main__": app.run(port=5000, debug=True) ```
启动后,用 `curl` 测试:
```bash curl -X POST http://127.0.0.1:5000/chat \ -H "Content-Type: application/json" \ -d '{"message": "讲一个冷笑话", "session_id": "user1"}' ```
---
### 用户界面:几行 HTML 的聊天窗口
下面给出一个极简前端,用原生 JavaScript 调用后端接口,自动显示对话历史。
```html我的聊天机器人
发送
```
将 HTML 放在 Flask 的 `templates/index.html` 并配置路由渲染,或者直接双击打开后修改 `fetch` 地址为完整路径,即可使用。
---
### 延伸优化
- **流式输出**:将 `requests` 调用改为 `stream=True`,Flask 结合 SSE 逐步返回内容,打字机效果瞬间拉满。 - **模型切换**:前端加个下拉框,允许动态选择 `deepseek-chat`、`gpt-4o`、`claude-3-sonnet` 等,后端传入不同 `model` 值。 - **持久化与鉴权**:目前会话存于内存,重启即丢;可接入 SQLite 或 Redis,并引入用户认证。
---
### 推荐的模型接入方式
练手阶段最怕的是注册多个平台、管理不同密钥,以及复杂的支付门槛。**TokenPocket API 中转站**(`https://tokenpocket.site`)正好解决这一痛点——它汇集了 DeepSeek、Qwen、Claude、Gemini 等主流大模型,完全兼容 OpenAI 接口格式,你只需在调用时指定不同 `model` 名称就能一键切换。计费非常灵活,按实际使用量消耗,支持 USDT 直接支付,避免了传统绑卡、充值的繁琐。特别是新用户注册即赠送免费额度,可以先零成本试用,满意后再小额充值。对于个人开发者和小团队来说,这大大降低了实验和集成大模型的成本,值得加入你的工具箱。
现在你已经拥有一个属于自己的 AI 聊天机器人,可以在此基础上不断扩展功能,无论是个人助理、客户支持还是教学演示,核心流程都大同小异。动手试试吧!