简介
本文将详细介绍如何使用 python 调用 deepseek api,实现流式对话并保存对话记录。相比 go 版本,python 实现更加简洁优雅,适合快速开发和原型验证。https://cloud.siliconflow.cn/i/vnccfvaq
1. 环境准备
1.1 依赖安装
pip install requests
1.2 项目结构
deepseek-project/ ├── main.py # 主程序 └── conversation.txt # 对话记录文件
2. 完整代码实现
import os import json import time import requests from datetime import datetime def save_to_file(file, content, is_question=false): """保存对话内容到文件""" 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) # 准备请求数据 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: # 发送流式请求 response = requests.post(url, json=data, headers=headers, stream=true) response.raise_for_status() # 检查响应状态 # 处理流式响应 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
函数负责:
- 生成时间戳
- 格式化保存问题和答案
- 自动刷新文件缓冲区
api 配置
headers = { "content-type": "application/json", "authorization": "bearer your_api_key" # 替换为你的 api key }
流式请求处理
程序使用 requests
库的流式处理功能:
- 使用
stream=true
启用流式传输 - 逐行处理响应数据
- 实时显示和保存内容
3.2 配置参数说明
api 请求参数:
model
: 使用的模型名称stream
: 启用流式输出max_tokens
: 最大输出长度 (2048)temperature
: 控制随机性 (0.7)top_p
,top_k
: 采样参数frequency_penalty
: 重复惩罚系数
4. 错误处理
代码包含完整的错误处理机制:
- 检查 http 响应状态
- 捕获网络异常
- 处理 json 解析错误
- 文件操作错误处理
5. 使用方法
5.1 修改配置
在代码中替换 your_api_key 为你的实际 api key。
5.2 运行程序
python main.py
5.3 交互方式
- 输入问题进行对话
- 输入 ‘q’ 退出程序
- 查看 conversation.txt 获取对话记录
6. 性能优化建议
文件操作
- 使用适当的缓冲区大小
- 定期刷新文件缓冲
- 正确关闭文件句柄
网络请求
- 设置适当的超时
- 使用会话(session)复用连接
- 处理网络异常
内存管理
- 及时释放资源
- 避免大量数据积累
- 使用生成器处理流式数据
总结
python 版本的 deepseek api 调用实现简单直观,适合快速开发和测试。通过流式处理和文件记录,提供了完整的对话体验。
到此这篇关于python调用deepseek api的完整操作指南的文章就介绍到这了,更多相关python调用deepseek api内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论