当前位置:首页>python>用 Python 做一个简单的聊天机器人

用 Python 做一个简单的聊天机器人

  • 2026-10-11 08:28:06
用 Python 做一个简单的聊天机器人

你有没有想过,自己也能用几行代码搭一个 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 图形界面,从入门到实战」

下周一见!

最新文章

随机文章