开发者必看:DeepSeek API接入指南(附代码)

导读部分 返回列表

GitHub上一个帖子最近被顶得很高,楼主问:“有没有比OpenAI便宜、能力在线、支持工具调用的模型?” 底下第一条回复就五个字:DeepSeek,下一个。 评论区直接炸了。有人贴了自己的token...

正文内容

GitHub上一个帖子最近被顶得很高,楼主问:“有没有比OpenAI便宜、能力在线、支持工具调用的模型?”

底下第一条回复就五个字:DeepSeek,下一个。

评论区直接炸了。有人贴了自己的token消耗截图,有人贴代码,还有人把华为云的接入文档链接甩了出来。那篇文档里写得挺清楚:DeepSeek-V3.2支持128K上下文,输入每百万tokens 0.28美元,输出0.42美元,缓存命中只要0.028美元

比GPT-4便宜了不止一个量级。

一、先搞定API Key

华为云的文档里写得很细:先去MaaS控制台,找到“预置服务”页签,选DeepSeek-V3.2,点“开通服务”。开通后点“调用说明”,创建API Key。

有个坑得注意:Key创建后不会立即生效,等几分钟才能用。

Alibaba Cloud的文档也提了同样的事——Base URL默认是https://api.deepseek.com/v1,不用改。但如果走华为云或者Zenlayer的渠道,地址会变

WaveSpeedAI的开发者Dora踩过一个更细的坑:她把Key直接写在代码里,结果不小心推到GitHub,两小时后收到账单报警。后来她改成python-dotenv加载环境变量

from dotenv import load_dotenv
import os

load_dotenv()
API_KEY = os.getenv("DEEPSEEK_API_KEY")

if not API_KEY:
    raise RuntimeError("Missing DEEPSEEK_API_KEY")

她的帖子底下有人回复:“第一次跑API的人,80%的错都是Key没配好。”

二、最简代码:跑通第一个对话

AIML API的文档给了Python和JavaScript的完整示例。Python版长这样:

import requests
import json

response = requests.post(
    "https://api.deepseek.com/v1/chat/completions",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "model": "deepseek-chat",
        "messages": [
            {"role": "user", "content": "介绍一下你自己"}
        ]
    }
)

data = response.json()
print(json.dumps(data, indent=2, ensure_ascii=False))

Dora在WaveSpeedAI的博客里补充了一个细节:模型名称会变。她测试的时候用的是deepseek-chat,但不同区域、不同时间可能叫deepseek-v3.2deepseek-reasoner每次跑之前看一眼官方文档确认一下,能省半小时查错时间。

三、流式输出:让响应“动起来”

如果你做过聊天机器人,应该知道流式输出对用户体验的影响有多大。等十几秒才看到完整回复,和字一个一个往外蹦,完全是两种感受。

DeepSeek支持标准的SSE(Server-Sent Events)流式。Dora给的代码可以直接复制:

payload = {
    "model": "deepseek-chat",
    "messages": [{"role": "user", "content": "给我讲个长一点的故事"}],
    "stream": True,
    "temperature": 0.2
}

with requests.post(
    "https://api.deepseek.com/v1/chat/completions",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json=payload,
    stream=True,
    timeout=60
) as r:
    r.raise_for_status()
    for line in r.iter_lines(decode_unicode=True):
        if not line:
            continue
        if line.startswith("data: "):
            chunk = line[6:]
            if chunk == "[DONE]":
                break
            # 解析JSON,提取内容

她在帖子里特意说了一句:“早期token到达的速度很快,一两秒就能看到第一个字。接入CLI工具后感觉明显比GPT快。”

四、工具调用:让AI“动手做事”

DeepSeek最值钱的能力之一,是并行工具调用

AG2的文档里给了一个旅游助手的例子:同时让AI查汇率和天气,它会一次性调两个工具,然后整合结果。

@user_proxy.register_for_execution()
@chatbot.register_for_llm(description="Currency exchange calculator.")
def currency_calculator(
    base_amount: float,
    base_currency: str = "USD",
    quote_currency: str = "EUR"
) -> str:
    # 实现汇率换算逻辑
    return f"{quote_amount} {quote_currency}"

