2026-04-15

Como usar DeepSeek V4 em Python: do zero até produção

DeepSeek V4 expõe uma API compatível com OpenAI, então em Python você não precisa aprender SDK novo: o pacote openai padrão funciona igualzinho, basta trocar o base URL e a API Key. Este guia cobre instalação, primeira chamada, streaming, tool use e controle de custo em escala.

1. Instalar o SDK e configurar a API Key

Não existe pacote DeepSeek-específico. O openai oficial em Python fala o endpoint direto. Guarde a chave em variável de ambiente, nunca no código.

Obtenha a chave no console oficial do DeepSeek ou em /pricing (mesma API, mais barato). Coloque no shell como DEEPSEEK_API_KEY.

pip install "openai>=1.40.0" python-dotenv
echo "DEEPSEEK_API_KEY=sk-..." >> .env

2. Primeira chat completion

Crie o cliente OpenAI apontando base_url para o endpoint DeepSeek. chat.completions.create é idêntico ao da OpenAI; muda só o nome do modelo: deepseek-chat para uso geral, deepseek-reasoner para raciocínio profundo.

import os
from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()

client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com/v1",
)

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "You are a concise technical assistant."},
        {"role": "user", "content": "Write a Python one-liner to flatten a nested list."},
    ],
    temperature=0.2,
)

print(response.choices[0].message.content)
print("tokens used:", response.usage.total_tokens)

3. Streaming para UIs responsivas

Em chat, CLI ou loop de agente você quer tokens aparecendo enquanto são gerados. Passe stream=True e itere pelos chunks. Cada chunk é um delta compatível com OpenAI.

stream = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "Explain MoE in 3 sentences."}],
    stream=True,
)

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

4. Function calling (tool use)

V4 suporta tool use estilo OpenAI: você declara JSON Schema, o modelo decide quando chamar, você executa e devolve o resultado no próximo turno. Bem mais estável que o V3.

Valide sempre os argumentos que o modelo devolve antes de executar. Trate como entrada não confiável.

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get the current weather for a city",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "Weather in Tokyo?"}],
    tools=tools,
)

call = response.choices[0].message.tool_calls[0]
# call.function.name == "get_weather"
# call.function.arguments == '{"city":"Tokyo"}'

5. Controlar o custo de tokens

Entrada e saída são cobradas separadamente, saída ~2× o preço da entrada. O system prompt e o histórico contam como entrada, então conversas longas inflam a conta rapidamente.

Três táticas: system prompt curto e estável (cacheável), sumarizar turnos antigos quando passar de ~6k tokens, limitar max_tokens. Para volume alto, /pricing oferece chaves oficiais com desconto.

FAQ

Preciso de SDK Python específico do DeepSeek?

Não. O pacote openai padrão funciona, assim como LangChain, LlamaIndex e Instructor.

deepseek-chat ou deepseek-reasoner?

Comece com deepseek-chat. Troque para deepseek-reasoner em matemática, lógica rígida ou cadeias longas.

Dá para usar asyncio?

Sim. Use AsyncOpenAI no lugar de OpenAI, o resto é igual.

Onde consigo chave mais barata?

Em /pricing oferecemos chaves oficiais com desconto.

Python + DeepSeek V4 é o caminho mais curto para um stack LLM em produção em 2026: SDK familiar, qualidade próxima ao GPT-4o e preço que cabe em projetos reais.