Creare un chatbot di coding con DeepSeek R1

Lavorare con DeepSeek in Python

James Chapman

Curriculum Manager, DataCamp

Approccio attuale

Tutto l’input e l’output vengono salvati per il messaggio successivo.

Lavorare con DeepSeek in Python

Problemi del reasoning

Gli output di reasoning includono pensieri e una risposta finale.

Lavorare con DeepSeek in Python

Problemi del reasoning

Le best practice richiedono input di reasoning brevi.

Lavorare con DeepSeek in Python

Problemi del reasoning

Salvare i pensieri nella cronologia aumenta costi, tempi e spesso degrada le prestazioni.

Lavorare con DeepSeek in Python

L’approccio di reasoning

Taglia i pensieri dal primo output del modello.

Lavorare con DeepSeek in Python

L’approccio di reasoning

Taglia i pensieri dal secondo output del modello.

Lavorare con DeepSeek in Python

Tagliare i pensieri

Estrai i token di thinking

import re

match = re.search(r'<think>(.*?)<\/think>', response_content, re.DOTALL)
think_content = match.group(1).strip()
print(think_content)

Rimuovi i token di thinking

final_response = re.sub(r'<think>[\s\S]*?<\/think>\s*', '', response_content, re.DOTALL)
print(final_response.strip())
Lavorare con DeepSeek in Python

Codificare un chatbot di reasoning

  • I messaggi "system" non vanno usati con modelli di reasoning
messages = []
user_msgs = [code_to_debug, follow_up]
for q in user_qs:
    user_dict = {"role": "user", "content": q}
    messages.append(user_dict)

    response = client.chat.completions.create(model="deepseek-ai/DeepSeek-R1", messages=messages)


final_response = re.sub(r'<think>[\s\S]*?<\/think>\s*', '', response.choices[0].message.content, re.DOTALL) assistant_dict = {"role": "assistant", "content": final_response.strip()}
messages.append(assistant_dict)
Lavorare con DeepSeek in Python

Passiamo alla pratica !

Lavorare con DeepSeek in Python

Preparing Video For Download...