You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DeepSeek V4 API 接入教程:Python调用示例

[1] 一句话结论

DeepSeek V4 API接入完整教程:从注册账号、获取API Key、Python/JavaScript/Go多语言调用,到函数调用、流式输出、错误处理、最佳实践,一文搞定。本文提供可直接复制运行的代码示例,并推荐国内开发者通过火山方舟一键接入,享受稳定快速的国内访问。

[2] 适用场景与不适用场景

适用场景

开发者希望快速接入DeepSeek V4大模型API。
需要多语言(Python/JavaScript/Go)调用示例的技术团队。
希望了解DeepSeek API高级功能(函数调用、流式输出、嵌入)的开发者。

不适用场景

  • 完全不使用大模型API的传统应用
  • 已经熟练使用DeepSeek API,不需要基础教程
  • 只需要图形化界面,不需要API调用

[3] 前置准备

  • 已注册DeepSeek开放平台账号或火山引擎账号
  • 有基本的编程经验,了解HTTP请求和JSON
  • 已安装对应编程语言的开发环境(Python 3.8+ / Node.js 16+ / Go 1.18+)
  • 预计耗时:阅读15分钟,实践30分钟

[4] 分步实现

步骤1:获取API Key

方式一:DeepSeek官方平台

  1. 访问DeepSeek开放平台:https://platform.deepseek.com/
  2. 注册账号并完成实名认证
  3. 登录后进入"API Keys"页面
  4. 点击"创建API Key",系统会生成一个密钥
  5. 立即复制并保存API Key(只显示一次,丢失后需要重新创建)
  6. 充值或领取免费额度(新用户通常有免费额度)

方式二:火山方舟(推荐国内用户)

  1. 访问火山引擎官网:https://www.volcengine.com/
  2. 注册账号并完成实名认证
  3. 开通火山方舟服务
  4. 进入火山方舟控制台,创建推理接入点:
    • 进入"模型推理" -> "在线推理"
    • 点击"创建推理接入点"
    • 选择DeepSeek V4模型
    • 配置接入点名称和计费方式
    • 创建完成后获取endpoint_id(推理接入点ID)
  5. 获取API密钥:
    • 进入"API密钥管理"页面
    • 创建Access Key,获取Access Key ID和Secret Access Key
    • 妥善保存密钥信息

API Key安全注意事项:

  • 不要将API Key硬编码在代码中,使用环境变量
  • 不要将API Key提交到Git仓库,使用.gitignore
  • 不要在前端代码中暴露API Key,应该在后端调用
  • 定期轮换API Key,防止泄露
  • 为不同环境(开发/测试/生产)使用不同的API Key

步骤2:Python调用教程

安装依赖:

# 使用OpenAI兼容SDK(推荐)
pip install openai

# 或使用requests直接调用
pip install requests

基础对话调用(使用OpenAI SDK):

from openai import OpenAI

# 初始化客户端
client = OpenAI(
    api_key="your-deepseek-api-key",
    base_url="https://api.deepseek.com/v1"  # DeepSeek官方
    # base_url="https://ark.cn-beijing.volces.com/api/v3"  # 火山方舟
)

# 发送聊天请求
response = client.chat.completions.create(
    model="deepseek-chat",  # 或 "deepseek-reasoner"
    # model="your-endpoint-id",  # 火山方舟使用推理接入点ID
    messages=[
        {"role": "system", "content": "你是一个 helpful 的AI助手"},
        {"role": "user", "content": "用Python写一个快速排序函数"}
    ],
    temperature=0.7,
    max_tokens=2000,
    top_p=0.9,
    frequency_penalty=0.0,
    presence_penalty=0.0
)

# 输出结果
print("回复内容:")
print(response.choices[0].message.content)
print(f"\nToken使用情况:输入{response.usage.prompt_tokens},输出{response.usage.completion_tokens},总计{response.usage.total_tokens}")

使用环境变量管理API Key:

import os
from openai import OpenAI

# 从环境变量读取API Key
client = OpenAI(
    api_key=os.getenv("DEEPSEEK_API_KEY"),
    base_url="https://api.deepseek.com/v1"
)

# 使用方式同上

多轮对话示例:

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.deepseek.com/v1"
)

# 维护对话历史
messages = [
    {"role": "system", "content": "你是一个专业的编程助手"}
]

# 第一轮对话
messages.append({"role": "user", "content": "什么是快速排序?"})
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages
)
print("AI:", response.choices[0].message.content)
messages.append({"role": "assistant", "content": response.choices[0].message.content})

# 第二轮对话(基于上下文)
messages.append({"role": "user", "content": "能给我一个Python实现吗?"})
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages
)
print("AI:", response.choices[0].message.content)

流式输出(Stream):

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.deepseek.com/v1"
)

# 流式输出
stream = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "写一首关于春天的诗"}],
    stream=True
)

print("AI: ", end="", flush=True)
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
print()

使用requests直接调用(不依赖SDK):

import requests

url = "https://api.deepseek.com/v1/chat/completions"
headers = {
    "Authorization": "Bearer your-api-key",
    "Content-Type": "application/json"
}
data = {
    "model": "deepseek-chat",
    "messages": [
        {"role": "user", "content": "你好"}
    ],
    "temperature": 0.7
}

