嘿,还在羡慕别人做的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聊天机器人内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论