#wip: Testing the base ollama.
This commit is contained in:
parent
2cd06e2227
commit
0e595ea428
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/ollama
|
||||||
|
/open-webui
|
||||||
53
AIChat.py
Normal file
53
AIChat.py
Normal 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()
|
||||||
27
README.md
27
README.md
@ -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
25
docker-compose.yml
Normal 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
150
navecitas.html
Normal 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
134
navecitas.v2.html
Normal 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>
|
||||||
Loading…
Reference in New Issue
Block a user