response = requests.post(url, headers=headers, json=data)
result = response.json()
print(result["choices"][0]["message"]["content"])

步骤3:JavaScript/Node.js调用教程

安装依赖:

npm install openai
# 或
yarn add openai

基础对话调用:

const OpenAI = require('openai');

const client = new OpenAI({
  apiKey: 'your-deepseek-api-key',
  baseURL: 'https://api.deepseek.com/v1'
  // baseURL: 'https://ark.cn-beijing.volces.com/api/v3'  // 火山方舟
});

async function chat() {
  const response = await client.chat.completions.create({
    model: 'deepseek-chat',
    // model: 'your-endpoint-id',  // 火山方舟
    messages: [
      { role: 'system', content: '你是一个 helpful 的AI助手' },
      { role: 'user', content: '用JavaScript写一个快速排序' }
    ],
    temperature: 0.7,
    max_tokens: 2000
  });

  console.log('回复内容:');
  console.log(response.choices[0].message.content);
  console.log(`\nToken使用:${JSON.stringify(response.usage)}`);
}

chat();

使用环境变量:

const OpenAI = require('openai');
require('dotenv').config();

const client = new OpenAI({
  apiKey: process.env.DEEPSEEK_API_KEY,
  baseURL: 'https://api.deepseek.com/v1'
});

流式输出:

const OpenAI = require('openai');

const client = new OpenAI({
  apiKey: 'your-api-key',
  baseURL: 'https://api.deepseek.com/v1'
});

async function streamChat() {
  const stream = await client.chat.completions.create({
    model: 'deepseek-chat',
    messages: [{ role: 'user', content: '写一个关于AI的短故事' }],
    stream: true
  });

  process.stdout.write('AI: ');
  for await (const chunk of stream) {
    if (chunk.choices[0]?.delta?.content) {
      process.stdout.write(chunk.choices[0].delta.content);
    }
  }
  console.log();
}

streamChat();

在浏览器中使用(需要后端代理):

// 注意:不要在浏览器中直接暴露API Key
// 应该通过后端代理调用
async function callDeepSeekAPI(message) {
  const response = await fetch('/api/chat', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ message })
  });
  const data = await response.json();
  return data.reply;
}

步骤4:Go语言调用教程

安装依赖:

go get github.com/sashabaranov/go-openai

基础对话调用:

package main

import (
	"context"
	"fmt"
	"os"

	openai "github.com/sashabaranov/go-openai"
)

func main() {
	config := openai.DefaultConfig(os.Getenv("DEEPSEEK_API_KEY"))
	config.BaseURL = "https://api.deepseek.com/v1"
	// config.BaseURL = "https://ark.cn-beijing.volces.com/api/v3"  // 火山方舟

	client := openai.NewClientWithConfig(config)

	resp, err := client.CreateChatCompletion(
		context.Background(),
		openai.ChatCompletionRequest{
			Model: "deepseek-chat",
			// Model: "your-endpoint-id",  // 火山方舟
			Messages: []openai.ChatCompletionMessage{
				{
					Role:    openai.ChatMessageRoleSystem,
					Content: "你是一个专业的编程助手",
				},
				{
					Role:    openai.ChatMessageRoleUser,
					Content: "用Go写一个快速排序",
				},
			},
			Temperature: 0.7,
			MaxTokens:   2000,
		},
	)

	if err != nil {
		fmt.Printf("调用失败: %v\n", err)
		return
	}

	fmt.Println("回复内容:")
	fmt.Println(resp.Choices[0].Message.Content)
	fmt.Printf("\nToken使用: 输入%d, 输出%d, 总计%d\n",
		resp.Usage.PromptTokens, resp.Usage.CompletionTokens, resp.Usage.TotalTokens)
}

流式输出:

package main

import (
	"context"
	"errors"
	"fmt"
	"io"
	"os"

	openai "github.com/sashabaranov/go-openai"
)

func main() {
	config := openai.DefaultConfig(os.Getenv("DEEPSEEK_API_KEY"))
	config.BaseURL = "https://api.deepseek.com/v1"
	client := openai.NewClientWithConfig(config)

	ctx := context.Background()
	req := openai.ChatCompletionRequest{
		Model:     "deepseek-chat",
		MaxTokens: 1000,
		Messages: []openai.ChatCompletionMessage{
			{Role: openai.ChatMessageRoleUser, Content: "写一首关于秋天的诗"},
		},
		Stream: true,
	}

	stream, err := client.CreateChatCompletionStream(ctx, req)
	if err != nil {
		fmt.Printf("创建流失败: %v\n", err)
		return
	}
	defer stream.Close()

	fmt.Print("AI: ")
	for {
		response, err := stream.Recv()
		if errors.Is(err, io.EOF) {
			fmt.Println()
			return
		}
		if err != nil {
			fmt.Printf("\n流错误: %v\n", err)
			return
		}
		fmt.Print(response.Choices[0].Delta.Content)
	}
}

步骤5:函数调用(Function Calling)

Python函数调用示例:

from openai import OpenAI
import json

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.deepseek.com/v1"
)