那个例子里,用户说“我要去欧洲待一周,预算1000美元”,AI自动去查美元兑欧元汇率,再调天气工具看当地气温,最后给出换多少钱、带什么衣服的建议。

五、Rust版:给追求极致性能的人

如果你用Rust,crates.io上有个ds-api,支持工具定义、流式输出、中断注入。

它的设计挺有意思:用宏定义工具,方法签名自动转成JSON Schema

#[tool]
impl Tool for Search {
    /// Search the web and return results.
    /// query: the search query
    async fn search(&self, query: String) -> Value {
        json!({ "results": format!("results for: {query}") })
    }
}

然后在主循环里消费事件流

while let Some(event) = stream.next().await {
    match event.unwrap() {
        AgentEvent::Token(text) => print!("{text}"),
        AgentEvent::ToolCall(c) => println!("\n[calling {}]", c.name),
        AgentEvent::ToolResult(r) => println!("[result] {}", r.result),
    }
}

GitHub上这个项目的issues区有人问“和Python版本比速度怎么样”,作者回:Rust版在tool call密集场景下快30%左右,但第一次接入的学习曲线陡一点。

六、错误处理:别等崩了才想起来

Dora在WaveSpeedAI的第二篇帖子里专门讲了错误处理。她定义了一个可重试的状态码集合:

RETRIABLE = {408, 409, 425, 429, 500, 502, 503, 504}

加上指数退避:

backoff = 0.5
for i in range(attempts):
    try:
        return await chat_once(client, messages)
    except RuntimeError as e:
        if "Retryable" in str(e) and i < attempts - 1:
            await asyncio.sleep(backoff)
            backoff *= 2
            continue
        raise

她在帖子里补了一句:“429最常见,限流了。加随机jitter(50-150ms)能避免同时重试造成的‘羊群效应’。”

七、Dify集成:10分钟搭个智能客服

华为云有一篇文档专门讲DeepSeek + Dify搭建网站客服。步骤很清晰:

  1. 在华为云“西南-贵阳一”区域部署Dify
  2. 开通DeepSeek预置服务,获取API Key和地址
  3. 在Dify里添加“OpenAI-API-compatible”供应商,填地址和Key
  4. 上传知识库文档,配置提示词

文档里有个截图:Dify后台配置页,填Base URL时要去掉末尾的/chat/completions,只留https://api.modelarts-maas.com。很多人卡在这一步。

配置完后,可以在网页里嵌入一个智能客服,基于企业内部文档回答问题。评论区有人贴了自己公司的落地效果:上线后人工客服咨询量降了60%。

八、Zenlayer的参数说明

Zenlayer的文档把参数解释得最清楚

参数说明
temperature0-2,越大越随机,代码场景建议0.1-0.3
max_tokens单次回复最大token数
presence_penalty-2到2,正值鼓励新话题
frequency_penalty-2到2,正值降低重复

有个做翻译工具的开发者在底下留言:“presence_penalty设0.6,翻译时能避免反复用同一个词,输出流畅很多。”


DeepSeek的API文档散在各处,华为云的、阿里云的、Zenlayer的各讲了一部分。但核心代码就那么几段,上面这些够你跑通90%的场景了。

有人把更完整的Python SDK封装发在了 DeepSeek API 专题里,支持流式、工具调用、异步批量,可以直接拿去改。

本文出自 AI一族,原文链接:https://www.aiyizu.cn/?p=867

转发请注明出处,禁止未经允许用于任何商业用途。

文章评分

这篇文章对您有帮助吗?

🤖 随时召唤ZUZU陪你一起探索AI世界
ZUZU 伴学
登录享无限次提问 · 答案仅供参考
ZUZU答:
亲爱的小伙伴您好,我是ZUZU,有什么可以帮您的?😃

分享到

微信
朋友圈
QQ
QQ空间
微博
抖音
小红书
复制
二维码

实用功能

夜间模式
小字
大字
收藏
目录
笔记
朗读
相关
搜索
我的笔记
文章内搜索
相关文章推荐
正在加载相关文章...

反馈建议

您需要登录后才能填写意见反馈信息

分享二维码

使用手机扫描二维码

操作成功