手把手教你Python如何調(diào)用API做個聊天機器人
嘿,還在羨慕別人做的AI應用嗎?其實調(diào)用AI大模型的API,比你想象的簡單太多了。今天咱們就從零開始,做一個命令行聊天機器人。
先給你看看最終效果:
你:今天天氣怎么樣?
AI:我無法獲取實時天氣信息,建議你查看天氣預報應用...
你:給我講個笑話
AI:好的!為什么程序員喜歡深夜工作?因為bug在白天睡覺??
看起來還不錯吧?整個項目核心代碼不到30行,新手1小時就能搞定。
一、準備工作:三件小事搞定
1.1 獲取API密鑰(就像拿快遞需要取件碼)
你需要先注冊一個AI平臺賬號。2026年主流選擇有:
- 國外平臺:OpenAI
- 國產(chǎn)平臺:阿里通義千問、智譜AI、百度文心
以智譜AI為例:
- 訪問官網(wǎng)注冊賬號
- 進入控制臺創(chuàng)建API Key
- 復制保存好(這個密鑰千萬別泄露)
小貼士:大部分平臺都有免費額度,夠你練手了。
1.2 安裝requests庫
打開命令行(Windows按Win+R輸入cmd,Mac按Command+空格搜Terminal),輸入:
pip install requests
等它跑完就行。requests庫就是專門用來發(fā)網(wǎng)絡請求的工具,想象成你的快遞員。
1.3 理解API請求結(jié)構(gòu)(寄快遞類比)
調(diào)用API就像寄快遞:
- 收件地址:API的URL(https://xxxxx)
- 快遞單:你的問題+配置參數(shù)
- 取件碼:你的API密鑰
- 收貨:AI的回答
記住這個邏輯,后面代碼你就秒懂了。
二、代碼實現(xiàn):一步步來,別慌
第一步:發(fā)送最簡單的請求
先新建一個chatbot.py文件,寫下這幾行:
import requests
# 你的API密鑰(記得替換成自己的)
API_KEY = "your_api_key_here"
API_URL = "https://open.bigmodel.cn/api/paas/v4/chat/completions" # 智譜AI的接口
# 準備要發(fā)送的數(shù)據(jù)
headers = {
"Authorization": f"Bearer {API_KEY}", # 這行是證明你的身份
"Content-Type": "application/json" # 告訴服務器我發(fā)的是JSON格式
}
data = {
"model": "glm-4", # 選擇模型版本
"messages": [ # 你的對話內(nèi)容
{"role": "user", "content": "你好,介紹一下自己"}
]
}
# 發(fā)送請求(就像按下寄快遞的按鈕)
response = requests.post(API_URL, headers=headers, json=data)
print(response.json()) # 打印原始返回結(jié)果
運行試試:在命令行輸入python chatbot.py
你會看到一大堆JSON數(shù)據(jù),別怕,這就是AI的回答混在一堆信息里。
第二步:提取AI的回答
剛才那堆數(shù)據(jù)太亂了,我們只要回答內(nèi)容。改一下最后兩行:
response = requests.post(API_URL, headers=headers, json=data)
result = response.json()
# 從返回結(jié)果里挖出AI的回答
ai_message = result['choices'][0]['message']['content']
print(f"AI:{ai_message}")
再運行,這次就清爽多了:
AI:你好!我是智譜AI助手,基于GLM-4模型...
這行代碼在干嘛?
result['choices'][0]:返回結(jié)果里可能有多個回答,我們?nèi)〉谝粋€['message']['content']:從消息里提取純文本內(nèi)容
第三步:加上循環(huán),實現(xiàn)多輪對話
現(xiàn)在只能問一次,咱們改成能一直聊的:
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("聊天機器人已啟動!輸入'退出'結(jié)束對話\n")
while True:
user_input = input("你:")
if user_input == "退出":
print("再見!")
break
# 把用戶的話加到歷史記錄
messages.append({"role": "user", "content": user_input})
data = {
"model": "glm-4",
"messages": messages # 發(fā)送整個對話歷史
}
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讓程序一直循環(huán),直到你輸入"退出"
現(xiàn)在運行,你就能和AI多輪聊天了!
第四步:加點細節(jié)優(yōu)化
真實使用時可能遇到網(wǎng)絡錯誤、API調(diào)用失敗等問題,咱們加個錯誤處理:
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("聊天機器人已啟動!輸入'退出'結(jié)束對話\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"網(wǎng)絡錯誤:{e}")
messages.pop() # 出錯了就撤回這條消息
新增的保護機制:
timeout=30:30秒沒響應就報錯,別傻等try...except:捕獲網(wǎng)絡異常messages.pop():出錯時刪掉剛加的消息,避免對話記錄亂掉
三、完整代碼(直接復制能用)
import requests
# ========== 配置區(qū) ==========
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("聊天機器人已啟動!輸入'退出'結(jié)束對話\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調(diào)用,你就解鎖了無限可能:
- 接入微信:用itchat庫,讓AI自動回復好友消息
- 做個網(wǎng)頁版:用Flask框架搭個聊天界面
- 語音助手:結(jié)合語音識別,做個能說話的AI
- 專屬知識庫:在prompt里加上你的資料,讓AI變成專家
五、常見問題急救站
1.報錯:401 Unauthorized
原因:API密鑰錯誤或過期
解決:檢查密鑰是否復制完整,去平臺重新生成一個
2.報錯:timeout
原因:網(wǎng)絡太把timeout=30改大一點,或者檢查網(wǎng)絡
3.返回結(jié)果是空的
原因:可能觸發(fā)了內(nèi)容審核
解決:換個問法,避免敏感詞匯
4.超出額度限制
原因:免費額度用完了
解決:充值或等下個月重置(大部分平臺每月送免費額度)
總結(jié)
看到這里,你已經(jīng)掌握了AI應用開發(fā)的核心技能——API調(diào)用。這個技術不僅能做聊天機器人,還能用在翻譯、寫作、數(shù)據(jù)分析等各種場景。
到此這篇關于手把手教你Python如何調(diào)用API做個聊天機器人的文章就介紹到這了,更多相關Python聊天機器人內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python3.6+selenium2.53.6自動化測試_讀取excel文件的方法
這篇文章主要介紹了Python3.6+selenium2.53.6自動化測試_讀取excel文件的方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
Python中使用tkFileDialog實現(xiàn)文件選擇、保存和路徑選擇
這篇文章主要介紹了Python中使用tkFileDialog實現(xiàn)文件選擇、保存和路徑選擇,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
在Ubuntu系統(tǒng)中運行python代碼的幾個步驟
項目中需要在Linux上運行自己寫的python腳本,特此記錄一下操作流程,整個流程比較簡單,下面這篇文章主要給大家介紹了關于在Ubuntu系統(tǒng)中運行python代碼的幾個步驟,需要的朋友可以參考下2023-12-12

