你有没有想过,自己也能用几行代码搭一个 AI 对话助手?今天我们就来动手做一个!不需要深度学习,不需要 GPU,只需要 Python + 一个免费的 API 接口,30 行代码就能实现命令行里的智能对话。
🛠️ 准备工作
我们使用硅基流动(SiliconFlow)提供的免费接口,它是国内比较好用的 AI API 平台,新用户有免费额度,足够练手。
需要准备两件事:
✅ 安装 requests 库
pip install requests
✅ 获取免费 API Key
访问 siliconflow.cn 注册账号,进入控制台 → API 密钥 → 创建新密钥,复制保存好。
💻 30 行代码实现
新建一个文件 chatbot.py,把下面的代码复制进去,填入你的 API Key 即可运行:
import requests
import json
API_KEY = "your_api_key_here"
URL = "https://api.siliconflow.cn/v1/chat/completions"
def ask_ai(messages):
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
data = {
"model": "Qwen/Qwen2.5-7B-Instruct",
"messages": messages,
"stream": False
}
resp = requests.post(URL, headers=headers, json=data, timeout=60)
return resp.json()["choices"][0]["message"]["content"]
def main():
messages = []
print("🤖 AI 聊天机器人已启动,输入 '退出' 结束对话\n")
while True:
user_input = input("\n你: ")
if user_input == "退出":
print("👋 再见!")
break
messages.append({"role": "user", "content": user_input})
reply = ask_ai(messages)
messages.append({"role": "assistant", "content": reply})
print(f"\nAI: {reply}")
if __name__ == "__main__":
main()
🔍 代码解析
① 消息历史机制(messages)
AI 对话不是"一次一问",而是把历史对话全部记录在 messages 列表里一起发过去,这样 AI 才能理解上下文。人类发消息 role 填 "user",AI 回复 role 填 "assistant"。
② POST 请求结构
我们给 SiliconFlow 的接口发送一个 JSON 请求:model 指定用哪个模型(Qwen2.5-7B 是阿里开源的免费模型),messages 传入对话历史,stream: false 表示等 AI 完整回答再返回。
③ 主循环(while True)
程序一直等待用户输入,说"退出"就 break 跳出循环。每次对话后,把 AI 的回复也加入 messages,保持历史完整,这样下一轮 AI 就知道之前说过什么了。
🚀 进阶技巧
🎯 指定 AI 的角色(System Prompt)
在 messages 最前面加一条 system 消息,可以给 AI 定义身份:
messages = [{
"role": "system",
"content": "你是一位 Python 教练,用简单易懂的语言回答问题"
}] + messages
📏 控制回答长度(max_tokens)
如果觉得 AI 回复太长,在 data 里加一行限制最大 token 数:
"max_tokens": 256,
🌡️ 控制随机性(temperature)
temperature 控制回答的创造性,越高越随机。日常对话用 0.7 左右比较自然;想要稳定答案可以设 0.3 以下。
▶️ 运行效果
🤖 AI 聊天机器人已启动,输入 '退出' 结束对话
你: Python 里 list 和 tuple 有什么区别?
AI: 主要区别在于是否可变。list(列表)可以增删改,比如 a.append(x),而 tuple(元组)一旦创建就不能修改,所以 tuple 更安全、更省内存。
你: 那什么时候该用 tuple?
AI: 适合存不变的数据,比如坐标 (x, y)、日期 (year, month, day),或者作为字典的键。不想被意外修改的数据就用 tuple。
你: 退出
👋 再见!
📋 速查卡
API 端点
siliconflow.cn/v1/chat/completions
认证方式
Bearer Token(Header 里传)
免费模型
Qwen/Qwen2.5-7B-Instruct
消息角色
system / user / assistant
参数 temperature
0.0(严格)~ 1.0(创意)
参数 max_tokens
限制回答最大 token 数
✍️ 动手练习
今天的练习题,把代码跑起来,然后:
🥉 初级:让 AI 帮你解释一个不懂的编程概念,比如"什么是闭包"
🥈 中级:给 AI 加一个 system prompt,把它变成"Python 代码审查员",帮检查语法错误
🥇 挑战:尝试接入流式输出(stream: True),让 AI 的回答一个字一个字地打印出来
恭喜你完成了 AI 聊天机器人的搭建!
有了这个基础,你可以继续扩展:加图形界面、接微信、搭本地知识库……
动手试了,才是真正的学会。
🔮 下期预告
「用 Python 写一个 Todo List 应用——Tkinter 图形界面,从入门到实战」
下周一见!