Conectando FiveWin / xHarbour con ChatGPT OpenAI

Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby Cgallegoa » Wed Dec 07, 2022 5:23 pm

Connecting FiveWin / xHarbour with OpenAI API :D

Image

Code: Select all  Expand view  RUN
#include "FiveWin.ch"

#define EM_LIMITTEXT 197


Function Main()
   LOCAL oDlg, oGet1, cVar1 := "Hola OpenAI, cómo estás ? Me llamo Carlos, tú tienes nombre ?"
   LOCAL oGet2, cVar2 := Space(2048)
   LOCAL oFont1, oFont2, oBtn1, oSay1, oSay2
   LOCAL nChars := 2048
   TBtnBmp():lLegacyLookLeftRight := .T.
   
   cVar1 := "Puedes mostrarme el código de un programa escrito en lenguaje Harbour que en la function main tenga un Alert que diga 'Hola Mundo' ?"
   
   DEFINE FONT oFont1 NAME "Verdana" SIZE 0,-12 BOLD
   DEFINE FONT oFont2 NAME "Verdana" SIZE 0,-12
   DEFINE DIALOG oDlg FROM 0,0 TO 39,107 TRUEPIXEL TITLE "Taking with OPENAI API"
   
       @ 10,270 SAY "Talking with OPENAI API" OF oDlg FONT oFont1 SIZE 300,15PIXEL CENTER
       @ 28,20 SAY "You:" OF oDlg FONT oFont1 SIZE 50,15 PIXEL
   
       @ 28,680 SAY oSay1 VAR "Caracteres: 0 / "+cValToChar(nChars) OF oDlg PIXEL;
                        SIZE 120,15 UPDATE CENTER
   
       @ 45,20 GET oGet1 VAR cVar1 OF oDlg PIXEL SIZE 800,200 MEMO FONT oFont2;
               ON CHANGE(SB_LimitText(oGet1, oSay1, nChars))
            oGet1:bGotfocus := {||oGet1:SetSel(0,0)}
   
       @ 250,345 BTNBMP PROMPT "Submit" OF oDlg PIXEL ACTION Api_OpenAI(cVar1, oGet2) SIZE 150,45;
             FILE "openai24x24.png" LEFT NOBORDER 2007
   
       @ 300,20 SAY "OPENAI:" OF oDlg FONT oFont1 SIZE 70,15 PIXEL
   
       @ 317,20 GET oGet2 VAR cVar2 OF oDlg PIXEL SIZE 800,200 MEMO FONT oFont2
            oGet2:bGotfocus := {||oGet2:SetSel(0,0)}
   
       @ 535,620 BTNBMP PROMPT "Close" OF oDlg PIXEL ACTION oDlg:End() SIZE 150,45;
             FILE "exit24x24.png" LEFT NOBORDER 2007
   
       oDlg:bInit := {|| oGet1:SetFocus(),;
                          oGet1:LimitText(nChars),;
                          oSay1:VarPut("Caracteres: " + cValToChar(LEN( ALLTRIM( oGet1:cText ) )) + " / " + cValToChar(nChars)),;
                          oSay1:Refresh()}
   
   ACTIVATE DIALOG oDlg CENTERED ON PAINT oGet1:SetPos(0)
   
Return(NIL)
//------------------------------------------------------------//


Function Api_OpenAI(cPrompt, oGet2)
   LOCAL oSoap := CreateObject( "MSXML2.ServerXMLHTTP.6.0")
   LOCAL cUrl   := "https://api.openai.com/v1/engines/text-davinci-003/completions"
   LOCAL cToken := "sk-nxnxnxnxnxnxnxnxnxnxnxnxnxnxnxnxxnxnxnxnxnx"
   LOCAL cJSon, cRespApi, hResp := {=>}, cResp
   
   TEXT INTO cJson
        {
            "prompt": "cPrompt_empty",
            "temperature": 0,
            "max_tokens": 2048
        }
   ENDTEXT
   
   cPrompt := AllTrim(cPrompt)
   cJson := StrTran(cJson, "cPrompt_empty", cPrompt)
   
   oSoap:SetTimeouts(30000,30000,30000,30000)
   TRY
      oSoap:Open( "POST" , cUrl , .F. )
      oSoap:SetRequestHeader( "Content-Type", "application/json; charset=utf-8" )
      oSoap:setRequestHeader("Authorization", "Bearer "+cToken )
      oSoap:Send(cJson)
   
      cRespApi := Alltrim(oSoap:responseText)
      hb_jsondecode(cRespApi,@hResp)
   
      cResp := hResp["choices"][1]["text"]
      cResp := StrTran(cResp, Chr(10), Chr(13)+Chr(10))
      oGet2:VarPut( AllTrim(cResp) )
      oGet2:Refresh()
   
     // MsgInfo( oSoap:Status )
   
   CATCH
      msginfo("Mensaje en el CATCH"+CRLF+CRLF+ "No hay conexión con el servidor de Rindegastos."+CRLF+ "  Por favor vuelva a intentarlo.","Intente Nuevamente")
   
   END
   
Return(oSoap)
//------------------------------------------------------------//


FUNCTION SB_LimitText( oGet, oSay, nLimObserv )
   ///////////////////////////////////////////////////////////////////////////
   // Autor..........: Peguei no Forum FiveWin Brasil                       //
   // Modificaçoes...: Ale SB - Soft Camus                                  //
   // Descricao......: Restringe o Tamanho de um Texto.                     //
   // Parametros ==>                                                        //
   //  - oGet  : oBjeto Get.                                                //
   //  - nSize : Tamanho que deve ter o Texto.                              //
   // Dependencias ==>                                                      //
   // Retorno ==> nil                                                       //
   ///////////////////////////////////////////////////////////////////////////
   LOCAL nTam, nSize
   DEFAULT nSize := nLimObserv  // 19  // 99 // maximo e 100 caracteres
   nTam := LEN( ALLTRIM( oGet:cText ) )
   IF nTam > nSize
      Msginfo( "Lo siento, no puedo continuar, el tamaño máximo " + ;
               "ha excedido el límite permitido.", "Atención por favor." )
      oGet:cText := Substr(oGet:cText, 1, nTam-1)
      RETURN( .F. )
   ENDIF
   oSay:VarPut("Caracteres: " + cValToChar(nTam) + " / " + cValToChar(nLimObserv))
     oSay:Refresh()
RETURN( .T. )
//------------------------------------------------------------//
 
Last edited by Cgallegoa on Wed Dec 07, 2022 8:56 pm, edited 1 time in total.
Saludos,

Carlos Gallego

*** FWH-24.07, xHarbour 1.3.1 Build 20240624, Borland C++7.70, PellesC ***
Cgallegoa
 
Posts: 494
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby karinha » Wed Dec 07, 2022 6:40 pm

Good Afternoon Carlos Gallego, how do I get a key (password) to test your beautiful example? Thanks.

{
"error": {
"message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://beta.openai.com.
"type": "invalid_request_error",
"param": null,
"code": null
}
}

Code: Select all  Expand view  RUN

// C:\FWH..\SAMPLES\OPENAPI.PRG

#include "FiveWin.ch"

#define EM_LIMITTEXT 197

