Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ze0rX!

#1
Hola underc0der's!

Les comparto el siguiente script para que puedan ejecutarlo en sus dispositivos pc o laptop.

Requisitos para ejecutar exitosamente el script.

WSL No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Docker No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Contenedor de ollama No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

En la variable MODELS=("gemma3:4b" "llama3.2:3b")  # LLM1 (Escritor), LLM2 (Editor)
Deben ingresar a la sesion de ollama desde docker o desde la terminal e instalar los modelos que se adecuen a sus necesidades y cambiarlos, use estos dos que son pequeños para que no se sobrecargue mi sistema.
En LOG_DIR="RUTA/DE/TU/DIRECTORIO/PARA/GUARDAR" debes poner tu ruta para que guarde el log para que veas si algo pasa y en el cual se guardara el pequeño libro.


Código: text

#!/bin/bash

# Configuración inicial
OLLAMA_URL="http://localhost:11434/api/generate"
MODELS=("gemma3:4b" "llama3.2:3b")  # LLM1 (Escritor), LLM2 (Editor) 
SYSTEM_PROMPT1="Eres un escritor de libros de ficción. Escribe una página (aproximadamente 100 palabras) para un libro. Usa el contexto previo para continuar la historia de manera coherente, manteniendo los personajes, el tono y la trama. No incluyas títulos ni explicaciones, solo el texto de la página."
SYSTEM_PROMPT2="Eres un editor de libros. Recibe una página escrita y revísala para mejorar la coherencia, estilo y continuidad con el contexto previo. Asegúrate de que los personajes, el tono y la trama se mantengan consistentes. Devuelve la página editada (aproximadamente 100 palabras). Si no hay cambios necesarios, devuelve la página tal cual. No incluyas explicaciones, solo el texto editado."
LOG_DIR="RUTA/DE/TU/DIRECTORIO/PARA/GUARDAR"
LOG_FILE="$LOG_DIR/book_ollama.log"
BOOK_FILE="$LOG_DIR/book.txt"
PAGE_COUNT=0
MAX_PAGES=5  # Reducido a 5 páginas

# Verificar dependencias
for cmd in curl jq; do
    if ! command -v "$cmd" &> /dev/null; then
        echo "Error: $cmd no está instalado. Instálalo para continuar."
        exit 1
    fi
done

# Crear directorio de logs
if [ ! -d "$LOG_DIR" ]; then
    echo "Creando directorio $LOG_DIR..."
    mkdir -p "$LOG_DIR" 2>/tmp/mkdir_error.log
    if [ $? -ne 0 ]; then
        echo "Error al crear $LOG_DIR. Detalles:"
        cat /tmp/mkdir_error.log
        exit 1
    fi
else
    if [ ! -w "$LOG_DIR" ]; then
        echo "Error: No tienes permisos de escritura en $LOG_DIR"
        exit 1
    fi
fi

for log in "$LOG_FILE" "$BOOK_FILE"; do
    touch "$log" || { echo "Error al crear $log"; exit 1; }
done

# Función para registrar mensajes
log_message() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}

# Función para enviar solicitud a Ollama
send_request() {
    local prompt="$1"
    local model="$2"

    json_payload=$(jq -n --arg model "$model" --arg prompt "$prompt" '{model: $model, prompt: $prompt, stream: false}')
    response=$(curl -s -X POST "$OLLAMA_URL" -H "Content-Type: application/json" -d "$json_payload")
    if [ $? -ne 0 ]; then
        echo "Error: No se pudo conectar con Ollama"
        log_message "Error: No se pudo conectar con Ollama para $model"
        exit 1
    fi

    answer=$(echo "$response" | jq -r '.response')
    if [ -z "$answer" ] || [ "$answer" = "null" ]; then
        echo "Error: Respuesta inválida de $model"
        log_message "Error: Respuesta inválida de $model"
        exit 1
    fi

    echo "$answer"
}

# Función para obtener el contexto reciente (última página)
get_recent_context() {
    if [ -s "$BOOK_FILE" ]; then
        # Extraer la última página (ignorando las líneas de "Página X" y los separadores)
        tac "$BOOK_FILE" | awk '/^Página [0-9]+$/ {exit} {print}' | tac | grep -v '^$' | tail -n 100
    else
        echo ""
    fi
}

# Inicializar el libro
> "$BOOK_FILE"
log_message "Inicio de la creación del libro"

# Bucle para generar las 5 páginas
while [ $PAGE_COUNT -lt $MAX_PAGES ]; do
    PAGE_COUNT=$((PAGE_COUNT + 1))
    log_message "Generando página $PAGE_COUNT"

    # Obtener el contexto reciente (solo la última página)
    CONTEXT=$(get_recent_context)
    if [ -z "$CONTEXT" ]; then
        log_message "Contexto vacío para página $PAGE_COUNT (inicio del libro)"
    else
        log_message "Contexto para página $PAGE_COUNT:\n$CONTEXT"
    fi

    # LLM1: Generar página inicial
    log_message "LLM1 (${MODELS[0]}) escribiendo página $PAGE_COUNT"
    WRITER_PROMPT="$SYSTEM_PROMPT1\nContexto previo:\n$CONTEXT"
    INITIAL_PAGE=$(send_request "$WRITER_PROMPT" "${MODELS[0]}")
    log_message "Página inicial generada:\n$INITIAL_PAGE"

    # LLM2: Revisar y editar página
    log_message "LLM2 (${MODELS[1]}) editando página $PAGE_COUNT"
    EDITOR_PROMPT="$SYSTEM_PROMPT2\nContexto previo:\n$CONTEXT\nPágina a editar:\n$INITIAL_PAGE"
    EDITED_PAGE=$(send_request "$EDITOR_PROMPT" "${MODELS[1]}")
    log_message "Página editada:\n$EDITED_PAGE"

    # Validar continuidad (simple: comparar si hay palabras clave comunes)
    # Por ejemplo, buscamos si hay al menos 3 palabras comunes entre el contexto y la página editada
    if [ -n "$CONTEXT" ]; then
        COMMON_WORDS=$(echo "$CONTEXT" | tr ' ' '\n' | sort | uniq | grep -F -f - <(echo "$EDITED_PAGE" | tr ' ' '\n' | sort | uniq) | wc -l)
        if [ "$COMMON_WORDS" -lt 3 ]; then
            log_message "Advertencia: La página $PAGE_COUNT parece no seguir el contexto (solo $COMMON_WORDS palabras comunes). Reintentando..."
            PAGE_COUNT=$((PAGE_COUNT - 1))
            continue
        fi
    fi

    # Agregar la página al libro
    echo "Página $PAGE_COUNT" >> "$BOOK_FILE"
    echo "$EDITED_PAGE" >> "$BOOK_FILE"
    echo "" >> "$BOOK_FILE"  # Separador entre páginas
    log_message "Página $PAGE_COUNT agregada al libro"
done

log_message "Libro completado con $PAGE_COUNT páginas. Guardado en $BOOK_FILE"
echo "Libro completado. Revisa $BOOK_FILE para ver el resultado."


Modifiquenlo a su gusto y diviertanse.
#2
Empieza por lo mas basico y simple, dale mantenimiento a tu propia computadora si es que te gusta el hardware y si no el software y redes es inmenso, con la ia y la nube lo que necesitaras es tiempo. Puedes contarme mas y en mi experiencia te puedo dar un cable
#3
Primero tienes que desbloquear el bootloader, despues cambiar el recovery por un custom recovery de acuerdo a tu modelo y finalmente desde ahi flashear tu rom o firmware
#4
 :o  Cada vez van a querer tener mas el control, que interesante noticia.
#5
Hola Underc0der,
Este año donde mas nos invade la IA en todos los niveles, esta disponible de forma open source algunos LLM que podemos usar para crear lo que se nos venga en gana.

Primero tenemos que ir a la pagina oficial del Ollama que es uno de los rápidos para mi ya que lo puedes ejecutar desde la terminal de comandos y consume menos recursos que una interfaz grafica y pues como vamos a usar la GPU pues hay que ahorrar recursos.
Bien primero hay que ir a No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, eliges tu sistema operativo y hay que seguir las instrucciones de instalación, si tienes problemas deja abajo problema e intentare ayudarte lo mas pronto posible.

Una vez instalado por defecto el servidor de ollama se inicia al iniciar el sistema, si no es el caso hay que abrir una terminal, no es necesario ejecutarlo con privilegios de administrador ni nada:
Código: text
ollama serve
con esto empezara a cargar el servidor junto con el puerto 11434, de forma predeterminada esta url en nuestro sistema No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Para ejecutar un modelo es necesario mas no indispensable para algunos modelos que podamos disponer de una tarjeta de video nvidia con al menos 4GB de VRAM y 8GB de ram, esto es porque el modelo se ejecuta de forma local, no se conecta de forma predeterminada a internet y aunque puede simular que se conecta a internet o hace ping a algún lado en realidad solo esta mostrando una simulación.

