#wip: Testing the base ollama.

This commit is contained in:
KyMAN 2026-04-27 07:04:14 +02:00
parent 2cd06e2227
commit 0e595ea428
7 changed files with 391 additions and 1 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/ollama
/open-webui

53
AIChat.py Normal file
View File

@ -0,0 +1,53 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from typing import Self, Any
from threading import Thread
from requests import post as Post, Response
from json import loads as json_decode
class AIChat:
PAYLOAD:dict[str, str|bool] = {
"model" : "gemma",
"stream" : True
}
def __init__(self:Self) -> None:
self.__working:bool = True
self.__thread:Thread = Thread(target=self.__listener)
self.__thread.start()
def send(self:Self, message:str) -> str:
try:
response:Response
with Post('http://localhost:11434/api/chat', json = {**self.PAYLOAD, "prompt" : message}) as response:
line:bytes
for line in response.iter_lines():
if line:
chunk:dict[str, Any|None] = json_decode(line)
print(chunk.get("response", ""), end = "", flush = True)
if chunk.get("done"):
break
except Exception as exception:
print(f"An error occurred while sending the message: {exception}")
def __listener(self:Self) -> None:
while self.__working:
user_input:str = input('> ')
if user_input in ("close", "exit", "quit"):
self.__working = False
else:
self.send(user_input)
ai_chat = AIChat()

View File

@ -1,3 +1,28 @@
# AIDockerCompose # AIDockerCompose
Ecosistema de intérpretes y modelos de IAs vía Docker Compose. Ecosistema de intérpretes y modelos de IAs vía Docker Compose.
# Notas
```sh
#!/bin/bash
# Descarga de modelos.
docker exec -it ollama ollama pull gemma
# Descarga y prueba por terminal.
docker exec -it ollama ollama run gemma
```
Modelos:
- gemma - 5GB
- gemma3 - 3.3GB
# Referencias
- https://hub.docker.com/r/ollama/ollama
- https://github.com/ollama/ollama
- https://ollama.com/library
- https://ollama.com/steamdj/llama3.1-cpu-only

25
docker-compose.yml Normal file
View File

@ -0,0 +1,25 @@
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
volumes:
- ./ollama:/root/.ollama
ports:
- 11434:11434/tcp
pull_policy: always
tty: true
restart: unless-stopped
# open-webui:
# image: ghcr.io/open-webui/open-webui:main
# container_name: open-webui
# volumes:
# - ./open-webui:/app/backend/data
# depends_on:
# - ollama
# ports:
# - 3000:8080/tcp
# environment:
# - 'OLLAMA_BASE_URL=http://ollama:11434'
# - 'WEBUI_SECRET_KEY=tu_clave_secreta_aqui'
# restart: unless-stopped

150
navecitas.html Normal file
View File

@ -0,0 +1,150 @@
<!DOCTYPE html>
<html>
<head>
<title>Juego de Nave y Marcianos</title>
<style>
body {
margin: 0;
overflow: hidden; /* Oculta las barras de scroll */
}
canvas {
background-color: black;
display: block;
margin: 0 auto;
}
</style>
</head>
<body>
<canvas id="gameCanvas"></canvas>
<script>
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
// Ajustar el tamaño del canvas a la ventana
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
// Variables del juego
let nave = {
x: canvas.width / 2,
y: canvas.height - 50,
velocidad: 5,
disparoIntervalo: 1000, // Intervalo en milisegundos para disparar
disparos: []
};
let marcianos = [];
let numMarcianos = 5; // Puedes cambiar este número
let intervaloMarcianos = 1500; // Intervalo en milisegundos para crear marcianos
let puntuacion = 0;
// Función para crear un marciano
function crearMarciano() {
const ancho = 30;
const alto = 20;
const x = Math.random() * (canvas.width - ancho);
const y = 0;
marcianos.push({
x: x,
y: y,
ancho: ancho,
alto: alto,
velocidad: 2
});
}
// Función para dibujar la nave
function dibujarNave() {
ctx.fillStyle = 'green';
ctx.fillRect(nave.x, nave.y, 30, 30);
}
// Función para dibujar los disparos
function dibujarDisparos() {
nave.disparos.forEach(disparo => {
ctx.fillStyle = 'red';
ctx.fillRect(disparo.x, disparo.y, 5, 10);
});
}
// Función para dibujar los marcianos
function dibujarMarcianos() {
marcianos.forEach(marcian => {
ctx.fillStyle = 'red';
ctx.fillRect(marcian.x, marcian.y, marcian.ancho, marcian.alto);
});
}
// Función para actualizar el juego
function actualizarJuego() {
// Mover la nave
nave.x += nave.velocidad;
// Limitar el movimiento de la nave
if (nave.x < 0) {
nave.x = 0;
}
if (nave.x > canvas.width - 30) {
nave.x = canvas.width - 30;
}
// Crear marcianos
if (Math.random() < 0.03) { // Probabilidad de crear un marciano
crearMarciano();
}
// Mover los marcianos
marcianos.forEach(marcian => {
marcian.x += marcian.velocidad;
});
// Eliminar marcianos que salen de la pantalla
marcianos = marcianos.filter(marcian => marcian.x + marcian.ancho > 0);
// Eliminar disparos que salen de la pantalla
nave.disparos = nave.disparos.filter(disparo => disparo.x + 5 > 0);
// Dibujar todo
ctx.clearRect(0, 0, canvas.width, canvas.height); // Limpia el canvas
dibujarNave();
dibujarMarcianos();
dibujarDisparos();
// Verificar colisiones
colisionar();
}
// Función para verificar colisiones
function colisionar() {
// Colisiones entre la nave y los marcianos
marcianos.forEach(marcian => {
if (
nave.x < marcian.x + marcian.ancho &&
nave.x + 30 > marcian.x &&
nave.y < marcian.y + marcian.alto &&
nave.y + 30 > marcian.y
) {
alert("¡Te ha alcanzado un marciano!");
location.reload(); // Recarga la página para reiniciar el juego
}
});
}
// Evento de clic para disparar
document.addEventListener('click', function() {
const disparo = {
x: nave.x + 15,
y: nave.y
};
nave.disparos.push(disparo);
});
// Llamar a actualizarJuego cada frame
setInterval(actualizarJuego, 20); // Ajustar este valor para controlar la velocidad del juego
</script>
</body>
</html>

134
navecitas.v2.html Normal file
View File

@ -0,0 +1,134 @@
<!DOCTYPE html>
<html>
<head>
<title>Juego de Nave y Marcianos</title>
<style>
body {
margin: 0;
overflow: hidden; /* Oculta las barras de scroll */
}
canvas {
background-color: black;
display: block;
margin: 0 auto;
}
</style>
</head>
<body>
<canvas id="gameCanvas"></canvas>
<script>
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
// Ajustar el tamaño del canvas a la ventana
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
// Variables del juego
let nave = {
x: canvas.width / 2,
y: canvas.height - 50,
velocidad: 5,
disparoIntervalo: 1000, // Intervalo en milisegundos para disparar
disparos: []
};
let marcianos = [];
let numMarcianos = 5; // Puedes cambiar este número
let intervaloMarcianos = 1500; // Intervalo en milisegundos para crear marcianos
let puntuacion = 0;
// Función para crear un marciano
function crearMarciano() {
const ancho = 30;
const alto = 20;
const x = Math.random() * (canvas.width - ancho);
const y = 0;
marcianos.push({
x: x,
y: y,
ancho: ancho,
alto: alto,
velocidad: 2
});
}
// Función para dibujar la nave
function dibujarNave() {
ctx.fillStyle = 'green';
ctx.fillRect(nave.x, nave.y, 30, 30);
}
// Función para dibujar los disparos
function dibujarDisparos() {
nave.disparos.forEach(disparo => {
ctx.fillStyle = 'red';
ctx.fillRect(disparo.x, disparo.y, 5, 10);
// Eliminar disparos que salen de la pantalla
if (disparo.x + 5 < 0) {
nave.disparos = nave.disparos.filter(d => d.x !== disparo.x); // Elimina el disparo del array
}
});
}
// Función para dibujar los marcianos
function dibujarMarcianos() {
marcianos.forEach(marcian => {
ctx.fillStyle = 'red';
ctx.fillRect(marcian.x, marcian.y, marcian.ancho, marcian.alto);
// Mover los marcianos
marcian.x += marcian.velocidad;
});
}
// Función para actualizar el juego
function actualizarJuego() {
// Mover la nave
nave.x += nave.velocidad;
// Limitar el movimiento de la nave
if (nave.x < 0) {
nave.x = 0;
}
if (nave.x > canvas.width - 30) {
nave.x = canvas.width - 30;
}
// Crear marcianos
if (Math.random() < 0.03) {
crearMarciano();
}
// Mover los marcianos
marcianos.forEach(marcian => {
marcian.x += marcian.velocidad;
});
// Eliminar marcianos que salen de la pantalla
marcianos = marcianos.filter(marcian => marcian.x + marcian.ancho > 0);
// Dibujar todo
ctx.clearRect(0, 0, canvas.width, canvas.height); // Limpia el canvas
dibujarNave();
dibujarMarcianos();
dibujarDisparos();
}
// Evento de clic para disparar
document.addEventListener('click', function() {
const disparo = {
x: nave.x + 15,
y: nave.y
};
nave.disparos.push(disparo);
});
// Llamar a actualizarJuego cada frame
setInterval(actualizarJuego, 20);
</script>
</body>
</html>

1
version Normal file
View File

@ -0,0 +1 @@
0.0.1