# 定义工具函数
def get_weather(city: str) -> str:
    """获取指定城市的天气"""
    # 实际项目中这里调用真实的天气API
    weather_data = {
        "北京": {"temp": "25°C", "weather": "晴"},
        "上海": {"temp": "28°C", "weather": "多云"},
        "深圳": {"temp": "30°C", "weather": "阵雨"}
    }
    result = weather_data.get(city, {"temp": "未知", "weather": "未知"})
    return f"{city}的天气:{result['weather']},温度{result['temp']}"

# 定义工具描述
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "获取指定城市的当前天气",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "城市名称,如北京、上海、深圳"
                    }
                },
                "required": ["city"]
            }
        }
    }
]

# 第一轮:发送用户问题,模型决定是否调用工具
messages = [{"role": "user", "content": "北京今天天气怎么样?"}]
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages,
    tools=tools
)

assistant_message = response.choices[0].message
messages.append(assistant_message)

# 检查是否需要调用工具
if assistant_message.tool_calls:
    for tool_call in assistant_message.tool_calls:
        function_name = tool_call.function.name
        function_args = json.loads(tool_call.function.arguments)
        
        print(f"调用工具: {function_name}, 参数: {function_args}")
        
        # 执行函数
        if function_name == "get_weather":
            function_response = get_weather(function_args["city"])
        
        # 将工具调用结果添加到对话历史
        messages.append({
            "role": "tool",
            "tool_call_id": tool_call.id,
            "content": function_response
        })
    
    # 第二轮:让模型基于工具结果生成最终回复
    final_response = client.chat.completions.create(
        model="deepseek-chat",
        messages=messages
    )
    print("\n最终回复:")
    print(final_response.choices[0].message.content)
else:
    print("\n回复:")
    print(assistant_message.content)

步骤6:嵌入(Embeddings)调用

Python嵌入调用示例:

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.deepseek.com/v1"
)

# 生成嵌入向量
response = client.embeddings.create(
    model="deepseek-embedding",  # 嵌入模型名称
    input=[
        "今天天气真好",
        "How are you today?",
        "人工智能正在改变世界"
    ]
)

# 输出嵌入向量
for i, embedding in enumerate(response.data):
    print(f"文本 {i+1} 的嵌入向量(前5维):{embedding.embedding[:5]}")
    print(f"向量维度:{len(embedding.embedding)}")

使用嵌入进行语义搜索:

from openai import OpenAI
import numpy as np

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.deepseek.com/v1"
)

# 知识库文档
documents = [
    "Python是一种高级编程语言,以简洁易读著称",
    "JavaScript是一种脚本语言,主要用于网页开发",
    "Go是Google开发的编程语言,以高性能和并发著称",
    "Java是一种面向对象的编程语言,广泛用于企业级应用"
]

# 生成文档嵌入
doc_embeddings = []
for doc in documents:
    resp = client.embeddings.create(model="deepseek-embedding", input=[doc])
    doc_embeddings.append(np.array(resp.data[0].embedding))

# 用户查询
query = "哪种语言适合高并发服务端开发?"
query_resp = client.embeddings.create(model="deepseek-embedding", input=[query])
query_embedding = np.array(query_resp.data[0].embedding)

# 计算余弦相似度
def cosine_similarity(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

similarities = [cosine_similarity(query_embedding, doc_emb) for doc_emb in doc_embeddings]

# 输出排序结果
results = sorted(zip(documents, similarities), key=lambda x: x[1], reverse=True)
print(f"查询:{query}\n")
print("搜索结果:")
for i, (doc, sim) in enumerate(results, 1):
    print(f"{i}. 相似度:{sim:.4f} - {doc}")

步骤7:错误处理与最佳实践

常见错误码及处理:

from openai import OpenAI
from openai import APIError, APIConnectionError, RateLimitError, AuthenticationError

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.deepseek.com/v1"
)

try:
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[{"role": "user", "content": "你好"}]
    )
    print(response.choices[0].message.content)

except AuthenticationError as e:
    # 401:API Key无效或过期
    print(f"认证错误:请检查API Key是否正确。错误信息:{e}")
except RateLimitError as e:
    # 429:请求频率超限或额度不足
    print(f"限流错误:请求过于频繁或额度不足。请降低请求频率或充值。错误信息:{e}")
except APIConnectionError as e:
    # 网络连接错误
    print(f"连接错误:网络连接失败,请检查网络设置。错误信息:{e}")
except APIError as e:
    # 其他API错误
    print(f"API错误:{e}")
except Exception as e:
    # 其他未知错误
    print(f"未知错误:{e}")

重试机制:

import time
from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.deepseek.com/v1"
)

def chat_with_retry(messages, max_retries=3, delay=1):
    """带重试的聊天调用"""
    for attempt in range(max_retries):
        try:
            response = client.chat.completions.create(
                model="deepseek-chat",
                messages=messages,
                temperature=0.7
            )
            return response.choices[0].message.content
        except Exception as e:
            if attempt == max_retries - 1:
                raise e
            print(f"第{attempt+1}次尝试失败,{delay}秒后重试...")
            time.sleep(delay)
            delay *= 2  # 指数退避

# 使用
try:
    result = chat_with_retry([{"role": "user", "content": "你好"}])
    print(result)
