手把手教你Python如何调用API做个聊天机器人

 更新时间:2026年01月15日 08:29:22   作者:易辰君  
这篇文章主要为大家详细介绍了Python如何调用API编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

嘿,还在羡慕别人做的AI应用吗?其实调用AI大模型的API,比你想象的简单太多了。今天咱们就从零开始,做一个命令行聊天机器人。

先给你看看最终效果:

你:今天天气怎么样?
AI:我无法获取实时天气信息,建议你查看天气预报应用...
你:给我讲个笑话
AI:好的!为什么程序员喜欢深夜工作?因为bug在白天睡觉😄

看起来还不错吧?整个项目核心代码不到30行,新手1小时就能搞定。

一、准备工作:三件小事搞定

1.1 获取API密钥(就像拿快递需要取件码)

你需要先注册一个AI平台账号。2026年主流选择有:

  • 国外平台:OpenAI
  • 国产平台:阿里通义千问、智谱AI、百度文心

以智谱AI为例:

  • 访问官网注册账号
  • 进入控制台创建API Key
  • 复制保存好(这个密钥千万别泄露

小贴士:大部分平台都有免费额度,够你练手了。

1.2 安装requests库

打开命令行(Windows按Win+R输入cmd,Mac按Command+空格搜Terminal),输入:

pip install requests

等它跑完就行。requests库就是专门用来发网络请求的工具,想象成你的快递员。

1.3 理解API请求结构(寄快递类比)

调用API就像寄快递:

  • 收件地址:API的URL(https://xxxxx)
  • 快递单:你的问题+配置参数
  • 取件码:你的API密钥
  • 收货:AI的回答

记住这个逻辑,后面代码你就秒懂了。

二、代码实现:一步步来,别慌

第一步:发送最简单的请求

先新建一个chatbot.py文件,写下这几行:

import requests

# 你的API密钥(记得替换成自己的)
API_KEY = "your_api_key_here"
API_URL = "https://open.bigmodel.cn/api/paas/v4/chat/completions"  # 智谱AI的接口

# 准备要发送的数据
headers = {
    "Authorization": f"Bearer {API_KEY}",  # 这行是证明你的身份
    "Content-Type": "application/json"     # 告诉服务器我发的是JSON格式
}

data = {
    "model": "glm-4",           # 选择模型版本
    "messages": [               # 你的对话内容
        {"role": "user", "content": "你好,介绍一下自己"}
    ]
}

# 发送请求(就像按下寄快递的按钮)
response = requests.post(API_URL, headers=headers, json=data)
print(response.json())  # 打印原始返回结果

运行试试:在命令行输入python chatbot.py

你会看到一大堆JSON数据,别怕,这就是AI的回答混在一堆信息里。

第二步:提取AI的回答

刚才那堆数据太乱了,我们只要回答内容。改一下最后两行

response = requests.post(API_URL, headers=headers, json=data)
result = response.json()

# 从返回结果里挖出AI的回答
ai_message = result['choices'][0]['message']['content']
print(f"AI:{ai_message}")

再运行,这次就清爽多了:

AI:你好!我是智谱AI助手,基于GLM-4模型...

这行代码在干嘛?

  • result['choices'][0]:返回结果里可能有多个回答,我们取第一个
  • ['message']['content']:从消息里提取纯文本内容

第三步:加上循环,实现多轮对话

现在只能问一次,咱们改成能一直聊的:

import requests

API_KEY = "your_api_key_here"
API_URL = "https://open.bigmodel.cn/api/paas/v4/chat/completions"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

# 用列表记录对话历史
messages = []

print("聊天机器人已启动!输入'退出'结束对话\n")

while True:
    user_input = input("你:")
    
    if user_input == "退出":
        print("再见!")
        break
    
    # 把用户的话加到历史记录
    messages.append({"role": "user", "content": user_input})
    
    data = {
        "model": "glm-4",
        "messages": messages  # 发送整个对话历史
    }
    
    response = requests.post(API_URL, headers=headers, json=data)
    ai_message = response.json()['choices'][0]['message']['content']
    
    # 把AI的回答也记录下来
    messages.append({"role": "assistant", "content": ai_message})
    
    print(f"AI:{ai_message}\n")

重点看这里

  • messages列表保存了所有对话,这样AI能记住你之前说了啥
  • while True让程序一直循环,直到你输入"退出"

现在运行,你就能和AI多轮聊天了!

第四步:加点细节优化

真实使用时可能遇到网络错误、API调用失败等问题,咱们加个错误处理

import requests

API_KEY = "your_api_key_here"
API_URL = "https://open.bigmodel.cn/api/paas/v4/chat/completions"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

messages = []

print("聊天机器人已启动!输入'退出'结束对话\n")

while True:
    user_input = input("你:")
    
    if user_input == "退出":
        print("再见!")
        break
    
    messages.append({"role": "user", "content": user_input})
    
    data = {
        "model": "glm-4",
        "messages": messages
    }
    
    try:
        response = requests.post(API_URL, headers=headers, json=data, timeout=30)
        
        # 检查请求是否成功
        if response.status_code != 200:
            print(f"请求失败,错误码:{response.status_code}")
            messages.pop()  # 移除刚才添加的用户消息
            continue
        
        ai_message = response.json()['choices'][0]['message']['content']
        messages.append({"role": "assistant", "content": ai_message})
        print(f"AI:{ai_message}\n")
        
    except requests.exceptions.RequestException as e:
        print(f"网络错误:{e}")
        messages.pop()  # 出错了就撤回这条消息

新增的保护机制

  • timeout=30:30秒没响应就报错,别傻等
  • try...except:捕获网络异常
  • messages.pop():出错时删掉刚加的消息,避免对话记录乱掉

三、完整代码(直接复制能用)

import requests

# ========== 配置区 ==========
API_KEY = "your_api_key_here"  # 替换成你的密钥
API_URL = "https://open.bigmodel.cn/api/paas/v4/chat/completions"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

messages = []  # 对话历史

# ========== 主程序 ==========
print("聊天机器人已启动!输入'退出'结束对话\n")

while True:
    user_input = input("你:")
    if user_input == "退出":
        break
    
    messages.append({"role": "user", "content": user_input})
    
    try:
        response = requests.post(
            API_URL, 
            headers=headers, 
            json={"model": "glm-4", "messages": messages},
            timeout=30
        )
        
        if response.status_code == 200:
            ai_message = response.json()['choices'][0]['message']['content']
            messages.append({"role": "assistant", "content": ai_message})
            print(f"AI:{ai_message}\n")
        else:
            print(f"请求失败:{response.status_code}")
            messages.pop()
    
    except Exception as e:
        print(f"出错了:{e}")
        messages.pop()

print("再见!")

总共27行,是不是很简单?

四、进阶方向:可以玩出什么花样

掌握了API调用,你就解锁了无限可能:

  • 接入微信:用itchat库,让AI自动回复好友消息
  • 做个网页版:用Flask框架搭个聊天界面
  • 语音助手:结合语音识别,做个能说话的AI
  • 专属知识库:在prompt里加上你的资料,让AI变成专家

五、常见问题急救站

1.报错:401 Unauthorized

原因:API密钥错误或过期

解决:检查密钥是否复制完整,去平台重新生成一个

2.报错:timeout

原因:网络太把timeout=30改大一点,或者检查网络

3.返回结果是空的

原因:可能触发了内容审核

解决:换个问法,避免敏感词汇

4.超出额度限制

原因:免费额度用完了

解决:充值或等下个月重置(大部分平台每月送免费额度)

总结

看到这里,你已经掌握了AI应用开发的核心技能——API调用。这个技术不仅能做聊天机器人,还能用在翻译、写作、数据分析等各种场景。

到此这篇关于手把手教你Python如何调用API做个聊天机器人的文章就介绍到这了,更多相关Python聊天机器人内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现自动清理电脑垃圾文件详解

    Python实现自动清理电脑垃圾文件详解

    经常存在在我们的电脑中的垃圾文件主要是指系统在运行过程中产生的tmp临时文件、日志文件、临时备份文件等。本文将利用Python实现自动清理这些垃圾文件,需要的可以参考一下
    2022-03-03
  • Python神器之Pampy模式匹配库的用法详解

    Python神器之Pampy模式匹配库的用法详解

    Pampy是Python的一个模式匹配类库,一个只有150行的类库,该库优雅、高效值得广大Python的码农加入自己基本开发栈中。本文就来讲讲Pampy的用法,需要的可以参考一下
    2022-07-07
  • opencv canny边缘检测算法详解

    opencv canny边缘检测算法详解

    本文主要介绍了opencv canny边缘检测算法详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Anaconda2 5.2.0安装使用图文教程

    Anaconda2 5.2.0安装使用图文教程

    这篇文章主要为大家详细介绍了Anaconda2 5.2.0安装使用图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Python3.6+selenium2.53.6自动化测试_读取excel文件的方法

    Python3.6+selenium2.53.6自动化测试_读取excel文件的方法

    这篇文章主要介绍了Python3.6+selenium2.53.6自动化测试_读取excel文件的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Python中使用tkFileDialog实现文件选择、保存和路径选择

    Python中使用tkFileDialog实现文件选择、保存和路径选择

    这篇文章主要介绍了Python中使用tkFileDialog实现文件选择、保存和路径选择,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 在Ubuntu系统中运行python代码的几个步骤

    在Ubuntu系统中运行python代码的几个步骤

    项目中需要在Linux上运行自己写的python脚本,特此记录一下操作流程,整个流程比较简单,下面这篇文章主要给大家介绍了关于在Ubuntu系统中运行python代码的几个步骤,需要的朋友可以参考下
    2023-12-12
  • python csv实时一条一条插入且表头不重复问题

    python csv实时一条一条插入且表头不重复问题

    这篇文章主要介绍了python csv实时一条一条插入且表头不重复问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 基于Python绘制520表白代码

    基于Python绘制520表白代码

    这周五就是520,大家都准备好送给女朋友的礼物了吗?快来利用Python编写个表白代码送给她吧!文中示例代码讲解详细,跟随小编一起动手试一试吧
    2022-05-05
  • Python的Bottle框架中获取制定cookie的教程

    Python的Bottle框架中获取制定cookie的教程

    这篇文章主要介绍了Python的Bottle框架中获取制定cookie的教程,主要是针对别的路径而不是当前页面的cookie,需要的朋友可以参考下
    2015-04-04

最新评论