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

先给你看看最终效果:

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

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


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

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

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

  • 国外平台:OpenAI(需要魔法上网)

  • 国产平台:阿里通义千问、智谱AI、百度文心(推荐新手用这些)

以智谱AI为例:

  1. 访问官网注册账号

  2. 进入控制台创建API Key

  3. 复制保存好(这个密钥千万别泄露

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

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

  1. 接入微信:用itchat库,让AI自动回复好友消息

  2. 做个网页版:用Flask框架搭个聊天界面

  3. 语音助手:结合语音识别,做个能说话的AI

  4. 专属知识库:在prompt里加上你的资料,让AI变成专家

你最想做哪个?欢迎在评论区告诉我!


五、常见问题急救站

❌ 报错:401 Unauthorized

原因:API密钥错误或过期
解决:检查密钥是否复制完整,去平台重新生成一个

❌ 报错:timeout

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

❌ 返回结果是空的

原因:可能触发了内容审核
解决:换个问法,避免敏感词汇

❌ 超出额度限制

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

遇到其他问题?评论区留言,我看到就回!


写在最后

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

下一篇文章,我会教你把这个机器人升级成网页版,用浏览器就能聊天,敬请期待!

💬 今日互动

  1. 你想用AI做什么应用?

  2. 有没有遇到报错?截图发评论我帮你看!

记得点赞+关注,咱们一起玩转AI时代!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