FUNCTION Main()

   LOCAL oDlg, oGet1, cVar1 := "Hola OpenAI, cómo estás ? Me llamo Carlos, tú tienes nombre ?"
   LOCAL oGet2, cVar2 := Space( 2048 )
   LOCAL oFont1, oFont2, oBtn1, oSay1, oSay2
   LOCAL nChars := 2048

   SkinButtons()

   IF FWVERSION >= "FWHX 19.06"

      TBtnBmp():lLegacyLookLeftRight := .T.

   ENDIF

   cVar1 := "Puedes mostrarme el código de un programa escrito en " + ;
            "lenguaje Harbour que en la function main tenga un "    + ;
            "Alert que diga 'Hola Mundo' ?"

   DEFINE FONT oFont1 NAME "Verdana" SIZE 0, - 12 BOLD
   DEFINE FONT oFont2 NAME "Verdana" SIZE 0, - 12

   DEFINE DIALOG oDlg FROM 0, 0 TO 39, 107 TRUEPIXEL ;
      TITLE "Taking with OPENAI API"

   oDlg:lHelpIcon := .F.

   @ 10, 270 SAY "Talking with OPENAI API" OF oDlg FONT oFont1 SIZE 300, 15  ;
      PIXEL CENTER

   @ 28, 20 SAY "You:" OF oDlg FONT oFont1 SIZE 50, 15 PIXEL

   @ 28, 680 SAY oSay1 VAR "Caracteres: 0 / " + cValToChar( nChars ) ;
      OF oDlg PIXEL SIZE 120, 15 UPDATE CENTER

   @ 45, 20 GET oGet1 VAR cVar1 OF oDlg PIXEL SIZE 800, 200 MEMO FONT oFont2 ;
      ON CHANGE( SB_LimitText( oGet1, oSay1, nChars ) )

   oGet1:bGotfocus := {|| oGet1:SetSel( 0, 0 ) }

   @ 250, 345 BTNBMP PROMPT "Submit" OF oDlg PIXEL   ;
      ACTION Api_OpenAI( cVar1, oGet2 ) SIZE 150, 45 ;
      FILE "openai24x24.png" LEFT NOBORDER 2007

   @ 300, 20 SAY "OPENAI:" OF oDlg FONT oFont1 SIZE 70, 15 PIXEL

   @ 317, 20 GET oGet2 VAR cVar2 OF oDlg PIXEL SIZE 800, 200 MEMO FONT oFont2

   oGet2:bGotfocus := {|| oGet2:SetSel( 0, 0 ) }

   @ 535, 620 BTNBMP PROMPT "Close" OF oDlg PIXEL ;
      ACTION oDlg:End() SIZE 150, 45              ;
      FILE "exit24x24.png" LEFT NOBORDER 2007

   oDlg:bInit := {|| oGet1:SetFocus(),                   ;
   oGet1:LimitText( nChars ),                            ;
   oSay1:VarPut( "Caracteres: " +                        ;
   cValToChar( Len( AllTrim( oGet1:cText ) ) ) + " / " + ;
   cValToChar( nChars ) ),                               ;
   oSay1:Refresh() }

   ACTIVATE DIALOG oDlg CENTERED ON PAINT( oGet1:SetPos( 0 ) )

   oFont1:End()
   oFont2:End()

RETURN NIL

FUNCTION Api_OpenAI( cPrompt, oGet2 )

   LOCAL oSoap  // := CreateObject( "MSXML2.ServerXMLHTTP.6.0" )
   LOCAL cUrl   := "https://api.openai.com/v1/engines/text-davinci-003/completions"
   LOCAL cToken := "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"
   LOCAL cJSon, cRespApi, hResp := { => }, cResp

   TEXT INTO cJson
      {
         "prompt": "cPrompt_empty",
         "temperature": 0,
         "max_tokens": 2048
      }
   ENDTEXT

   cPrompt := AllTrim( cPrompt )
   cJson   := StrTran( cJson, "cPrompt_empty", cPrompt )

   #ifdef __XHARBOUR__  // xHarbour

      Try

         oSoap := CreateObject( "MSXML2.ServerXMLHTTP.6.0" )

      Catch

         MsgInfo( "xHarbour: errore connessione msxml2, uso microsoft " )

         RETURN NIL

      End

   #else //Harbour

      Try

         oSoap := win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0" )

      Catch

         MsgInfo( "Harbour: errore connessione msxml2, uso microsoft " )

         RETURN NIL

      End

   #endif

   oSoap:SetTimeouts( 30000, 30000, 30000, 30000 )

   TRY

      oSoap:Open( "POST", cUrl, .F. )
      oSoap:SetRequestHeader( "Content-Type", "application/json; charset=utf-8" )
      oSoap:setRequestHeader( "Authorization", "Bearer " + cToken )
      oSoap:Send( cJson )

      cRespApi := AllTrim( oSoap:responseText )

      hb_jsonDecode( cRespApi, @hResp )

      cResp := hResp[ "choices" ][ 1 ][ "text" ]
      cResp := StrTran( cResp, Chr( 10 ), Chr( 13 ) + Chr( 10 ) )

      oGet2:VarPut( AllTrim( cResp ) )
      oGet2:Refresh()

      // MsgInfo( oSoap:Status )

   CATCH

      MsgInfo( "Mensaje en el CATCH" + CRLF + CRLF + ;
               "No hay conexión con el servidor de Rindegastos." + CRLF + ;
               "  Por favor vuelva a intentarlo.", "Intente Nuevamente" )

   END

