Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   La Taberna (https://www.clubdelphi.com/foros/forumdisplay.php?f=40)
-   -   ChatGPT IA (https://www.clubdelphi.com/foros/showthread.php?t=96008)

kurono 17-12-2022 00:43:59

ChatGPT IA
 
hola como estan algunos de ustedes a propbado esta IA ,en caso la e probado y en verdad me da miedo no es por lo que hace o puede hacer si no por las empresas ya que veran una solucion a sus problema de programacion que creen

Casimiro Notevi 17-12-2022 18:25:56

Puedes estar tranquilo ;)

MAXIUM 19-12-2022 16:14:06

La acabo de probar. Pero lo encontré como un Google...

Eso de usar IA para programar, se viene hace años.

movorack 19-12-2022 16:49:20

Es mas que un simple buscador. Al final del mensaje coloco un ejemplo sencillo, que inicialmente reemplazaría al buscador, pero también al foro y aplicada a un IDE de desarrollo, hasta podría darte parte del código.

Mas evolucionada, hasta podría entregar porciones de código a herramientas low code y podrían ser usadas por personas con un conocimiento mínimo de programación. En la empresa donde estoy tienen una herramienta low code propia y con ella, los consultores son los que construyen cosas que antes eran tareas del equipo de desarrollo. Pero están limitados a cuando requieren programar algo. Con una IA como esta, integrada en esa herramienta low code, estas personas podrán realizar tareas de programación sencillas.

------------------------------------------------------------------------------
----- Conversación con ChatGPT (Aprox 1 minuto) --------------
------------------------------------------------------------------------------

Yo: ¿Cómo puedo codificar un archivo en base 64 usando Delphi 10.1?

ChatGPT: Puedes usar la función EncodeString de la unidad EncdDecd para codificar una cadena en base 64. Aquí tienes un ejemplo de cómo hacerlo:

Código Delphi [-]
uses
  EncdDecd;

var
  InputString: string;
  OutputString: string;
begin
  InputString := 'Hola mundo';
  OutputString := EncodeString(InputString);
  // OutputString ahora contiene la cadena codificada en base 64
end;

Si quieres codificar un archivo en lugar de una cadena, puedes leer el contenido del archivo en una cadena y luego codificar la cadena de la misma manera. Aquí tienes un ejemplo de cómo hacerlo:

Código Delphi [-]
uses
  EncdDecd, System.Classes;

var
  InputFile: TFileStream;
  InputString: string;
  OutputString: string;
begin
  InputFile := TFileStream.Create('C:\mi_archivo.txt', fmOpenRead);
  try
    SetLength(InputString, InputFile.Size);
    InputFile.Read(InputString[1], InputFile.Size);
  finally
    InputFile.Free;
  end;
  OutputString := EncodeString(InputString);
  // OutputString ahora contiene la cadena codificada en base 64
end;

Espero que esto te ayude. Si tienes alguna pregunta adicional, no dudes en hacerla.

Yo: No tengo la unidad EncdDecd

ChatGPT: La unidad EncdDecd se proporciona con Delphi y se utiliza para realizar tareas de codificación y decodificación, como la codificación y decodificación de cadenas en diferentes formatos de codificación de caracteres. Si no tienes la unidad EncdDecd en tu proyecto, puedes agregarla de la siguiente manera:

Abre tu proyecto en Delphi.
Haz clic en "Project" en el menú superior y selecciona "Add to Project..." en el menú desplegable.
Selecciona la pestaña "Files" en el cuadro de diálogo que aparece.
Haz clic en el botón "Add" y navega hasta la carpeta donde se instaló Delphi. La unidad EncdDecd se encuentra en la carpeta "source\rtl\sys".
Selecciona el archivo "EncdDecd.pas" y haz clic en "Open".
Debería aparecer la unidad EncdDecd en la lista de unidades de tu proyecto. Ahora deberías poder utilizar las funciones de la unidad EncdDecd, como EncodeString, en tu código.

Espero que esto te ayude. Si tienes alguna pregunta adicional, no dudes en hacerla.

Yo: Hay otra alternativa para esto?

ChatGPT: Sí, puedes usar la biblioteca Indy para codificar y decodificar cadenas en base 64 en Delphi. Indy es un conjunto de componentes de red que proporciona funcionalidades para aplicaciones de red, como el envío y la recepción de mensajes a través de protocolos como HTTP, FTP y SMTP.

Para usar Indy para codificar y decodificar cadenas en base 64, primero debes asegurarte de que tienes la biblioteca Indy instalada y agregada a tu proyecto. Si no tienes la biblioteca Indy instalada, puedes descargarla de la página de descargas de Indy en SourceForge (https://sourceforge.net/projects/indy/).

Una vez que tienes la biblioteca Indy instalada y agregada a tu proyecto, puedes usar la clase TIdEncoderMIME para codificar y decodificar cadenas en base 64. Aquí tienes un ejemplo de cómo hacerlo:

Código Delphi [-]
uses
  IdCoderMIME;

var
  Encoder: TIdEncoderMIME;
  InputString: string;
  OutputString: string;
begin
  Encoder := TIdEncoderMIME.Create(nil);
  try
    InputString := 'Hola mundo';
    OutputString := Encoder.Encode(InputString);
    // OutputString ahora contiene la cadena codificada en base 64
  finally
    Encoder.Free;
  end;
end;

Si quieres codificar un archivo en lugar de una cadena, puedes leer el contenido del archivo en una cadena y luego codificar la cadena de la misma manera. Aquí tienes un ejemplo de cómo hacerlo:

Código Delphi [-]
uses
  IdCoderMIME, System.Classes;

var
  Encoder: TIdEncoderMIME;
  InputFile: TFileStream;
  InputString: string;
  OutputString: string;
begin
  Encoder := TIdEncoderMIME.Create(nil);
  try
    InputFile := TFileStream.Create('C:\mi_archivo.txt', fmOpenRead);
    try
      SetLength(InputString, InputFile.Size);
      InputFile.Read(InputString[1], InputFile.Size);
    finally
      InputFile.Free;
    end;
    OutputString := Encoder.Encode(InputString);
    // OutputString ahora contiene la cadena codificada en base 64
  finally
    Encoder.Free;
  end;
end;

Espero que esto te ayude. Si tienes alguna pregunta adicional, no dudes en hacerla.

movorack 19-12-2022 17:22:31

Y otro ejemplo relevante.

Con un buen amigo, hemos estado construyendo nuestro propio juego de Orlog (Juego de mesa derivado de Assassin's Creed Valhalla)

Ya tenemos los dados hechos en 3D y en madera, fichas, tokens, etc. Pero una parte de este set son los "favores divinos" (figuras de madera que representan dioses nórdicos) y los queremos hacer en forma de cartas de tarot.

El fin de semana nos pusimos en la tarea de usar Midjourney para crear los diseños de esas cartas y el resultado aunque muchas veces inexacto era impresionante. En algún momento le pregunté a mi amigo: ¿Cuánto nos hubiese costado esto con un diseñador gráfico? :(

Se hizo un pago de USD 10 por un mes de uso de la IA. De seguro un diseñador, por muy económico que cobrara, sería mas que eso.

-----------

Usar una IA de estas (Sea la de imágenes o código), no está al alcance de todos. Pero un programador, una empresa, alguien con los recursos y visión. Puede hacer que sea sencilla o práctica de usar. Para cosas especificas o avanzadas según lo que requiera.

Es una herramienta, sí. Una herramienta que solventa muchas cosas rutinarias, "sencillas" y que puede verse como algo que libera a los programadores de esas tareas "sencillas" y rutinarias, pero que en los ojos del empresario de turno es el camino para dejar de contratar a una base grande de desarrolladores.

Y con el tiempo irá evolucionando mucho mas... Aunque no se si al punto de reemplazar al talento humano. "Amanecerá y veremos"

Casimiro Notevi 19-12-2022 18:17:48

Muy interesante :)

tsk 19-12-2022 18:35:04

El otro día vi código generado para un Arduino, y pues se acercó pero le faltó, porque realmente no creo que todavía esté a la altura para ciertos casos

Código:

#include <stdio.h>
#include <Arduino_FreeRTOS.h>

// Declaración de los pines a utilizar para controlar los semáforos
const int pinSemaforo1 = 2;
const int pinSemaforo2 = 3;

// Declaración de las funciones que implementan las tareas concurrentes
void controlSemaforo1(void*);
void controlSemaforo2(void*);

void setup() {
  // Configuración de los pines de salida para controlar los semáforos
  pinMode(pinSemaforo1, OUTPUT);
  pinMode(pinSemaforo2, OUTPUT);
}

void loop() {
  // Creación de las tareas concurrentes
  xTaskCreate(controlSemaforo1, "controlSemaforo1", 128, NULL, 1, NULL);
  xTaskCreate(controlSemaforo2, "controlSemaforo2", 128, NULL, 1, NULL);
}

void controlSemaforo1(void* params) {
  // Control del semáforo 1
  while (true) {
    digitalWrite(pinSemaforo1, HIGH); // Encendido del semáforo rojo
    delay(5000); // Espera de 5 segundos
    digitalWrite(pinSemaforo1, LOW); // Apagado del semáforo rojo
    digitalWrite(pinSemaforo1, HIGH); // Encendido del semáforo verde
    delay(5000); // Espera de 5 segundos
    digitalWrite(pinSemaforo1, LOW); // Apagado del semáforo verde
  }
}

void controlSemaforo2(void* params) {
  // Control del semáforo 2
  while (true) {
    digitalWrite(pinSemaforo2, HIGH); // Encendido del semáforo rojo
    delay(5000); // Espera de 5 segundos
    digitalWrite(pinSemaforo2, LOW); // Apagado del semáforo rojo
    digitalWrite(pinSemaforo2, HIGH); // Encendido del semáforo verde
    delay(5000); // Espera de 5 segundos
    digitalWrite(pinSemaforo2, LOW); // Apagado del semáforo verde
  }
}

Ese fue el resultado que le dio, pero existen algunos detalles que la IA pasó por alto, pero que son, al menos uno de ellos, totalmente obvios ya que, en lugar de usar la función delay de las librerías de arduino, debe de usar las funciones propias del FreeRTOS como vTaskDelay, y de hecho, la documentación lo especifica de una forma muy clara, y segundo, algo que hago siempre, por si las dudas, es la de manejar el caso en la tarea pudiera salirse del while(true) o el for(; ; ).

El día en que sea capaz de leer un manual, o la documentación de algo, y trabajar en torno a esa documentación, habrá que preocuparse, ahora sólo es entrenada con código ya hecho por otros y ese código es el que repite.

movorack 19-12-2022 18:54:24

Pero, como te digo: Este código ya es una base.

Algo con los que una persona sin conocimientos de expertos puede hacer funcionar, aunque torpemente, algo. Y aplicado a un entorno de desarrollo especifico podría hacer mas que dar sugerencias.

Imagina que tienes una empresa de software, contratas la IA, la entrenas para que conozca el framework y/o tecnologías que usas, el framework empresarial, los productos, etc. Luego aplicas esta IA en una herramienta de low code. El usuario de soporte o consultoría que no conozca o no sepa de desarrollo de software, solo tendrían que hacer algo como:

Consultor: Créame una vista de la tabla [empleados] y [periodos de ausencia] donde los empleados se hayan ausentado mas de 5 días en el año
IA: ¿Cómo deseas nombrar la vista?
Consultor: empleados_conausencias01
IA: (Luego de unos segundos) Vista creada
Consultor: Créame y publica un reporte con la vista empleados_conausencias01
IA: Reporte creado. Puedes consultarlo en https://www.clubdelphi.com/reportesI...d1asd3d1as3d15

¿Reemplaza lo que hace un desarrollador? No al 100% y menos al estado actual de estas IA. En tareas repetitivas y sencillas como el ejemplo, sí. Es probable que el reporte no quede del todo bien, puede que se necesite ajustar algo y entre ahí el desarrollador. Pero, también puede ser que no se necesite hacer nada de desarrollo y quien construyó el reporte, solo necesite unos retoques.

Y ahí es donde, el empresario con su gran visión dice: "¿Necesitamos realmente una planta de 5 ingenieros para soporte?". "Con lo que le pago a 2 ingenieros anualmente, pago la suscripción a la IA"

Y recuerda. Hace apenas 30 años los usuarios no podían descargar su música sin colapsar las comunicaciones de su hogar e incumplir ciertas normas legales. Hoy, te suscribes a un servicio y solo le das play a tu artista favortio. Es cuestión de tiempo que estas herramientas mejoren

kurono 19-12-2022 23:32:27

en pocas palabras por ahora esta IA es como si fuese un foro de discucion donde buscar la respuesta a problema de programacion,si es asi aun me da terror perder mi trabajo por una IA que no duerme,no exige salario,vacaciones,seguro medico etc..

tsk 19-12-2022 23:42:44

Al final hay casos de uso en el que es más competente que en otros, y justamente has mostrado un posible ejemplo, al igual que yo he mostrado uno, en donde todavía no es competente, o por lo menos hasta este momento.

El ejemplo que das, por el nivel de abstracción que hay en los sistemas, en cierto sentido, es mucho más fácil que extraiga, de los ejemplos con los que la alimentan, patrones un poco más generales. Pero, si observas el código que generó para Arduino, en su combinación con FreeRTOS, casi le atinó, aún con la cantidad de ejemplos que existen tanto de Arduino, FreeRTOS o ambos en conjunto.

Pero el usar ese delay fue un error, aunque hay ejemplos concretos de la combinación Arduino+FreeRTOS, donde no usan esa función, de los cuales pudiera haber extraído los patrones adecuados. Incluso la documentación hace mención de no usar la función delay.

Además para algo tan simple, el hacer uso de un RTOS, no es que digamos, algo muy acertado, y puedes conseguir lo mismo sin usarlo por medio de simples máquinas de estado, sin ponerse a cazar patos a cañonazos.

Si la IA, comprendiera la documentación de Arduino y de FreeRTOS, se hubiera dado cuenta de eso, inclusive podría haberse decantado por usar FSM.

El problema que veo, son aquellos, que en lugar de ver una herramienta más, lo van a ver como una panacea y algo milagroso que es capaz de hacer de todo, y también aquellos que van a ser tan negativos como para decir que todos van a perder sus trabajos, en lugar de darle la dimensión adecuada. Y cualquiera de las dos posiciones pueden llevar a un desastre.

Es como esas discusiones infructuosas sobre que es mejor: ASM, C, C++, Rust, Python, etc.

He visto personas que, literalmente, argumentan que escribir el código en ASM es la única forma de evitar los errores, cuando los errores conceptuales que podamos tener no te los corrige el mero hecho de usar ASM o cualquier otro lenguaje de programación, que al final y al cabo son herramientas.

Lo mismo sucede cuando critican los generadores de código que facilitan la inicialización, en este caso, del microcontrolador y sus periféricos, argumentando que se debe de hacer a mano, cuando, si nos ponemos a analizar, la mayor parte del código no se va a esta parte, sino en hacer que todo los componentes trabajen juntos en armonía. Entonces deciden optimizar donde no es necesario, restando tiempo para lo que realmente importa. Dejan de ver las herramientas como meras herramientas, y las ven mas como competidores.

Lo mismo sucede a la inversa, cuando les dan un estatus nivel Dios a estas herramientas, cuando algo va mal, ni vas a saber de donde vino el golpe.

Casimiro Notevi 20-12-2022 09:10:39

Cita:

Empezado por tsk (Mensaje 549629)
Lo mismo sucede a la inversa, cuando les dan un estatus nivel Dios a estas herramientas, cuando algo va mal, ni vas a saber de donde vino el golpe.

^\||/^\||/^\||/

Casimiro Notevi 05-01-2023 20:21:18

Un "forero" ha preguntado algo en este hilo, y no me apetecía buscar entre mis proyectos un código que le sirviera de ejemplo, y me he dicho: "Voy a probar esto del chatgpt, a ver si sirve para algo". Me he dado de alta, no sé para qué me piden el teléfono :mad:, y he puesto lo siguiente:
Cita:

Necesito un código Delphi para enviar una imagen a un hosting web que utiliza php
Y me ha respondido:
Cita:

Aquí te muestro un ejemplo de cómo puedes enviar una imagen a un hosting web que utiliza PHP con Delphi:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  LHTTP: TIdHTTP;
  LIdMultipartFormData: TIdMultipartFormDataStream;
  LResponse: TMemoryStream;
  LEncoding: TEncoding;
begin
  LHTTP := TIdHTTP.Create;
  try
    LIdMultipartFormData := TIdMultipartFormDataStream.Create;
    try
      LIdMultipartFormData.AddFile('file', 'C:\ruta\a\tu\imagen.jpg', 'image/jpeg');
      LResponse := TMemoryStream.Create;
      try
        LHTTP.Post('http://tu-hosting.com/upload.php', LIdMultipartFormData, LResponse, LEncoding);
      finally
        LResponse.Free;
      end;
    finally
      LIdMultipartFormData.Free;
    end;
  finally
    LHTTP.Free;
  end;
end;
Cita:

Este código utiliza la clase TIdHTTP para enviar una petición POST a la dirección http://tu-hosting.com/upload.php con el archivo de imagen especificado en la ruta C:\ruta\a\tu\imagen.jpg. La respuesta se almacena en el TMemoryStream llamado LResponse.
Espero que esto te sea de ayuda. Si tienes alguna pregunta o necesitas más información, no dudes en preguntar.

Asombrado me he quedado :eek:

soyeduardo 12-01-2023 16:26:21

Yo probe la parte de consejos y creacion de textos
 
Estaba haciendo una pagina de internet y le pedi sugerencias para el nombre dela pagina.

Tambien le pregunte que secciones deberia contener la pagina y algunos de los textos de las secciones.

Todo lucia mucho mas profesional que cualquier cosa que haya encontrado en cualquier otro lugar, incluso mi comprador se quedo maravillado con los textos y opciones.

Honestamente facilita mucho algunos detalles.

La parte de programacion aun no la veo porque me indico que no puede codificar

Casimiro Notevi 12-01-2023 18:14:56

Realmente no es nada inteligente, lo único que tiene es una gran base de datos, que está cerrada con información del 2021
No sabe qué día es hoy, ni a cuánto está el cambio euro-dólar, o BTC-ETH... ni el tiempo que hace en cualquier sitio, por decir algo, tiene datos viejos.
Lo que sí tiene y está muy bien conseguido es que entiende bien lo que le pides, aunque te expreses de distintas formas, además recuerda de lo que hablas, ejemplo, si preguntas por marcas de coches, te saca una lista. Y si le dices, "sólo japoneses", entiende que estás pidiendo marcas de coches japoneses, no tienes que volver a repetírselo.
Pero, ya digo, inteligente no es nada inteligente, entre otras cosas porque no aprende, que es lo básico de la inteligencia.

newtron 13-01-2023 09:10:31

Cita:

Empezado por Casimiro Notevi (Mensaje 549973)
...
No sabe qué día es hoy, ni a cuánto está el cambio euro-dólar, o BTC-ETH... ni el tiempo que hace en cualquier sitio, por decir algo, tiene datos viejos....

¡¡Cuñu!! ¡Como yo! :eek:

soyeduardo 17-01-2023 21:53:24

Realmente no lo sabemos
 
Cita:

Empezado por Casimiro Notevi (Mensaje 549973)
Realmente no es nada inteligente, lo único que tiene es una gran base de datos, que está cerrada con información del 2021
No sabe qué día es hoy, ni a cuánto está el cambio euro-dólar, o BTC-ETH... ni el tiempo que hace en cualquier sitio, por decir algo, tiene datos viejos.
Lo que sí tiene y está muy bien conseguido es que entiende bien lo que le pides, aunque te expreses de distintas formas, además recuerda de lo que hablas, ejemplo, si preguntas por marcas de coches, te saca una lista. Y si le dices, "sólo japoneses", entiende que estás pidiendo marcas de coches japoneses, no tienes que volver a repetírselo.
Pero, ya digo, inteligente no es nada inteligente, entre otras cosas porque no aprende, que es lo básico de la inteligencia.

Mmm, acaso no somos nosotros tambien una base de datos recabada de nuestras experiencias y entorno?
Honestamente no luce en absoluto "tonta"

Casimiro Notevi 18-01-2023 09:41:27

Cita:

Empezado por soyeduardo (Mensaje 550074)
Mmm, acaso no somos nosotros tambien una base de datos recabada de nuestras experiencias y entorno?
Honestamente no luce en absoluto "tonta"

Nosotros aprendemos, si no sabemos algo entonces lo buscamos. Este chapgpt si no sabe algo... no lo sabe. No puede buscar, está cerrado, no tiene posibilidad de buscar información por internet, solamente tiene su BD cerrada y de ahí no sale.
El propio creador principal del proyecto lo ha dicho, más o menos así, "Esto no es más que un juguete que no debería ser usado para nada profesional ni que pueda causar algún tipo de daño a nadie".


La franja horaria es GMT +2. Ahora son las 17:33:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi