DeepSeek 是由深度求索(DeepSeek)公司开发的 国产顶级大语言模型,在多项benchmark上达到或超越GPT-4水平, 在代码生成、数学推理、中文理解等领域表现尤为出色。
核心优势:性价比极高,API价格仅为GPT-4的1/10, 同时提供完全开源的模型权重,可本地部署。
| 模型 | 输入 | 输出 | 性价比 |
|---|---|---|---|
| DeepSeek-V3 | ¥1 | ¥2 | ⭐⭐⭐⭐⭐ |
| GPT-4o | ¥35 | ¥105 | ⭐⭐ |
| Claude 3.5 | ¥21 | ¥105 | ⭐⭐ |
| GPT-4o-mini | ¥1.05 | ¥4.2 | ⭐⭐⭐⭐ |
💡 成本优势明显:同等性能下,DeepSeek成本仅为GPT-4的1/10!
最新旗舰模型 - 2024年12月发布
🎯 核心特性
⭐ 性能亮点
💡 技术创新
# API调用DeepSeek-V3
curl https://api.deepseek.com/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"messages": [
{"role": "user", "content": "解释一下量子计算"}
],
"temperature": 0.7
}'
专业代码模型 - 支持338种编程语言
核心能力
使用示例
# 代码生成 prompt = "用Python实现二叉树的层序遍历" # 代码解释 prompt = "解释以下代码:\n" + code # Bug修复 prompt = "修复以下代码的bug:\n" + buggy_code
强化推理能力 - 数学、科学、逻辑推理
推理特性
DeepSeek-V3
通用场景首选
DeepSeek-Coder-V2
代码场景专用
DeepSeek-R1
复杂推理场景
💡 建议:80%的场景使用DeepSeek-V3即可,性能与成本平衡最佳
# 步骤: 1. 访问:https://platform.deepseek.com 2. 注册账号(手机号验证) 3. 进入"API Keys"页面 4. 点击"Create API Key" 5. 复制保存key(sk-xxxxxx) # 新用户赠送 - 免费额度:500万tokens - 有效期:3个月
💡 无需信用卡:注册即送500万tokens免费额度,足够测试和小规模应用使用3个月
方式1:使用官方SDK
# 安装
pip install openai
# 使用(兼容OpenAI SDK)
from openai import OpenAI
client = OpenAI(
api_key="sk-your-deepseek-key",
base_url="https://api.deepseek.com"
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "你是一个有帮助的助手"},
{"role": "user", "content": "介绍深度学习"}
],
temperature=0.7,
max_tokens=1000
)
print(response.choices[0].message.content)
方式2:使用requests
import requests
import json
url = "https://api.deepseek.com/chat/completions"
headers = {
"Authorization": "Bearer sk-xxx",
"Content-Type": "application/json"
}
data = {
"model": "deepseek-chat",
"messages": [
{"role": "user", "content": "你好"}
],
"stream": False
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
print(result['choices'][0]['message']['content'])
from openai import OpenAI
client = OpenAI(
api_key="sk-your-deepseek-key",
base_url="https://api.deepseek.com"
)
stream = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "user", "content": "讲一个关于AI的故事"}
],
stream=True # 开启流式输出
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
💡 流式输出优势:让用户立即看到回复,首token延迟降低60%,显著提升体验,特别适合对话、写作、代码生成等场景
DeepSeek-V3使用MoE(Mixture of Experts)架构, 总参数671B,但每次推理只激活37B参数。
MoE工作原理
671B
总参数
37B
激活参数
5.5%
激活比例
支持128K token上下文窗口,可处理约10万字的文档。
实际应用场景
# 处理长文档
with open('long_document.txt', 'r') as f:
content = f.read() # 10万字
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "user", "content": f"总结以下文档:\n\n{content}"}
]
)
代码
89%
数学
93%
逻辑
87%
# 复杂推理示例 prompt = """ 小明有15个苹果,给了小红1/3, 然后又买了8个,吃掉了2个。 问:小明现在有多少个苹果? 请一步步分析。 """ # DeepSeek-V3会展示详细推理步骤
专门针对中文场景优化,在中文理解、生成、推理等方面表现优异。
核心优势:
示例场景:
理解"打破砂锅问到底"、"既来之则安之"等成语; 准确处理"意思"的多义性(含义、想法、礼物等); 理解中文特有的委婉表达和言外之意。
# deepseek_client.py - 完整的DeepSeek客户端
from openai import OpenAI
import os
from typing import List, Dict, Optional
class DeepSeekClient:
"""DeepSeek API客户端封装"""
def __init__(self, api_key: Optional[str] = None):
self.api_key = api_key or os.getenv("DEEPSEEK_API_KEY")
self.client = OpenAI(
api_key=self.api_key,
base_url="https://api.deepseek.com"
)
def chat(
self,
messages: List[Dict[str, str]],
model: str = "deepseek-chat",
temperature: float = 0.7,
max_tokens: int = 2000,
stream: bool = False
) -> str:
"""标准对话"""
response = self.client.chat.completions.create(
model=model,
messages=messages,
temperature=temperature,
max_tokens=max_tokens,
stream=stream
)
if stream:
return response # 返回generator
else:
return response.choices[0].message.content
def chat_stream(self, messages, **kwargs):
"""流式对话"""
stream = self.client.chat.completions.create(
messages=messages,
stream=True,
**kwargs
)
for chunk in stream:
if chunk.choices[0].delta.content:
yield chunk.choices[0].delta.content
def code_complete(self, code: str, language: str = "python"):
"""代码补全 - 使用Coder模型"""
prompt = f"```{language}\n{code}\n# 继续完成以上代码"
messages = [
{"role": "user", "content": prompt}
]
return self.chat(messages, model="deepseek-coder")
def explain_code(self, code: str):
"""代码解释"""
prompt = f"详细解释以下代码的功能和实现原理:\n\n```\n{code}\n```"
return self.chat([{"role": "user", "content": prompt}])
def math_solve(self, problem: str):
"""数学题求解 - 显示推理步骤"""
prompt = f"请一步步分析并解决以下数学问题:\n\n{problem}"
return self.chat([
{"role": "system", "content": "你是一个数学专家,擅长逻辑推理"},
{"role": "user", "content": prompt}
], temperature=0.3)
# 使用示例
if __name__ == "__main__":
client = DeepSeekClient()
# 1. 基础对话
answer = client.chat([
{"role": "user", "content": "什么是量子纠缠?"}
])
print(answer)
# 2. 流式输出
for chunk in client.chat_stream([
{"role": "user", "content": "讲个故事"}
]):
print(chunk, end="", flush=True)
# 3. 代码补全
code = client.code_complete("def quicksort(arr):")
print(code)
# 4. 数学求解
solution = client.math_solve("解方程:2x + 5 = 13")
print(solution)
生产环境最佳实践:
package main
import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
"net/http"
"time"
)
type DeepSeekClient struct {
apiKey string
baseURL string
httpClient *http.Client
}
type ChatRequest struct {
Model string `json:"model"`
Messages []Message `json:"messages"`
Temperature float32 `json:"temperature"`
MaxTokens int `json:"max_tokens,omitempty"`
Stream bool `json:"stream"`
}
type Message struct {
Role string `json:"role"`
Content string `json:"content"`
}
type ChatResponse struct {
ID string `json:"id"`
Choices []struct {
Message Message `json:"message"`
FinishReason string `json:"finish_reason"`
} `json:"choices"`
Usage struct {
PromptTokens int `json:"prompt_tokens"`
CompletionTokens int `json:"completion_tokens"`
TotalTokens int `json:"total_tokens"`
} `json:"usage"`
}
func NewDeepSeekClient(apiKey string) *DeepSeekClient {
return &DeepSeekClient{
apiKey: apiKey,
baseURL: "https://api.deepseek.com",
httpClient: &http.Client{
Timeout: 60 * time.Second,
},
}
}
func (c *DeepSeekClient) Chat(ctx context.Context, messages []Message) (string, error) {
reqBody := ChatRequest{
Model: "deepseek-chat",
Messages: messages,
Temperature: 0.7,
MaxTokens: 2000,
Stream: false,
}
jsonData, err := json.Marshal(reqBody)
if err != nil {
return "", err
}
req, err := http.NewRequestWithContext(
ctx,
"POST",
c.baseURL+"/chat/completions",
bytes.NewBuffer(jsonData),
)
if err != nil {
return "", err
}
req.Header.Set("Authorization", "Bearer "+c.apiKey)
req.Header.Set("Content-Type", "application/json")
resp, err := c.httpClient.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
body, _ := io.ReadAll(resp.Body)
return "", fmt.Errorf("API错误 %d: %s", resp.StatusCode, string(body))
}
var chatResp ChatResponse
if err := json.NewDecoder(resp.Body).Decode(&chatResp); err != nil {
return "", err
}
if len(chatResp.Choices) == 0 {
return "", fmt.Errorf("无返回结果")
}
fmt.Printf("[Token] Prompt=%d, Completion=%d, Total=%d\n",
chatResp.Usage.PromptTokens,
chatResp.Usage.CompletionTokens,
chatResp.Usage.TotalTokens)
return chatResp.Choices[0].Message.Content, nil
}
func main() {
client := NewDeepSeekClient("sk-your-api-key")
messages := []Message{
{Role: "system", Content: "你是一个有帮助的AI助手"},
{Role: "user", Content: "Go语言的优势是什么?"},
}
answer, err := client.Chat(context.Background(), messages)
if err != nil {
panic(err)
}
fmt.Println("回答:", answer)
}
经济实惠的企业级RAG解决方案
# 完整RAG实现 - 成本降低90%
from langchain_openai import ChatOpenAI
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate
# 1. 初始化DeepSeek(作为LLM)
llm = ChatOpenAI(
model="deepseek-chat",
openai_api_key="sk-your-deepseek-key",
openai_api_base="https://api.deepseek.com",
temperature=0.3, # 低温度提高稳定性
max_tokens=1500
)
# 2. 使用本地Embedding(免费)
embeddings = HuggingFaceEmbeddings(
model_name="BAAI/bge-large-zh-v1.5", # 中文最佳
model_kwargs={'device': 'cpu'},
encode_kwargs={'normalize_embeddings': True}
)
# 3. 加载文档
from langchain_community.document_loaders import DirectoryLoader, TextLoader
loader = DirectoryLoader('./docs/', glob="**/*.txt", loader_cls=TextLoader)
documents = loader.load()
# 4. 分割文档
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50,
separators=["\n\n", "\n", "。", "!", "?", " "]
)
splits = text_splitter.split_documents(documents)
print(f"文档数:{len(documents)},分割后:{len(splits)}个chunk")
# 5. 构建向量库
vectorstore = Chroma.from_documents(
documents=splits,
embedding=embeddings,
collection_name="deepseek_kb",
persist_directory="./chroma_db"
)
# 6. DeepSeek优化的Prompt
prompt_template = """你是专业的知识库助手,基于检索文档回答问题。
【核心规则】
1. 必须基于【参考文档】回答,不得编造
2. 标注信息来源
3. 不确定时明确说明
4. 回答简洁、结构化
【参考文档】
{context}
【用户问题】
{question}
【回答】请根据文档回答,并标注来源:"""
PROMPT = PromptTemplate(
template=prompt_template,
input_variables=["context", "question"]
)
# 7. 创建RAG链
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(
search_type="similarity",
search_kwargs={"k": 3}
),
return_source_documents=True,
chain_type_kwargs={"prompt": PROMPT}
)
# 8. 使用
question = "深度学习的核心原理是什么?"
result = qa_chain.invoke({"query": question})
print(f"问题:{question}")
print(f"回答:{result['result']}")
print(f"参考文档:{len(result['source_documents'])}个")
# 打印token使用
# DeepSeek会在响应header中返回token统计
成本优势分析:
使用GPT-4o(月10万次调用)
使用DeepSeek-V3(月10万次调用)
💰 节省成本:97.8%(年省¥57,480)
相同性能下,DeepSeek为您的RAG系统节省巨额成本!
参考本站Prompt工程页面 的"示例4:Go + Milvus + DeepSeek"完整实现,包含:
DeepSeek完整支持Function Calling,可以让AI主动调用外部工具和API,实现更强大的功能。
# DeepSeek支持Function Calling
from openai import OpenAI
client = OpenAI(
api_key="sk-xxx",
base_url="https://api.deepseek.com"
)
# 定义工具
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称,如:北京、上海"
}
},
"required": ["city"]
}
}
}
]
# 调用
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "user", "content": "北京今天天气怎么样?"}
],
tools=tools,
tool_choice="auto"
)
# 处理工具调用
if response.choices[0].message.tool_calls:
tool_call = response.choices[0].message.tool_calls[0]
function_name = tool_call.function.name
arguments = json.loads(tool_call.function.arguments)
print(f"调用工具:{function_name}")
print(f"参数:{arguments}")
# 执行函数
weather_data = get_weather(arguments['city'])
# 将结果返回给模型
messages = [
{"role": "user", "content": "北京今天天气怎么样?"},
response.choices[0].message,
{
"role": "tool",
"tool_call_id": tool_call.id,
"content": json.dumps(weather_data)
}
]
final_response = client.chat.completions.create(
model="deepseek-chat",
messages=messages
)
print(final_response.choices[0].message.content)
Function Calling 典型应用:
1. 缓存常见问题
# 使用Redis缓存
import redis
import hashlib
redis_client = redis.Redis()
def cached_chat(question):
# 生成缓存key
cache_key = hashlib.md5(question.encode()).hexdigest()
# 检查缓存
cached = redis_client.get(cache_key)
if cached:
return cached.decode()
# 调用API
answer = deepseek_chat(question)
# 缓存结果(24小时)
redis_client.setex(cache_key, 86400, answer)
return answer
2. Prompt压缩技巧
# 精简系统提示词 # 优化前:800 tokens(过于详细的说明) # 优化后:200 tokens(保留核心指令) # 节省:75%的输入成本 # # 技巧: # - 删除冗余的例子和解释 # - 使用简洁的中文表达 # - 合并相似的规则
3. 批量处理
# 多个问题合并为一次调用
questions = ["问题1", "问题2", "问题3"]
prompt = "\n".join([f"{i+1}. {q}" for i, q in enumerate(questions)])
# 一次调用获取多个答案
1. 并发请求
# Python异步调用
import asyncio
from openai import AsyncOpenAI
async_client = AsyncOpenAI(
api_key="sk-xxx",
base_url="https://api.deepseek.com"
)
async def batch_chat(questions):
tasks = [
async_client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": q}]
)
for q in questions
]
return await asyncio.gather(*tasks)
# 10个问题并发处理
questions = ["问题1", "问题2", ..., "问题10"]
results = asyncio.run(batch_chat(questions))
2. 流式输出
首token延迟降低60%,用户体验大幅提升
# DeepSeek对中文Prompt理解更好 # 优先使用中文编写系统提示词 system_prompt = """ 你是一个专业的技术文档助手。 【核心能力】 1. 技术概念解释清晰易懂 2. 代码示例完整可运行 3. 最佳实践推荐准确 【回答风格】 - 结构化:使用标题、列表 - 实用性:提供代码示例 - 深度:既有原理也有实践 """ # DeepSeek对结构化Prompt响应很好
import time
from openai import OpenAI, APIError, RateLimitError
client = OpenAI(
api_key="sk-xxx",
base_url="https://api.deepseek.com"
)
def chat_with_retry(messages, max_retries=3):
"""带重试的API调用"""
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
timeout=30 # 30秒超时
)
return response.choices[0].message.content
except RateLimitError:
if attempt < max_retries - 1:
wait_time = 2 ** attempt # 指数退避
print(f"限流,等待{wait_time}秒后重试...")
time.sleep(wait_time)
else:
raise
except APIError as e:
print(f"API错误: {e}")
if attempt < max_retries - 1:
time.sleep(1)
else:
raise
return None
⚠️ 安全注意事项
A: 在多项benchmark测试中,DeepSeek-V3的性能与GPT-4相当甚至超越:
价格仅为GPT-4的1/10,性价比极高!
A: 在 DeepSeek平台 进入"账户余额"页面,支持支付宝、微信支付充值。最低充值100元,支持发票。
A: 是的!DeepSeek提供完全开源的模型权重,可以本地部署:
A: 有。免费用户:10 RPM(每分钟请求数);付费用户:根据充值额度提升,最高可达1000 RPM。企业用户可申请更高限额。
A: DeepSeek承诺:
A: 可以!DeepSeek完全兼容OpenAI API格式,只需修改两处:
# 修改前(OpenAI)
client = OpenAI(api_key="sk-openai-key")
# 修改后(DeepSeek)
client = OpenAI(
api_key="sk-deepseek-key",
base_url="https://api.deepseek.com"
)
model="deepseek-chat" # 模型名改为deepseek-chat
无需修改其他代码,无缝切换!
国产之光 - 性能顶级,价格亲民
性能顶级
超越GPT-4
价格亲民
仅为GPT-4的1/10
中文友好
国产优化
完全开源
可本地部署
"让AI能力触手可及,让成本不再是障碍" - DeepSeek团队