Python調(diào)用DeepSeek?API的完整操作指南
簡(jiǎn)介
本文將詳細(xì)介紹如何使用 Python 調(diào)用 DeepSeek API,實(shí)現(xiàn)流式對(duì)話并保存對(duì)話記錄。相比 Go 版本,Python 實(shí)現(xiàn)更加簡(jiǎn)潔優(yōu)雅,適合快速開發(fā)和原型驗(yàn)證。https://cloud.siliconflow.cn/i/vnCCfVaQ
1. 環(huán)境準(zhǔn)備
1.1 依賴安裝
pip install requests
1.2 項(xiàng)目結(jié)構(gòu)
deepseek-project/ ├── main.py # 主程序 └── conversation.txt # 對(duì)話記錄文件
2. 完整代碼實(shí)現(xiàn)
import os
import json
import time
import requests
from datetime import datetime
def save_to_file(file, content, is_question=False):
"""保存對(duì)話內(nèi)容到文件"""
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
if is_question:
file.write(f"\n[{timestamp}] Question:\n{content}\n\n[{timestamp}] Answer:\n")
else:
file.write(content)
def main():
# 配置
url = "https://api.siliconflow.cn/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY" # 替換為你的 API Key
}
# 打開文件用于保存對(duì)話
with open("conversation.txt", "a", encoding="utf-8") as file:
while True:
# 獲取用戶輸入
question = input("\n請(qǐng)輸入您的問題 (輸入 q 退出): ").strip()
if question.lower() == 'q':
print("程序已退出")
break
# 保存問題
save_to_file(file, question, is_question=True)
# 準(zhǔn)備請(qǐng)求數(shù)據(jù)
data = {
"model": "deepseek-ai/DeepSeek-V3",
"messages": [
{
"role": "user",
"content": question
}
],
"stream": True,
"max_tokens": 2048,
"temperature": 0.7,
"top_p": 0.7,
"top_k": 50,
"frequency_penalty": 0.5,
"n": 1,
"response_format": {
"type": "text"
}
}
try:
# 發(fā)送流式請(qǐng)求
response = requests.post(url, json=data, headers=headers, stream=True)
response.raise_for_status() # 檢查響應(yīng)狀態(tài)
# 處理流式響應(yīng)
for line in response.iter_lines():
if line:
line = line.decode('utf-8')
if line.startswith('data: '):
if line == 'data: [DONE]':
continue
try:
content = json.loads(line[6:]) # 去掉 'data: ' 前綴
if content['choices'][0]['delta'].get('content'):
chunk = content['choices'][0]['delta']['content']
print(chunk, end='', flush=True)
file.write(chunk)
file.flush()
except json.JSONDecodeError:
continue
# 添加分隔符
print("\n----------------------------------------")
file.write("\n----------------------------------------\n")
file.flush()
except requests.RequestException as e:
error_msg = f"請(qǐng)求錯(cuò)誤: {str(e)}\n"
print(error_msg)
file.write(error_msg)
file.flush()
if __name__ == "__main__":
main()
3. 代碼詳解
3.1 核心功能
文件記錄功能
save_to_file 函數(shù)負(fù)責(zé):
- 生成時(shí)間戳
- 格式化保存問題和答案
- 自動(dòng)刷新文件緩沖區(qū)
API 配置
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY" # 替換為你的 API Key
}
流式請(qǐng)求處理
程序使用 requests 庫的流式處理功能:
- 使用
stream=True啟用流式傳輸 - 逐行處理響應(yīng)數(shù)據(jù)
- 實(shí)時(shí)顯示和保存內(nèi)容
3.2 配置參數(shù)說明
API 請(qǐng)求參數(shù):
model: 使用的模型名稱stream: 啟用流式輸出max_tokens: 最大輸出長度 (2048)temperature: 控制隨機(jī)性 (0.7)top_p,top_k: 采樣參數(shù)frequency_penalty: 重復(fù)懲罰系數(shù)
4. 錯(cuò)誤處理
代碼包含完整的錯(cuò)誤處理機(jī)制:
- 檢查 HTTP 響應(yīng)狀態(tài)
- 捕獲網(wǎng)絡(luò)異常
- 處理 JSON 解析錯(cuò)誤
- 文件操作錯(cuò)誤處理
5. 使用方法
5.1 修改配置
在代碼中替換 YOUR_API_KEY 為你的實(shí)際 API Key。
5.2 運(yùn)行程序
python main.py
5.3 交互方式
- 輸入問題進(jìn)行對(duì)話
- 輸入 ‘q’ 退出程序
- 查看 conversation.txt 獲取對(duì)話記錄
6. 性能優(yōu)化建議
文件操作
- 使用適當(dāng)?shù)木彌_區(qū)大小
- 定期刷新文件緩沖
- 正確關(guān)閉文件句柄
網(wǎng)絡(luò)請(qǐng)求
- 設(shè)置適當(dāng)?shù)某瑫r(shí)
- 使用會(huì)話(Session)復(fù)用連接
- 處理網(wǎng)絡(luò)異常
內(nèi)存管理
- 及時(shí)釋放資源
- 避免大量數(shù)據(jù)積累
- 使用生成器處理流式數(shù)據(jù)
總結(jié)
Python 版本的 DeepSeek API 調(diào)用實(shí)現(xiàn)簡(jiǎn)單直觀,適合快速開發(fā)和測(cè)試。通過流式處理和文件記錄,提供了完整的對(duì)話體驗(yàn)。
到此這篇關(guān)于Python調(diào)用DeepSeek API的完整操作指南的文章就介紹到這了,更多相關(guān)Python調(diào)用DeepSeek API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 如何使用?Python?實(shí)現(xiàn)?DeepSeek?R1?本地化部署
- Python使用Flask結(jié)合DeepSeek開發(fā)(實(shí)現(xiàn)代碼)
- Python調(diào)用DeepSeek?API的案例詳細(xì)教程
- python使用django調(diào)用deepseek api搭建ai網(wǎng)站
- Python結(jié)合DeepSeek API實(shí)現(xiàn)PDF轉(zhuǎn)Word的方案
- Python與DeepSeek的深度融合實(shí)戰(zhàn)
- Python使用DeepSeek進(jìn)行聯(lián)網(wǎng)搜索功能詳解
- python+ollama自己寫代碼調(diào)用本地deepseek模型
相關(guān)文章
Python模塊multiprocessing & 實(shí)現(xiàn)多進(jìn)程并發(fā)方式
文章介紹了Python的multiprocessing模塊,用于實(shí)現(xiàn)多進(jìn)程編程,涵蓋了Process、Queue、Pipe、Pool等主要類及其方法,以及進(jìn)程管理、進(jìn)程間通信、進(jìn)程同步等內(nèi)容,強(qiáng)調(diào)了多進(jìn)程的優(yōu)勢(shì)和應(yīng)用場(chǎng)景,并提供示例代碼幫助理解2026-05-05
Postman安裝與使用詳細(xì)教程 附postman離線安裝包
這篇文章主要介紹了Postman安裝與使用詳細(xì)教程 附postman離線安裝包,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Python?Matplotlib中使用plt.savefig存儲(chǔ)圖片的方法舉例
pytorch下保存圖像有很多種方法,但是這些基本上都是基于圖像處理的,將圖像的像素指定一定的維度,下面這篇文章主要給大家介紹了關(guān)于Python?Matplotlib中使用plt.savefig存儲(chǔ)圖片的相關(guān)資料,需要的朋友可以參考下2023-02-02
tensorflow建立一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)的方法
本篇文章主要介紹了tensorflow建立一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02
Python實(shí)現(xiàn)獲取某天是某個(gè)月中的第幾周
這篇文章主要介紹了Python實(shí)現(xiàn)獲取某天是某個(gè)月中的第幾周,本文代碼實(shí)現(xiàn)獲取指定的某天是某個(gè)月中的第幾周、周一作為一周的開始,需要的朋友可以參考下2015-02-02
詳解如何在VS Code中安裝Spire.PDF for Python
這篇文章主要為大家詳細(xì)介紹了如何在VS Code中安裝Spire.PDF for Python,文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10

