Colegas
Saludos
Estamos evaluando el uso de la IA
Actualmente estamos utilizando PYTHON mientras actualizo FW
Compartimos este codigo para realizar validaciones y podamos compartir experiencia. El contenido lo obtuve desde COPILOT
¡Excelente iniciativa! Aunque Harbour, FiveWin y Visual FoxPro no tienen librerías modernas para consumir APIs REST como en Python, sí es posible conectarse a Ollama (o cualquier servidor local de IA que use HTTP) utilizando solicitudes HTTP básicas. Aquí te muestro cómo hacerlo en cada entorno, con ejemplos adaptados para conectarte al servidor de Ollama en red local.
---
🧵 1. Harbour + HbHttp (o Curl)
Si tienes Harbour con la librería hbhttp, puedes hacer algo así:
harbour
#include "hbclass.ch"
FUNCTION Main()
LOCAL cUrl:= "http://192.168.1.100:11434/api/generate"
LOCAL cPayload:= '{ "model": "llama2", "prompt": "¿Cuál es la capital de Venezuela?", "stream": false}'
LOCAL oHttp:= hb_HttpClient():New()
LOCAL cResponse
oHttp:SetHeader("Content-Type", "application/json")
cResponse:= oHttp:Post(cUrl, cPayload)
? "Respuesta del servidor:"
? cResponse
RETURN NIL
> Requiere hbhttp o integración con libcurl.
---
🪟 2. FiveWin (Harbour + GUI)
FiveWin puede usar WinInet o libcurl para hacer peticiones HTTP. Aquí tienes un ejemplo básico usando WinInet:
harbour
#include "FiveWin.ch"
FUNCTION Main()
LOCAL hInternet, hConnect, cUrl, cPayload, cResponse
cUrl:= "http://192.168.1.100:11434/api/generate"
cPayload:= '{ "model": "llama2", "prompt": "¿Cuál es la capital de Venezuela?", "stream": false}'
hInternet:= InternetOpen( "FiveWin", 1, "", "", 0)
hConnect:= InternetOpenUrl( hInternet, cUrl, "", 0, 0, 0)
IF hConnect!= NIL
InternetWriteFile( hConnect, cPayload)
cResponse:= InternetReadFile( hConnect)
MsgInfo( cResponse)
InternetCloseHandle( hConnect)
ENDIF
InternetCloseHandle( hInternet)
RETURN NIL
> Este ejemplo requiere adaptar funciones de lectura/escritura según tu versión de FiveWin.
---
🦊 3. Visual FoxPro
En FoxPro puedes usar MSXML2.XMLHTTP para hacer peticiones HTTP:
foxpro
LOCAL loHttp, lcUrl, lcPayload, lcResponse
lcUrl = "http://192.168.1.100:11434/api/generate"
lcPayload = '{ "model": "llama2", "prompt": "¿Cuál es la capital de Venezuela?", "stream": false}'
loHttp = CREATEOBJECT("MSXML2.XMLHTTP")
loHttp.Open("POST", lcUrl,.F.)
loHttp.setRequestHeader("Content-Type", "application/json")
loHttp.Send(lcPayload)
lcResponse = loHttp.ResponseText
? "Respuesta del servidor:"
? lcResponse
> Este método funciona bien en Windows y es ideal para FoxPro 9.
---
¿Quieres que te ayude a integrar esto en una interfaz gráfica, o que el resultado se muestre en una tabla o archivo? También puedo ayudarte a manejar errores de red o respuestas JSON en cada entorno.
Saludos
Estamos evaluando el uso de la IA
Actualmente estamos utilizando PYTHON mientras actualizo FW
Compartimos este codigo para realizar validaciones y podamos compartir experiencia. El contenido lo obtuve desde COPILOT
¡Excelente iniciativa! Aunque Harbour, FiveWin y Visual FoxPro no tienen librerías modernas para consumir APIs REST como en Python, sí es posible conectarse a Ollama (o cualquier servidor local de IA que use HTTP) utilizando solicitudes HTTP básicas. Aquí te muestro cómo hacerlo en cada entorno, con ejemplos adaptados para conectarte al servidor de Ollama en red local.
---
Si tienes Harbour con la librería hbhttp, puedes hacer algo así:
harbour
#include "hbclass.ch"
FUNCTION Main()
LOCAL cUrl:= "http://192.168.1.100:11434/api/generate"
LOCAL cPayload:= '{ "model": "llama2", "prompt": "¿Cuál es la capital de Venezuela?", "stream": false}'
LOCAL oHttp:= hb_HttpClient():New()
LOCAL cResponse
oHttp:SetHeader("Content-Type", "application/json")
cResponse:= oHttp:Post(cUrl, cPayload)
? "Respuesta del servidor:"
? cResponse
RETURN NIL
> Requiere hbhttp o integración con libcurl.
---
FiveWin puede usar WinInet o libcurl para hacer peticiones HTTP. Aquí tienes un ejemplo básico usando WinInet:
harbour
#include "FiveWin.ch"
FUNCTION Main()
LOCAL hInternet, hConnect, cUrl, cPayload, cResponse
cUrl:= "http://192.168.1.100:11434/api/generate"
cPayload:= '{ "model": "llama2", "prompt": "¿Cuál es la capital de Venezuela?", "stream": false}'
hInternet:= InternetOpen( "FiveWin", 1, "", "", 0)
hConnect:= InternetOpenUrl( hInternet, cUrl, "", 0, 0, 0)
IF hConnect!= NIL
InternetWriteFile( hConnect, cPayload)
cResponse:= InternetReadFile( hConnect)
MsgInfo( cResponse)
InternetCloseHandle( hConnect)
ENDIF
InternetCloseHandle( hInternet)
RETURN NIL
> Este ejemplo requiere adaptar funciones de lectura/escritura según tu versión de FiveWin.
---
En FoxPro puedes usar MSXML2.XMLHTTP para hacer peticiones HTTP:
foxpro
LOCAL loHttp, lcUrl, lcPayload, lcResponse
lcUrl = "http://192.168.1.100:11434/api/generate"
lcPayload = '{ "model": "llama2", "prompt": "¿Cuál es la capital de Venezuela?", "stream": false}'
loHttp = CREATEOBJECT("MSXML2.XMLHTTP")
loHttp.Open("POST", lcUrl,.F.)
loHttp.setRequestHeader("Content-Type", "application/json")
loHttp.Send(lcPayload)
lcResponse = loHttp.ResponseText
? "Respuesta del servidor:"
? lcResponse
> Este método funciona bien en Windows y es ideal para FoxPro 9.
---
¿Quieres que te ayude a integrar esto en una interfaz gráfica, o que el resultado se muestre en una tabla o archivo? También puedo ayudarte a manejar errores de red o respuestas JSON en cada entorno.