python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python聊天机器人

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

作者:易辰君

这篇文章主要为大家详细介绍了Python如何调用API编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

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

先给你看看最终效果:

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

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

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

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

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

以智谱AI为例:

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

1.2 安装requests库

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

pip install requests

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

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

调用API就像寄快递:

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

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

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

先新建一个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模型...

这行代码在干嘛?

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

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

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")

重点看这里

现在运行,你就能和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()  # 出错了就撤回这条消息

新增的保护机制

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

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调用,你就解锁了无限可能:

五、常见问题急救站

1.报错:401 Unauthorized

原因:API密钥错误或过期

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

2.报错:timeout

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

3.返回结果是空的

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

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

4.超出额度限制

原因:免费额度用完了

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

总结

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

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

您可能感兴趣的文章:
阅读全文