App de ejemplo que permite establecer una conversación interactiva guardando el contexto con la IA de DeepSeek, mediante el API de OpenAI y el lenguaje de programación Python. La respuesta de la IA será progresiva (se irá mostrando al usuario letra por letra conforme la IA vaya devolviéndola) y se adaptará al contexto de toda la conversación.
- Requisitos para desarrollar una app Python que mantenga una conversación interactiva con la IA de DeepSeek.
- Aplicación Python que mantiene una conversación interactiva con la IA de DeepSeek.
Requisitos para desarrollar una app Python que mantenga una conversación interactiva con la IA de DeepSeek
Los requisitos los explicamos en este tutorial:
Puesto que usaremos OpenAI, instalaremos el plugin para Python correspondiente, con el comando:
1 |
pip3 install openai |
Aplicación Python que mantiene una conversación interactiva con la IA de DeepSeek
A continuación, mostramos el código de ejemplo en Python de una sencilla aplicación que establece una conversación interactiva con la IA de DeepSeek usando el API de OpenAI:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
from openai import OpenAI # URL y API Key de DeepSeek URL = "https://api.deepseek.com/v1" API_KEY = "sk-e.......c........d" # Configura el cliente de OpenAI para usar DeepSeek clienteIA = OpenAI( base_url=URL, api_key=API_KEY, ) def obtenerRespuestaIA(pregunta, modelo="deepseek-chat"): try: # Realiza la solicitud a la API de DeepSeek respuestasIA = clienteIA.chat.completions.create( model=modelo, messages=pregunta, stream=True # Habilita el streaming para respuestas progresivas ) # Recorre todas las posibles respuestas de la IA respuestaCompleta = "" for respuesta in respuestasIA: if respuesta.choices and respuesta.choices[0].delta: contenido = respuesta.choices[0].delta.content or "" print(contenido, end='', flush=True) respuestaCompleta += contenido # Devuelve la respuesta completa para mantener el contexto return respuestaCompleta except Exception as e: print(f"\nSe ha producido un error al conversar con DeepSeek: {e}") return None def conversacionInteractivaIA(rol="Eres un asistente útil"): # Inicializa el historial de la conversación messages = [ {"role": "system", "content": rol} ] while True: # Pedir al usuario que introduzca una pregunta preguntaUsuario = input("\nPregunta algo a la IA: ") # Si el usuario presiona INTRO sin escribir una pregunta, termina la conversación if not preguntaUsuario.strip(): print("Has finalizado la conversación con la IA.") break # Añade la pregunta del usuario al historial para mantener el contexto messages.append({"role": "user", "content": preguntaUsuario}) # Obtiene la respuesta de la IA print("\nRespuesta de la IA:\n", end="") respuestaIA = obtenerRespuestaIA(messages) # Añade la respuesta de la IA al historial if respuestaIA: messages.append({"role": "assistant", "content": respuestaIA}) if __name__ == "__main__": print(""" Bienvenido a la conversación con la IA proporcionada por ProyectoA. Escribe tu pregunta a la IA y pulsa INTRO. Si quieres finalizar la conversación pulsa INTRO sin introducir texto.""") # Iniciar la conversación interactiva manteniendo el contexto conversacionInteractivaIA() |
Si compilamos la app Python y hacemos una pregunta a la IA, veremos que nos devuelve, de forma progresiva, la respuesta. Por ejemplo, le preguntamos:
genérame una contraseña aleatoria de 14 caracteres. No muestres explicaciones, únicamente la contraseña
Efectivamente genera una contraseña de 14 caracteres. Y si preguntamos sobre la respuesta, diciéndole lo siguiente:
quiero que aparezca el símbolo «.» y no el símbolo «#»
Se ajusta al contexto y genera únicamente la contraseña pero sin el carácter «.» y con el carácter «#»:
