目前是不是有很多人想用AI 进行开发作业提高效率,那首先的学会如何使用DeepSeek API 调用,这是接入AI 开发的第一步,首先得注册一个deepseek 账号,如下图所示,可以开启AI 对话,然后我们可以咨询AI,AI会提示你进行开发操作,我们用python 对接deepseek,进行编程开发应用pip install openai 我们通过openai 模块调用openai 提供的功能,不过openai这个需要计费,所以才有下面的商业apikey的限制,否则就是免费的fromopenaiimportOpenAI, APIError, APIConnectionError, RateLimitError
client=OpenAI(api_key="你的key", base_url="https://api.deepseek.com")
# 初始对话历史
messages= [{"role": "user", "content": "世界上最长的河流是哪条?"}]
# 第一轮请求
response=client.chat.completions.create(
model="deepseek-v4-pro",
messages=messages
)
然后调用结果,发现调不通,报错等情况发生,我们需要关注输出内容,原因是你没有实名认证api还没有API调用权,你的key 还未生效。
实名认证和充值
用DeepSeek API开发,你可以直接使用OpenAI的Python SDK。整个过程就是装个库、改个地址、写几行代码。
🚀 快速上手三步走
1. 安装依赖
在终端执行以下命令:
bash
# 安装OpenAI SDKpip install openai
💡 特别注意:请安装 openai 库。官方推荐使用它,只需要修改 base_url 即可连接DeepSeek,不要误装成其他包。
2. 获取并配置API Key
访问DeepSeek官网注册账号并创建新的API Key。创建后,将Key复制保存。为了安全,建议通过环境变量设置:
bash
exportDEEPSEEK_API_KEY="你的_API_Key"
3. 编写你的第一个调用
创建一个 main.py 文件,写入以下代码:
python
from openai import OpenAI# 1. 初始化客户端client = OpenAI( api_key="你的_API_Key",# 不推荐硬编码,建议使用环境变量 base_url="https://api.deepseek.com"# 关键:修改为DeepSeek的API地址)# 2. 发起对话请求response = client.chat.completions.create( model="deepseek-v4-pro",# 当前推荐使用的模型 messages=[{"role":"system","content":"你是一位得力的AI编程助手。"},{"role":"user","content":"请用Python写一个冒泡排序算法。"}], temperature=0.7# 控制输出的随机性)# 3. 打印结果print(response.choices[0].message.content)🔧 核心概念与参数详解
模型 (model)
DeepSeek API提供以下核心模型,你需要根据场景选择合适的模型:
deepseek-v4-pro: 推荐使用的旗舰模型,适合大多数对话和复杂推理任务。
deepseek-v4-flash: 主打快速响应,适合对实时性要求较高的简单任务。
deepseek-chat / deepseek-reasoner: 这两个是即将弃用的旧模型名,请避免使用。
关键参数 (parameters)
在 client.chat.completions.create() 方法中,这些参数能帮你精细化控制模型输出:
| | | |
|---|
temperature | 控制随机性和创造性。值越低(接近0),输出越确定和保守;值越高(如1.0),输出越多样和具创造性。 | | 代码生成场景建议0.2,创意写作场景可尝试0.8。 |
max_tokens | | | |
stream | 是否流式输出。设为 True 可实现打字机效果,改善用户体验。 | False | |
top_p | | | |
frequency_penalty | | | |
消息格式 (messages)
messages 是对话的核心,它是一个字典组成的列表,定义了对话的流程:
🧠 进阶功能详解
1. 管理多轮对话 (Multi-round Chat)
DeepSeek的API是“无状态”的,本身不保存历史记录。你需要手动把每次的提问和模型的回答都记录下来,在下一轮请求时一起发送:
python
from openai import OpenAIclient = OpenAI(api_key="你的_API_Key", base_url="https://api.deepseek.com")# 初始对话历史messages =[{"role":"user","content":"世界上最长的河流是哪条?"}]# 第一轮请求response = client.chat.completions.create( model="deepseek-v4-pro", messages=messages)# 将模型的回答添加到历史记录中messages.append(response.choices[0].message)# 第二轮提问,将历史记录一并发送messages.append({"role":"user","content":"那第二长的呢?"})response = client.chat.completions.create( model="deepseek-v4-pro", messages=messages)print(response.choices[0].message.content)2. 流式输出 (Streaming)
通过在API请求中设置 stream=True,可以实现逐字输出的效果,提升交互体验:
python
stream = client.chat.completions.create( model="deepseek-v4-pro", messages=[{"role":"user","content":"讲一个关于AI的小故事"}], stream=True,# 开启流式输出)# 迭代输出每个数据块for chunk in stream:if chunk.choices[0].delta.content isnotNone:print(chunk.choices[0].delta.content, end="")注意:流式输出的数据块需要正确解析,可能需要与SSE等后端服务配合,以确保前端能正确接收和显示。
3. 结构化输出 (JSON Output)
如果你希望模型的回复是结构化的JSON,便于程序处理,可以使用JSON模式:
python
response = client.chat.completions.create( model="deepseek-v4-pro", messages=[{"role":"system","content":"请提取用户输入中的问题与答案,并以JSON格式输出。"},{"role":"user","content":"Python的发明者是谁?吉多·范罗苏姆(Guido van Rossum)。"}], response_format={"type":"json_object"},# 关键:强制JSON输出# 提示:在prompt中明确要求输出JSON,可提高成功率)print(response.choices[0].message.content)4. 让模型调用外部工具 (Function Calling)
这是构建复杂AI Agent的核心能力。首先,定义一个函数,让模型知道它可以调用:
python
tools =[{"type":"function","function":{"name":"get_weather","description":"获取指定地点的天气信息","parameters":{"type":"object","properties":{"location":{"type":"string","description":"城市名称,如'上海'"},},"required":["location"],},},}]# 发起请求,传入工具定义response = client.chat.completions.create( model="deepseek-v4-pro", messages=[{"role":"user","content":"上海的天气如何?"}], tools=tools # 传入工具定义)# 检查模型是否要求调用工具if response.choices[0].message.tool_calls: tool_call = response.choices[0].message.tool_calls[0]# 解析参数,并调用实际的外部API获取天气数据print(f"模型请求调用: {tool_call.function.name}")print(f"参数: {tool_call.function.arguments}")⚠️ 开发实践与注意事项
错误处理 (Error Handling)
在代码中添加异常捕获,可以让你的程序更健壮:
python
from openai import OpenAI, APIError, APIConnectionError, RateLimitErrorclient = OpenAI(api_key="你的_API_Key", base_url="https://api.deepseek.com")try: response = client.chat.completions.create( model="deepseek-v4-pro", messages=[{"role":"user","content":"你好"}],)print(response.choices[0].message.content)except RateLimitError:print("请求过于频繁,请稍后重试。")except APIConnectionError:print("网络连接错误,请检查网络设置。")except APIError as e:print(f"API返回错误: {e}")性能与最佳实践建议
环境变量:通过 os.getenv("DEEPSEEK_API_KEY") 获取API Key,切忌将密钥硬编码在代码中。
虚拟环境:使用 python -m venv 创建项目专属环境,隔离项目依赖。
异步调用:对于高并发场景,可以使用 asyncio 和 aiohttp 库实现异步请求,提升处理效率。
成本控制:合理设置 max_tokens 参数,能帮你有效控制API的返回长度和成本。
模型选择:推荐使用 deepseek-v4-pro 模型以获得最佳性能。
💎 总结与进一步探索
现在,你已经掌握了使用Python调用DeepSeek API的核心方法。后续的探索可以围绕流式输出、多轮对话和工具调用展开,它们是构建更复杂、更智能的AI应用的关键。这样你就成功创建第一个智能体了,
DEEPSEEK_API_KEY怎么获取
调用DeepSeek API遇到“网络连接错误”,问题多出在**网络层面**。别担心,这通常是本地环境与API服务器之间的连接问题。我们从最直观的原因开始,一步步来解决它。
### 🚨 最可能的原因 (先自查这三点)
1. **网络访问不到公网**:本地网络本身存在问题,比如公司网络、学校网络或VPN限制了对 `api.deepseek.com` 域名的访问。
2. **需要配置代理**:如果你在公司网络或某些特定地区,网络请求必须通过代理服务器才能访问外网。
3. **代码配置问题**:最常见的是 `base_url` 或 `api_key` 设置错误。`base_url` 应严格设置为 `https://api.deepseek.com/v1`,注意末尾不要多出斜杠。
### 🛠️ 分步排查指南:请按顺序测试
按照以下步骤操作,定位问题根源。
1. **测试网络连通性**
* 先用浏览器访问 **`https://api.deepseek.com/health`**,看能否正常返回,确认`api.deepseek.com`域名是否可用。
* 然后用命令行工具进行诊断:
* **ping**: 执行 `ping api.deepseek.com`,检查是否连通。
* **telnet**: 执行 `telnet api.deepseek.com 443`,测试HTTPS端口(443)是否开放。
* **traceroute**: 执行 `traceroute api.deepseek.com`,分析网络路径中哪个环节出了问题。
2. **诊断DNS问题**
* 执行 `nslookup api.deepseek.com`,看能否正确解析出IP地址。如果失败或异常,表明DNS存在问题。
* 可以尝试修改系统hosts文件绕过DNS,添加一条记录,如 `104.21.57.156 api.deepseek.com`,或者将系统DNS临时切换为公共DNS,如 `8.8.8.8` 或 `114.114.114.114`。
3. **检查防火墙和代理**
* **检查防火墙**:确保本地防火墙没有阻止Python或你的IDE访问外网。作为排查,可以暂时关闭电脑防火墙和VPN测试。
* **配置代码代理**:如果在公司网络,需要在代码中显式配置代理。
```python
import httpx
from openai import OpenAI
# 配置代理地址(格式:协议://用户名:密码@主机名:端口)
proxy_url = "http://127.0.0.1:7890" # 请替换为你的代理地址
# 创建带代理的 HTTP 客户端
http_client = httpx.Client(proxy=proxy_url, timeout=60.0)
# 初始化 OpenAI 客户端时传入 http_client
client = OpenAI(
api_key="你的_API_Key",
base_url="https://api.deepseek.com/v1",
http_client=http_client,
)
```
* 如果不确定代理地址和端口,请询问你的网络管理员。
4. **优化代码配置与超时**
* **核对关键配置**:仔细检查 `api_key` 是否有效,`base_url` 是否是 `https://api.deepseek.com/v1`,`model` 是否是 `deepseek-v4-pro`。
* **增加超时时间**:网络不佳时,默认超时时间可能太短。可以通过 `httpx` 客户端为 OpenAI 库设置更长的超时时间,如上述代码中的 `timeout=60.0`。
5. **检查服务端状态**
* 访问 [DeepSeek 官方状态页](https://status.deepseek.com),或关注其社交媒体确认是否有大规模服务中断。最近发生过服务中断,如2026年5月28日。
* 用Postman等API工具直接调用测试,排除代码问题。
### 📊 综合排查建议
| 现象 | 可能原因 | 建议检查项/解决方案 |
| :--- | :--- | :--- |
| **`Connection refused`** | 网络连通性/防火墙 | 检查 `api.deepseek.com` 的443端口是否开放。 |
| **`Connection timed out`** | 网络延迟/代理/服务端 | 检查DNS和代理配置,调整超时参数。 |
| **`Invalid API key provided`** | API Key 无效或错误 | 核对代码中的 `api_key` 或尝试重新生成。 |
| **`SSLError`** | 系统时间/证书问题 | 校准系统时间,检查根证书是否完整有效。 |
| **`Name or service not known`** | DNS解析失败 | 检查DNS设置,尝试更换DNS服务器。 |
| **`ProxyError`** | 代理配置错误 | 确认代理地址和端口,检查是否需要认证。 |
| **`RateLimitError`** (429) | 触发限流 | 降低请求频率,实现指数退避重试。 |
| **`BadRequestError`** (400) | 请求参数错误 | 检查模型名称、消息格式等是否正确。 |
| **`AuthenticationError`** (401) | API Key 无效/未授权 | 检查 `api_key` 的有效性,确认账户有足够配额。 |
| **`InternalServerError`** (500) | 服务端内部错误 | 查看官方服务状态页,联系DeepSeek支持。 |
### ✨ 写在最后
网络问题排查可以一步步来,关键就是要保持耐心和细致。建议按顺序执行上述排查步骤,这能帮你快速定位大多数网络问题。如果问题依然存在,别忘了查阅 DeepSeek 官方的【错误码文档】(https://platform.deepseek.com/errors) 获取更详细的信息。
长按二维码关注微信公众号:共鸣书院
一个正在不断成长的公众号
点击下方链接直接关注公众号