Descargamos el modelo que prefieramos desde la pagina del ollama, estos se encuentran en No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, para este ejemplo usaremos No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, para ejecutarlo abrimos una terminal de nuestro sistema operativo y escribimos:
Código: text
ollama run llama3.2:3b
Esto lo que hara es descargarnos directamente el LLM a nuestro ordenador. Al finalizar veremos un prompt como el siguiente:
Código: text
>>>Send a message (/? for help)
Esto significa que nuestro LLM esta listo para recibir instrucciones. Por ahora podemos preguntarle lo que quieras o puedes ejecutar el comando siguiente:
Código: text
>>>/?
Available Commands:
  /set            Set session variables
  /show           Show model information
  /load <model>   Load a session or model
  /save <model>   Save your current session
  /clear          Clear session context
  /bye            Exit
  /?, /help       Help for a command
  /? shortcuts    Help for keyboard shortcuts

Use """ to begin a multi-line message.

>>> Send a message (/? for help)

En este momento nos centraremos en el comando /set
Código: text
>>>/set
Available Commands:
  /set parameter ...     Set a parameter
  /set system <string>   Set system message
  /set history           Enable history
  /set nohistory         Disable history
  /set wordwrap          Enable wordwrap
  /set nowordwrap        Disable wordwrap
  /set format json       Enable JSON mode
  /set noformat          Disable formatting
  /set verbose           Show LLM stats
  /set quiet             Disable LLM stats

>>> Send a message (/? for help)

Código: text
/set parameter
sirve para que podamos modificar el LLM en la mayoría de las características que lo componen, por ejemplo podemos cambiar el LLM para que sea muy creativo o muy preciso, esto dependera de sus necesidades.

Código: text
>>> /set parameter
Available Parameters:
  /set parameter seed <int>             Random number seed
  /set parameter num_predict <int>      Max number of tokens to predict
  /set parameter top_k <int>            Pick from top k num of tokens
  /set parameter top_p <float>          Pick token based on sum of probabilities
  /set parameter min_p <float>          Pick token based on top token probability * min_p
  /set parameter num_ctx <int>          Set the context size
  /set parameter temperature <float>    Set creativity level
  /set parameter repeat_penalty <float> How strongly to penalize repetitions
  /set parameter repeat_last_n <int>    Set how far back to look for repetitions
  /set parameter num_gpu <int>          The number of layers to send to the GPU
  /set parameter stop <string> <string> ...   Set the stop parameters

>>> Send a message (/? for help)

usaremos
Código: text
/set parameter temperature 0.4
para modificar el valor por defecto que es 0.7, esto hará que el LLM responda de forma menos errónea posible.

Podemos crearle un entorno a nuestro LLM para que sepa que es lo que es, y que es lo que estará haciendo, aqui pueden ser tan creativos como sea posible eso hará tener mejores resultados en sus respuestas:
Código: text
/set system
Con el comando anterior se le cambia el mensaje por defecto al LLM el cual agregamos de la siguiente manera:
Código: text
>>> /set system Eres agenteIA, un asistente de IA para operaciones de analisis de datos.

Pueden cambiarle el mensaje por el que quieran.


A continuación les presento a KotZek, mi asistente personal de IA para cuando tengo una idea y quiero llevarla mas lejos.



El LLM no es ni mas ni menos que qwen2.5-coder:7b configurado para funcionar en mi hardware.

Para detener el LLM despues de haber consultado nuestro proposito lo hacemos con el comando
Código: text
>>>/bye

¿Como guardamos el historial en nuestro chat?
con el comando 
Código: text
/set history

¿Como ordenamos la salida?
Código: text
/set wordwrap

¿Como vemos los tokens usados?
Código: text
/set verbose

¿Como guardamos nuestra conversación?
Código: text
/save llama3.2:3b

¿Con esta configuración mi LLM puede recordar todo?
No, el LLM solo puede contener un contexto de 4 a 5 chats continuos para darte una respuesta amplia, se puede ampliar con el siguiente comando:
Código: text
/set parameter num_ctx 6144
por defecto algunos LLM vienen a 4096 o 2048 por lo que hay que ir subiendo con cuidado según nuestro hardware.

Espero con esta pequeña introducción se animen a usarlo si su hardware se lo permite y si no pueden probar las apis directamente desde las paginas oficiales de los proveedores de IA.

Gracias por leerme!
Hail! Underc0de!

#6
Que tal Underc0des, este es mi primer post y quiero hacerlo compartiendo los libros en PDF de la certificación Cyber Security Foundation - CSFPC que se abre gratuitamente por lo que vi dejaron gratis el examen por unos días del 13 al 31 de Julio de este año 2021. Lo mas seguro es que la vuelvan a dejar free a finales del año o a principios del siguiente. Les comparto la liga por si quieren estar pendiente de sus cambios: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Incluso si no quieren esperar pueden pagar 150 dólares para el examen o simplemente enriquecer su conocimiento.

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Saludos y Hail Underc0de!
#7
Exelente!!!!

Gracias!!
#8
 ;D