当前位置:首页>python>今天教你用python 调用DeepSeekAPI

今天教你用python 调用DeepSeekAPI

  • 2026-10-11 07:36:52
今天教你用python 调用DeepSeekAPI
目前是不是有很多人想用AI 进行开发作业提高效率,那首先的学会如何使用DeepSeek API 调用,这是接入AI 开发的第一步,首先得注册一个deepseek 账号,如下图所示,可以开启AI 对话,然后我们可以咨询AI,AI会提示你进行开发操作,我们用python 对接deepseek,进行编程开发应用
python 开发第一步当然是引入依赖的模块
pip install openai 我们通过openai 模块调用openai 提供的功能,不过openai这个需要计费,所以才有下面的商业apikey的限制,否则就是免费的
如下图所示创建一个APIkeys
复制一下这个key
代码中创建一个python 文件

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),输出越多样和具创造性。
1.0
代码生成场景建议0.2,创意写作场景可尝试0.8。
max_tokens
限制模型输出的最大长度(token数)。
∞
用于控制成本和API返回时间,避免长文本生成。
stream
是否流式输出。设为 True 可实现打字机效果,改善用户体验。
False
推荐在对话交互场景开启。
top_p
与temperature类似,也叫核采样。
1.0
通常与temperature二选一调整。
frequency_penalty
对重复内容的惩罚。正值可以减少重复。
0
防止模型陷入重复循环。

消息格式 (messages)

messages 是对话的核心,它是一个字典组成的列表,定义了对话的流程:

  • role (角色): 包括 system(系统设定)、user(用户输入)、assistant(模型回复)。

  • content (内容): 对应角色的文字内容。

🧠 进阶功能详解

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) 获取更详细的信息。

长按二维码关注微信公众号:共鸣书院

一个正在不断成长的公众号

点击下方链接直接关注公众号

每一个人都梦想!
梦想、发现、创新、专注!
创造美好即刻出发,共鸣书院为你引航!

最新文章

随机文章