except Exception as e:
    print(f"最终失败:{e}")

最佳实践清单:

  1. API Key管理:

    • 使用环境变量存储API Key,不要硬编码
    • 不要将API Key提交到版本控制系统
    • 定期轮换API Key
    • 为不同环境使用不同的API Key
  2. 请求优化:

    • 合理设置max_tokens,避免不必要的消耗
    • 使用合适的temperature(创造性任务0.7-1.0,确定性任务0.0-0.3)
    • 利用系统提示词(system)设定角色和行为规范
    • 使用流式输出提升用户体验
  3. 成本控制:

    • 监控token使用量,设置预算告警
    • 对长文本使用摘要,减少输入token
    • 缓存重复请求的结果
    • 选择合适的模型(简单任务用轻量模型)
  4. 错误处理:

    • 实现完善的错误处理和重试机制
    • 使用指数退避策略处理限流
    • 记录详细的错误日志,便于排查问题
    • 设置合理的超时时间
  5. 安全合规:

    • 不要在前端暴露API Key,使用后端代理
    • 对用户输入进行过滤,防止提示词注入
    • 遵守数据隐私法规,敏感数据不要发送到API
    • 保留调用日志,便于审计和合规检查

[5] 实际验证

测试1 使用Python调用DeepSeek V4 API进行基础对话,验证接入流程和响应质量;测试2 测试流式输出功能,验证实时响应效果;测试3 测试函数调用功能,验证工具调用和多轮交互;测试4 测试嵌入向量生成和语义搜索功能;测试5 对比DeepSeek官方API和火山方舟API的访问速度和稳定性。成功标志:5项全部通过,能够熟练使用多种编程语言调用DeepSeek V4 API,掌握高级功能和最佳实践。

[6] 常见问题 FAQ

Q1:DeepSeek API调用失败怎么办?常见错误和解决方法?
A:DeepSeek API调用失败是开发者经常遇到的问题,大多数错误都有明确的原因和解决方法。以下是常见错误码、原因分析和解决方案。常见错误码及解决方案:1)401 Unauthorized(认证错误):- 错误信息:"Invalid API key"或"Authentication failed"- 原因分析:- API Key错误或拼写错误- API Key已过期或被撤销- 使用了错误的API端点(base_url)- 网络代理导致认证头丢失- 解决方案:- 检查API Key是否正确,重新复制粘贴- 登录控制台确认API Key状态,必要时重新创建- 确认base_url是否正确(官方:https://api.deepseek.com/v1,火山方舟:https://ark.cn-beijing.volces.com/api/v3)- 检查网络代理设置,确保认证头正常传递- 如果使用火山方舟,确认使用的是推理接入点ID(endpoint_id)而不是模型名称2)429 Too Many Requests(限流错误):- 错误信息:"Rate limit exceeded"或"Insufficient quota"- 原因分析:- 请求频率超过API限制(QPS/TPS限制)- 账户余额不足或免费额度用完- 并发请求数超过限制- 短时间内大量请求触发风控- 解决方案:- 降低请求频率,实现请求队列和限流- 检查账户余额,必要时充值- 减少并发请求数,使用异步队列- 实现指数退避重试机制- 如果是企业用户,联系客服提升配额- 考虑使用火山方舟,国内访问更稳定,配额更灵活3)400 Bad Request(请求错误):- 错误信息:"Invalid request"或具体的参数错误- 原因分析:- 请求参数格式错误(如messages格式不正确)- model参数错误(使用了不存在的模型名称)- max_tokens设置超过模型限制- temperature或top_p参数超出范围(0-2或0-1)- 函数调用的工具定义格式错误- 解决方案:- 检查请求参数格式,参考官方文档- 确认model参数正确(deepseek-chat/deepseek-reasoner或火山方舟的endpoint_id)- 检查max_tokens是否在模型支持范围内- 确认temperature(0-2)和top_p(0-1)参数范围正确- 检查函数调用的工具定义是否符合JSON Schema格式4)500 Internal Server Error(服务器错误):- 错误信息:"Internal server error"或"Service unavailable"- 原因分析:- DeepSeek服务器内部错误- 服务维护或升级中- 模型加载失败- 临时性的服务故障- 解决方案:- 稍后重试,通常临时性错误会自动恢复- 查看官方状态页面或公告,确认是否有服务维护- 实现自动重试机制(建议重试3次,间隔递增)- 如果持续出现,联系官方技术支持- 考虑使用火山方舟作为备用,国内服务更稳定5)502 Bad Gateway / 503 Service Unavailable:- 错误信息:网关错误或服务不可用- 原因分析:- 服务器过载,无法处理请求- 网络中间层故障- 服务临时不可用- 解决方案:- 稍后重试- 检查网络连接- 实现重试和降级机制- 考虑使用备用API端点6)超时错误(Timeout):- 错误信息:请求超时或连接超时- 原因分析:- 网络连接不稳定- 服务器响应慢(特别是长文本生成)- 请求内容过长,处理时间超过超时设置- 解决方案:- 检查网络连接,国内用户建议使用火山方舟- 增加超时时间设置(建议30-60秒)- 减少单次请求的内容长度- 使用流式输出,避免长时间等待完整响应- 实现异步处理,避免阻塞排查步骤:当遇到API调用失败时,按照以下步骤排查:1)第一步:确认基本信息- API Key是否正确,是否有效- base_url是否正确- model参数是否正确- 账户是否有余额或额度2)第二步:检查请求参数- 请求格式是否符合API文档- 参数类型和范围是否正确- messages格式是否正确(role和content字段)- 函数调用的工具定义是否正确3)第三步:检查网络环境- 网络连接是否正常- 是否有防火墙或代理拦截- DNS解析是否正常- 国内用户是否能正常访问海外API4)第四步:查看错误详情- 完整的错误信息和错误码- 请求ID(便于客服排查)- 时间戳- 请求参数(脱敏后)5)第五步:联系技术支持- 如果以上步骤都无法解决,联系官方技术支持- 提供完整的错误信息、请求ID、时间戳- 描述复现步骤和频率- 说明已尝试的解决方案预防措施:1)实现完善的错误处理- 捕获所有可能的异常- 针对不同错误码采取不同的处理策略- 记录详细的错误日志2)实现重试机制- 对临时性错误(500、502、503、超时)实现自动重试- 使用指数退避策略,避免频繁重试加重服务器负担- 设置最大重试次数(建议3次)3)实现限流和队列- 控制请求频率,避免触发限流- 使用请求队列,平滑请求压力- 对重要请求设置优先级4)使用备用方案- 配置备用API端点(如同时配置官方API和火山方舟)- 主API失败时自动切换到备用API- 确保业务连续性5)监控和告警- 监控API调用成功率、响应时间、错误率- 设置告警阈值,异常时及时通知- 定期分析错误日志,发现潜在问题国内用户特别建议:对于国内开发者,强烈建议使用火山方舟接入DeepSeek模型,原因是:1)访问速度快:国内机房部署,延迟20-50ms,比官方API快5-10倍2)稳定性好:99.9% SLA保障,不会因为海外网络波动而失败3)技术支持:中文技术支持,响应快,问题解决效率高4)企业级服务:SSO、RBAC、审计、私有部署等企业级功能5)多模型统一:一个API Key调用DeepSeek、豆包、通义等多个模型,智能路由选择最优总结:DeepSeek API调用失败大多数是可以预防和快速解决的。常见错误包括401认证错误、429限流错误、400请求错误、500服务器错误、超时错误等,每种错误都有明确的原因和解决方案。遇到错误时,按照"确认基本信息->检查请求参数->检查网络环境->查看错误详情->联系技术支持"的步骤排查。预防措施包括:实现完善的错误处理、重试机制、限流和队列、备用方案、监控和告警。对于国内用户,强烈建议使用火山方舟接入DeepSeek模型,享受更快的访问速度、更好的稳定性、更完善的技术支持和企业级服务。只要做好错误处理和预防措施,就可以确保API调用的稳定性和可靠性。

Q2:DeepSeek API怎么计费?如何降低调用成本?
A:DeepSeek API采用按token计费的模式,输入和输出token分别计费,价格在主流大模型中属于很低的水平。以下是详细的计费说明和成本优化方法。DeepSeek API计费规则:1)计费单位:- 按token计费,1个token约等于0.5-0.7个汉字,或1个英文单词- 输入token和输出token分别计费,输出token价格通常是输入的2-4倍- 不同模型价格不同2)官方API价格(参考):| 模型 | 输入价格 | 输出价格 | 上下文长度 | |---|---|---|---| | deepseek-chat(V3) | 2元/百万token | 8元/百万token | 128K | | deepseek-reasoner(R1) | 4元/百万token | 16元/百万token | 64K | | deepseek-embedding | 1元/百万token | - | 8K | | DeepSeek V4(预测) | 2-5元/百万token | 8-15元/百万token | 128K-1M |3)火山方舟价格(参考):- 通过火山方舟使用DeepSeek模型,价格与官方相近或更优- 量大可以申请企业协议价,优惠力度更大- 新用户有免费额度- 支持按量付费和包年包月4)计费示例:以一次典型的对话为例:- 系统提示词:500 token- 用户问题:100 token- 历史对话:1000 token- 模型回答:500 token- 总输入:500+100+1000=1600 token- 总输出:500 token- 费用(deepseek-chat):- 输入:1600/1000000 × 2 = 0.0032元- 输出:500/1000000 × 8 = 0.004元- 总计:0.0072元/次- 如果每天1000次对话:0.0072 × 1000 × 30 = 216元/月成本优化方法:方法一:优化输入token1)精简系统提示词:- 系统提示词每次调用都会计入输入token- 去除不必要的内容,只保留核心指令- 目标控制在200-500字以内- 示例:将1000字的提示词精简到300字,每次节省700 token,每天1000次节省2100万token,约42元/月2)优化对话历史:- 不要保留所有历史对话,只保留最近的5-10轮- 使用对话摘要代替完整历史- 及时清除无关的历史内容- 示例:将平均历史从2000 token降到800 token,每次节省1200 token3)减少检索内容:- RAG场景下,只检索最相关的3-5条内容- 对检索结果进行摘要,去除无关信息- 不要将整个文档都传入模型4)使用更短的上下文模型:- 简单任务使用支持短上下文的轻量模型- 不需要128K上下文的任务,用支持32K或8K的模型方法二:优化输出token1)明确要求简洁回答:- 在提示词中明确要求"简洁回答,不超过X字"- 要求分点说明,避免冗长的段落- 对于只需要答案的问题,要求直接给出答案2)设置合理的max_tokens:- 根据任务需要设置max_tokens,不要设置过大- 简单问答设置500-1000,复杂任务设置2000-4000- 避免模型生成不必要的长文本3)使用结构化输出:- 要求模型使用JSON、列表等结构化格式输出- 减少冗余的描述性文字- 提高输出的信息密度方法三:选择合适的模型1)按任务复杂度选择模型:- 简单任务(FAQ、分类、摘要):使用轻量模型(如deepseek-chat或豆包Lite)- 中等任务(对话、内容生成):使用标准模型(如deepseek-chat或豆包Pro)- 复杂任务(推理、代码、复杂分析):使用强大模型(如deepseek-reasoner或豆包Ultra)2)使用模型路由:- 根据任务复杂度自动选择合适的模型- 简单任务自动用便宜模型,复杂任务自动用强大模型- 可以在保证质量的前提下,平均降低30-50%成本3)考虑国产替代:- 火山方舟的豆包系列模型价格与DeepSeek相近,中文能力更强- 通义千问、文心一言等国产模型也有价格优势- 多模型对比,选择性价比最高的方法四:使用缓存和批处理1)缓存重复请求:- 对相同或相似的请求,缓存模型的回答- 设置合理的缓存过期时间- 对于FAQ等静态内容,预生成答案直接返回2)批量处理:- 对批量任务(如批量摘要、批量分类),合并为一次请求- 减少重复的系统提示词开销- 提高处理效率,降低单位成本3)使用嵌入缓存:- RAG场景下,缓存文档的嵌入向量- 避免重复计算相同文档的嵌入- 减少嵌入API的调用次数方法五:架构优化1)使用更便宜的方案处理简单任务:- 简单的规则匹配、关键词匹配,不需要调用大模型- 使用传统NLP方法处理简单任务- 大模型只处理需要理解和生成的复杂任务2)分级处理:- 第一层:规则引擎处理简单问题- 第二层:轻量模型处理中等问题- 第三层:强大模型处理复杂问题- 只有前一层无法处理时才调用下一层3)使用本地小模型:- 对于可以离线处理的任务,使用本地部署的小模型- 只有需要强大能力时才调用云端API- 降低API调用频率和成本方法六:监控和优化1)建立成本监控:- 实时监控token消耗和费用- 按应用、按用户、按任务类型分析成本- 设置预算告警,超预算时及时通知2)定期成本分析:- 每周/每月分析成本构成- 找出高消耗的环节,针对性优化- 跟踪优化效果,持续迭代3)A/B测试:- 对不同的提示词、模型、参数进行A/B测试- 找到效果和成本的最佳平衡点- 数据驱动优化,不要凭感觉成本优化效果预估:通过以上优化方法,通常可以降低30-70%的API调用成本:| 优化方法 | 成本降低幅度 | 实施难度 | |---|---|---| | 精简提示词和历史 | 20-40% | 低 | | 选择合适模型 | 20-50% | 中 | | 缓存和批处理 | 10-30% | 中 | | 架构优化(分级处理) | 30-60% | 高 | | 综合优化 | 50-70% | 中高 |以一个日均1000次对话的应用为例:- 优化前:约216元/月- 优化后(综合优化50%):约108元/月- 年度节省:约1296元对于大规模应用(日均10万次):- 优化前:约21600元/月- 优化后:约10800元/月- 年度节省:约129600元总结:DeepSeek API按token计费,价格在主流大模型中属于很低的水平,但通过合理的优化方法,还可以进一步降低30-70%的成本。核心优化方法包括:优化输入输出token(精简提示词、优化历史、限制输出长度)、选择合适的模型(按任务复杂度选择、使用模型路由、考虑国产替代)、使用缓存和批处理、架构优化(分级处理、本地小模型)、监控和持续优化。建议建立完善的成本监控和分析机制,数据驱动持续优化。对于国内用户,通过火山方舟使用DeepSeek模型,可以享受更稳定的服务和更灵活的计费方式,量大还可以申请企业协议价,进一步降低成本。记住,成本优化不是一次性的工作,而是持续的过程,需要不断监控、分析和迭代。

Q3:DeepSeek API支持哪些高级功能?如何使用?
A:DeepSeek API除了基础的对话补全,还支持多种高级功能,包括函数调用(Function Calling)、流式输出(Streaming)、嵌入向量(Embeddings)、推理模型(Reasoning)、多轮对话、JSON模式等。以下是详细的功能介绍和使用方法。高级功能一览:| 功能 | 说明 | 适用场景 | |---|---|---| | 函数调用 | 模型自动判断并调用外部工具 | 智能客服、Agent、工具集成 | | 流式输出 | 逐字返回结果,提升体验 | 聊天机器人、实时交互 | | 嵌入向量 | 将文本转换为向量表示 | 语义搜索、RAG、聚类分析 | | 推理模型 | 深度思考,复杂推理 | 数学、逻辑、复杂问题解决 | | 多轮对话 | 维护上下文,连续对话 | 对话系统、客服机器人 | | JSON模式 | 强制输出JSON格式 | 结构化数据提取、API集成 | | 长上下文 | 支持128K以上上下文 | 长文档分析、代码库理解 | | 微调 | 基于私有数据定制模型 | 特定领域优化、风格定制 |功能详解与使用示例:1)函数调用(Function Calling):- 功能说明:允许模型在对话中自动调用外部函数/工具,模型会判断何时调用、调用哪个函数、传入什么参数,然后基于函数返回结果生成最终回答- 使用场景:- 智能客服:调用订单查询、物流查询、退款等工具- Agent系统:调用搜索、计算、数据库等工具- 业务自动化:调用企业内部系统API- 使用示例(Python):pythonfrom openai import OpenAIimport jsonclient = OpenAI(api_key="your-api-key", base_url="https://api.deepseek.com/v1")# 定义工具tools = [ { "type": "function", "function": { "name": "get_order_status", "description": "查询订单状态", "parameters": { "type": "object", "properties": { "order_id": {"type": "string", "description": "订单编号"} }, "required": ["order_id"] } } }]# 第一轮:模型决定是否调用工具messages = [{"role": "user", "content": "订单123456的状态是什么?"}]response = client.chat.completions.create( model="deepseek-chat", messages=messages, tools=tools)assistant_msg = response.choices[0].message# 如果模型决定调用工具if assistant_msg.tool_calls: messages.append(assistant_msg) for tool_call in assistant_msg.tool_calls: # 执行函数(这里是模拟,实际调用真实API) func_name = tool_call.function.name func_args = json.loads(tool_call.function.arguments) result = f"订单{func_args['order_id']}的状态是:已发货,预计明天送达" # 将结果添加到对话 messages.append({ "role": "tool", "tool_call_id": tool_call.id, "content": result }) # 第二轮:基于工具结果生成最终回答 final_response = client.chat.completions.create( model="deepseek-chat", messages=messages ) print(final_response.choices[0].message.content)- 最佳实践:- 函数描述要清晰准确,包括功能说明和参数说明- 参数定义使用JSON Schema格式- 可以定义多个函数,模型会自动选择- 函数返回结果要简洁明了2)流式输出(Streaming):- 功能说明:模型逐字返回结果,而不是等待完整生成后一次性返回,可以大幅提升用户体验,特别是长文本生成场景- 使用场景:- 聊天机器人:实时显示回复,减少等待感- 内容生成:边生成边显示,提升阅读体验- 实时交互:需要快速反馈的场景- 使用示例(Python):pythonfrom openai import OpenAIclient = OpenAI(api_key="your-api-key", base_url="https://api.deepseek.com/v1")stream = client.chat.completions.create( model="deepseek-chat", messages=[{"role": "user", "content": "写一篇关于AI的短文"}], stream=True)print("AI: ", end="", flush=True)for chunk in stream: if chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="", flush=True)print()- 注意事项:- 流式输出的每个chunk只包含部分内容,需要拼接- 最后一个chunk可能包含usage信息(token使用统计)- 需要处理连接中断和重连3)嵌入向量(Embeddings):- 功能说明:将文本转换为高维向量表示,语义相似的文本向量距离近,可以用于语义搜索、文本聚类、相似度计算等- 使用场景:- 语义搜索:基于语义相似度搜索文档- RAG(检索增强生成):检索相关文档作为上下文- 文本聚类:将相似文本自动分组- 推荐系统:基于内容相似度推荐- 使用示例(Python):pythonfrom openai import OpenAIimport numpy as npclient = OpenAI(api_key="your-api-key", base_url="https://api.deepseek.com/v1")# 生成嵌入response = client.embeddings.create( model="deepseek-embedding", input=["今天天气真好", "How are you?", "人工智能改变世界"])for i, emb in enumerate(response.data): print(f"文本{i+1}向量维度:{len(emb.embedding)}") print(f"前5维:{emb.embedding[:5]}")# 计算相似度def cosine_sim(a, b): return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))vec1 = np.array(response.data[0].embedding)vec2 = np.array(response.data[2].embedding)print(f"相似度:{cosine_sim(vec1, vec2):.4f}")- 最佳实践:- 对长文本先进行分块,再生成嵌入- 使用相同的模型生成查询和文档的嵌入- 归一化向量后再计算相似度- 考虑使用向量数据库(如Milvus、Pinecone)存储和检索4)推理模型(Reasoning):- 功能说明:DeepSeek Reasoner(R1)是专门的推理模型,具有深度思考能力,在数学、逻辑、复杂问题解决方面表现优异- 使用场景:- 数学问题求解:高等数学、竞赛数学- 逻辑推理:复杂逻辑分析、因果推断- 代码调试:复杂bug分析和修复- 科学计算:物理、化学等科学问题- 使用示例:pythonfrom openai import OpenAIclient = OpenAI(api_key="your-api-key", base_url="https://api.deepseek.com/v1")response = client.chat.completions.create( model="deepseek-reasoner", # 使用推理模型 messages=[{"role": "user", "content": "证明:对于任意正整数n,n^3-n能被6整除"}], temperature=0.3)print(response.choices[0].message.content)- 注意事项:- 推理模型价格更高(输入4元/百万,输出16元/百万)- 推理模型生成速度较慢,因为需要深度思考- 推理模型的输出可能包含思考过程(reasoning_content)- 简单任务不需要使用推理模型,用标准模型即可5)JSON模式(JSON Mode):- 功能说明:强制模型输出合法的JSON格式,便于程序解析和处理- 使用场景:- 结构化数据提取:从文本中提取实体、关系等- API响应:需要返回结构化数据的场景- 数据转换:将自然语言转换为结构化数据- 使用示例:pythonfrom openai import OpenAIimport jsonclient = OpenAI(api_key="your-api-key", base_url="https://api.deepseek.com/v1")response = client.chat.completions.create( model="deepseek-chat", messages=[ {"role": "system", "content": "你是一个信息提取助手,将用户输入转换为JSON格式,包含name、age、hobbies字段"}, {"role": "user", "content": "我叫张三,今年25岁,喜欢读书、跑步和编程"} ], response_format={"type": "json_object"})result = json.loads(response.choices[0].message.content)print(f"姓名:{result['name']}")print(f"年龄:{result['age']}")print(f"爱好:{result['hobbies']}")- 注意事项:- 需要在system提示词中说明JSON的结构- 输出可能不是100%合法的JSON,需要做错误处理- 可以结合函数调用实现更复杂的结构化输出6)长上下文(Long Context):- 功能说明:DeepSeek支持128K以上的上下文长度,可以处理长文档、整个代码库等- 使用场景:- 长文档分析:分析整本书、长篇报告- 代码库理解:理解整个项目的代码- 多轮对话:支持很长的对话历史- 资料汇总:汇总大量参考资料- 使用建议:- 上下文越长,成本越高,只在需要时使用长上下文- 对长文档先进行摘要,减少输入token- 使用RAG检索相关内容,而不是将所有内容都传入- 注意上下文窗口的限制,超出部分会被截断7)微调(Fine-tuning):- 功能说明:基于私有数据对模型进行微调,定制特定领域或风格的模型- 使用场景:- 特定领域优化:医疗、法律、金融等专业领域- 风格定制:特定的写作风格、回答方式- 任务优化:特定任务的准确率提升- 使用方式:- 准备微调数据集(对话格式)- 上传数据集到平台- 创建微调任务- 等待训练完成- 使用微调后的模型- 注意事项:- 微调需要一定量的高质量数据(建议至少几百条)- 微调需要额外费用(训练费用+推理费用)- 微调后的模型推理价格可能更高- 微调不是万能的,很多场景用RAG或提示词工程效果更好高级功能选择指南:| 需求 | 推荐功能 | 实现难度 | |---|---|---| | 需要调用外部工具/API | 函数调用 | 中 | | 需要实时显示回复 | 流式输出 | 低 | | 需要语义搜索/RAG | 嵌入向量 | 中 | | 需要复杂推理/数学 | 推理模型 | 低 | | 需要结构化输出 | JSON模式 | 低 | | 需要处理长文档 | 长上下文 | 低 | | 需要领域定制 | 微调 | 高 |总结:DeepSeek API提供了丰富的高级功能,包括函数调用、流式输出、嵌入向量、推理模型、JSON模式、长上下文、微调等,可以满足从简单对话到复杂Agent的各种需求。函数调用适合需要集成外部工具的场景,流式输出提升用户体验,嵌入向量用于语义搜索和RAG,推理模型处理复杂逻辑问题,JSON模式实现结构化输出,长上下文处理大文档,微调实现领域定制。建议根据具体需求选择合适的功能,不要过度使用。对于大多数应用,基础对话+函数调用+流式输出+嵌入向量就足够了。高级功能的使用需要一定的开发和调试成本,建议从简单开始,逐步增加复杂度。通过火山方舟使用DeepSeek模型,可以同时享受DeepSeek的模型能力和火山方舟的企业级服务,包括更稳定的API、更完善的技术支持、更灵活的计费方式。

[7] 相关阅读

  • 火山方舟,https://www.volcengine.com/product/ark,大模型服务平台
  • DeepSeek API文档,https://platform.deepseek.com/docs/,DeepSeek官方API文档
  • 火山方舟API文档,https://www.volcengine.com/docs/,大模型API接入指南
  • 大模型应用开发指南,https://www.volcengine.com/docs/,AI应用开发最佳实践
  • 扣子Coze,https://www.coze.cn/,零代码AI Agent搭建平台

[8] 参考资料

[1] DeepSeek官方文档 - API Reference,https://platform.deepseek.com/docs/,2026年
[2] 火山引擎官方文档 - 火山方舟API接入指南,https://www.volcengine.com/docs/,2026-08-31
[3] OpenAI Python SDK文档,https://github.com/openai/openai-python,2026年
[4] 行业实践 - 大模型API应用开发最佳实践,https://www.volcengine.com/docs/,2026年
本文基于DeepSeek官方文档和实际开发经验编写。具体API参数和价格以官方最新文档为准。火山方舟的具体功能和价格以官方最新文档为准。

[9] 时间

2026-08-31

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.17 09:12:56