Python調(diào)用DeepSeek?API的完整操作指南
簡介
本文將詳細介紹如何使用 Python 調(diào)用 DeepSeek API,實現(xiàn)流式對話并保存對話記錄。相比 Go 版本,Python 實現(xiàn)更加簡潔優(yōu)雅,適合快速開發(fā)和原型驗證。https://cloud.siliconflow.cn/i/vnCCfVaQ
1. 環(huán)境準備
1.1 依賴安裝
pip install requests
1.2 項目結(jié)構(gòu)
deepseek-project/ ├── main.py # 主程序 └── conversation.txt # 對話記錄文件
2. 完整代碼實現(xiàn)
import os import json import time import requests from datetime import datetime def save_to_file(file, content, is_question=False): """保存對話內(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 } # 打開文件用于保存對話 with open("conversation.txt", "a", encoding="utf-8") as file: while True: # 獲取用戶輸入 question = input("\n請輸入您的問題 (輸入 q 退出): ").strip() if question.lower() == 'q': print("程序已退出") break # 保存問題 save_to_file(file, question, is_question=True) # 準備請求數(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ā)送流式請求 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"請求錯誤: {str(e)}\n" print(error_msg) file.write(error_msg) file.flush() if __name__ == "__main__": main()
3. 代碼詳解
3.1 核心功能
文件記錄功能
save_to_file
函數(shù)負責(zé):
- 生成時間戳
- 格式化保存問題和答案
- 自動刷新文件緩沖區(qū)
API 配置
headers = { "Content-Type": "application/json", "Authorization": "Bearer YOUR_API_KEY" # 替換為你的 API Key }
流式請求處理
程序使用 requests
庫的流式處理功能:
- 使用
stream=True
啟用流式傳輸 - 逐行處理響應(yīng)數(shù)據(jù)
- 實時顯示和保存內(nèi)容
3.2 配置參數(shù)說明
API 請求參數(shù):
model
: 使用的模型名稱stream
: 啟用流式輸出max_tokens
: 最大輸出長度 (2048)temperature
: 控制隨機性 (0.7)top_p
,top_k
: 采樣參數(shù)frequency_penalty
: 重復(fù)懲罰系數(shù)
4. 錯誤處理
代碼包含完整的錯誤處理機制:
- 檢查 HTTP 響應(yīng)狀態(tài)
- 捕獲網(wǎng)絡(luò)異常
- 處理 JSON 解析錯誤
- 文件操作錯誤處理
5. 使用方法
5.1 修改配置
在代碼中替換 YOUR_API_KEY 為你的實際 API Key。
5.2 運行程序
python main.py
5.3 交互方式
- 輸入問題進行對話
- 輸入 ‘q’ 退出程序
- 查看 conversation.txt 獲取對話記錄
6. 性能優(yōu)化建議
文件操作
- 使用適當(dāng)?shù)木彌_區(qū)大小
- 定期刷新文件緩沖
- 正確關(guān)閉文件句柄
網(wǎng)絡(luò)請求
- 設(shè)置適當(dāng)?shù)某瑫r
- 使用會話(Session)復(fù)用連接
- 處理網(wǎng)絡(luò)異常
內(nèi)存管理
- 及時釋放資源
- 避免大量數(shù)據(jù)積累
- 使用生成器處理流式數(shù)據(jù)
總結(jié)
Python 版本的 DeepSeek API 調(diào)用實現(xiàn)簡單直觀,適合快速開發(fā)和測試。通過流式處理和文件記錄,提供了完整的對話體驗。
到此這篇關(guān)于Python調(diào)用DeepSeek API的完整操作指南的文章就介紹到這了,更多相關(guān)Python調(diào)用DeepSeek API內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 如何使用?Python?實現(xiàn)?DeepSeek?R1?本地化部署
- Python使用Flask結(jié)合DeepSeek開發(fā)(實現(xiàn)代碼)
- Python調(diào)用DeepSeek?API的案例詳細教程
- python使用django調(diào)用deepseek api搭建ai網(wǎng)站
- Python結(jié)合DeepSeek API實現(xiàn)PDF轉(zhuǎn)Word的方案
- Python與DeepSeek的深度融合實戰(zhàn)
- Python使用DeepSeek進行聯(lián)網(wǎng)搜索功能詳解
- python+ollama自己寫代碼調(diào)用本地deepseek模型
相關(guān)文章
Python pandas遍歷行數(shù)據(jù)的2種方法小結(jié)
pandas在數(shù)據(jù)處理過程中,除了對整列字段進行處理之外,有時還需求對每一行進行遍歷,本文就來介紹Python pandas遍歷行數(shù)據(jù)的2種方法小結(jié),感興趣的可以了解一下2024-03-03瘋狂上漲的Python 開發(fā)者應(yīng)從2.x還是3.x著手?
熱度瘋漲的 Python,開發(fā)者應(yīng)從 2.x 還是 3.x 著手?這篇文章就為大家分析一下了Python開發(fā)者應(yīng)從2.x還是3.x學(xué)起,感興趣的小伙伴們可以參考一下2017-11-11Python并發(fā)concurrent.futures和asyncio實例
這篇文章主要介紹了Python并發(fā)concurrent.futures和asyncio實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05python使用pip成功導(dǎo)入庫后還是報錯的解決方法(針對vscode)
最近在學(xué)爬蟲,但在使用Scrapy包時,在終端通過pip裝好包以后,在pycharm中導(dǎo)入包時,依然會報錯,下面這篇文章主要給大家介紹了關(guān)于python使用pip成功導(dǎo)入庫后還是報錯的解決方法,需要的朋友可以參考下2022-07-07