Return( oSoap )

FUNCTION SB_LimitText( oGet, oSay, nLimObserv )

   // /////////////////////////////////////////////////////////////////////////
   // Autor..........: Peguei no Forum FiveWin Brasil                       //
   // Modificaçoes...: Ale SB - Soft Camus                                  //
   // Descricao......: Restringe o Tamanho de um Texto.                     //
   // Parametros ==>                                                        //
   // - oGet  : oBjeto Get.                                                //
   // - nSize : Tamanho que deve ter o Texto.                              //
   // Dependencias ==>                                                      //
   // Retorno ==> nil                                                       //
   // /////////////////////////////////////////////////////////////////////////
   LOCAL nTam, nSize

   DEFAULT nSize := nLimObserv  // 19  // 99 // maximo e 100 caracteres

   nTam := Len( AllTrim( oGet:cText ) )

   IF nTam > nSize

      MsgInfo( "Lo siento, no puedo continuar, el tamaño máximo " + ;
               "ha excedido el límite permitido.", "Atención por favor." )

      oGet:cText := SubStr( oGet:cText, 1, nTam - 1 )

      RETURN( .F. )

   ENDIF

   oSay:VarPut( "Caracteres: " + cValToChar( nTam ) + " / " + ;
      cValToChar( nLimObserv ) )

   oSay:Refresh()

RETURN( .T. )

// FIN / END
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby JoseAlvarez » Wed Dec 07, 2022 7:02 pm

¡muy interesante!

Serias tan amable de dejarnos aca un breve resumen de donde encontrar informacion de como ir incursionando en esto?
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby cnavarro » Wed Dec 07, 2022 7:26 pm

Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby Antonio Linares » Wed Dec 07, 2022 8:27 pm

Estimado Carlos,

Muchas gracias por tu ejemplo pero ojo que has dejado tu key en el código y es privada, puede generarte gastos.

Por favor, edita tu mensaje y borra la key por tu bien :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby Cgallegoa » Wed Dec 07, 2022 9:11 pm

Antonio gracias.

Estaba tan emocionado que se me pasó por alto.

No hay problema. Se elimina ese token y se genera uno nuevo.

Desde ayer estoy engolosinado con esto. Ya hasta le puse nombre (Alf, como el extraterrestre de la TV), nos tratamos de tú, y hasta nos hacemos bromas, y aunque no es 100% perfecto ni coherente en todo, la verdad que es fantástico. Es como una película de ciencia ficción.

Claro que a veces te responde todo al revés pero la experiencia vale la pena, sobre todo cuando puedes ver cómo va aprendiendo a medida que le haces notar los errores que comete.

Ayer le pedí que resolviera una serie de ecuaciones simples. Al comienzo respondió erróneamente. Conforme le vas explicando en dónde se equivoca, corrige y te pide disculpas por haberse equivocado :D Alucinante

Ahora, a ver qué provecho práctico podemos implementar en nuestros programas.
Saludos,

Carlos Gallego

*** FWH-24.07, xHarbour 1.3.1 Build 20240624, Borland C++7.70, PellesC ***
Cgallegoa
 
Posts: 494
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby Cgallegoa » Wed Dec 07, 2022 9:20 pm

João, Jose:

Hay que registrarse en https://openai.com/api/

Una vez registrado y que se active la cuenta, se ingresa a https://beta.openai.com/overview

Allí, en la parte superior deracha en donde aparece el nombre con el que te registraste, se puede generar el Token

Recomiendo primero un repaso a la documentación en https://beta.openai.com/docs/introduction

A ver si entre todos logramos algo intersante.
Saludos,

Carlos Gallego

*** FWH-24.07, xHarbour 1.3.1 Build 20240624, Borland C++7.70, PellesC ***
Cgallegoa
 
Posts: 494
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby karinha » Thu Dec 08, 2022 12:38 pm

Cgallegoa wrote:João, Jose:

Hay que registrarse en https://openai.com/api/

Una vez registrado y que se active la cuenta, se ingresa a https://beta.openai.com/overview

Allí, en la parte superior deracha en donde aparece el nombre con el que te registraste, se puede generar el Token

Recomiendo primero un repaso a la documentación en https://beta.openai.com/docs/introduction

A ver si entre todos logramos algo intersante.


Gracias.

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby cmsoft » Thu Dec 08, 2022 12:59 pm

Carlos:
Muchas gracias por el aporte.
Parece ciencia ficción, tal cual lo dices.
A experimentar a ver que provecho práctico le sacamos
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby Verhoven » Sun Jan 15, 2023 8:00 pm

Ya los más iluminados le han pensado sacar partido:
https://www.elconfidencial.com/alma-cor ... t_3555482/

Por cierto, dice que gasta, solo el chat, 2.000.000 $ a la hora, en un día 48.000.000 $.
Esto viene a suponer unos 200.000.000 kwh=200M kwh al día. Y a eso habría que sumarle el gasto de infrestructura de inet, la renovación de equipos yo creo que no menos de cada 4-5 años (queremos estar a la uúltima en tecnología).

No se ustedes cómo de inteligente encuentran esto. Me parece a mi que no es más que mera fuerza bruta de cálculo. Personas, comiendo galletas, leche, huevos fritos, filetes y lechuga desarrollaron las matemáticas, física y química tal como las conocemos, mandaron al hombre a la luna y descubrieron América guiándose por las estrellas. Eso si es Inteligencia.

Por otro lado que no nos digan que nuestro viejo motor diesel provoca el cambio climático con la que hay que montar para tener ese chat andando. Le pueden tomar el pelo a otro.
Verhoven
 
Posts: 522
Joined: Sun Oct 09, 2005 7:23 pm

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby wilsongamboa » Tue Jan 17, 2023 12:23 am

en 2008 estudie nuevamente en mi universidad alli el problema era COPY PASTE ja ja ja ahora veo que sigue siendo lo mismo pero mas sofisticado IA en mi caso el mejor profesor que tuve recibia los trabajos
- Escritos a mano en papel cuadriculado
- nunca el trabajo tenia que pasar de 7 hojas
- como ya el conocia a cada alumno ( habia charlado largamente con cada uno ) si habia algo sospechoso solo ponia CERO
seguimos igual en ciertas cosas
saludos
Wilson
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
User avatar
wilsongamboa
 
Posts: 600
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby Jimmy » Wed Jan 18, 2023 6:25 pm

hi

ChatGPT is a nice Tool ... but it "can" produce a lot FAKE
Do NOT trust ChatGPT and verify Answer before use it

---

i use ChatGPT and ask for CODE
when "verify" Answer, using Compiler, i often get "Syntax Error" or "Missing Function"

ChatGPT is not a Compiler so ChatGPT does not know Syntax or harbour Function.
ChatGPT use a big Database but it does not contain only "right" Answer, it also have "wrong" Question in Database

but how can i User "know" if he is not a "Expert" :?:
IHMO you must be a "Expert" to use ChatGPT to "verify" Answer
greeting,
Jimmy
User avatar
Jimmy
 
Posts: 1733
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany

Re: Conectando FiveWin / xHarbour con ChatGPT OpenAI

Postby Antonio Linares » Thu Jan 19, 2023 7:36 am

Dear Jimmy,

I fully agree with you :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 68 guests