Français
Source/ Codesnippets

ChatGPT API dans XProfan verwenden (per cURL)

 

Sven
Bader
qui mächtige l'affaire hieran ist eigentlich qui Verwendung de cURL, là sich so komplexe Web-Anfragen per POST aussi JSON kodiert versenden laisser. cURL ist depuis 2018 partie de Windows 10 et dans Windows 11 disponible, avec Windows 7/8 wird es pas sans weiteres aller.

qui Antwort wird ensuite aus qui Console geholt.

son nécessaire une eigenen API-Schlüssel. on muss zwar un paire Dollar hinterlegen mais j'ai pour rund 100 (kleineren) Anfragen justement einmal une Cent usé. (  [...]  )

qui Code funktioniert avec X4 mais aussi avec XProfan 10. Viel Amusement beim Testen
 $H Windows.ph
Def GetSysColor(1)      !"User32", "GetSysColor"'Systemfarben abfragen

Proc Utf8Decode

    'dans neueren XProfan Versionen wird automatisch qui gleichnamige interne Funktion verwendet
    Paramètres utf8$
    Déclarer ansistring$, unicode$, laenge&
    laenge& = len(utf8$) * 2
    unicode$ = mkstr$(chr$(0),laenge&)
    ~MultiByteToWideChar(~CP_UTF8,0,Addr(utf8$),-1,Addr(unicode$),laenge&)
    ansistring$ = mkstr$(chr$(0),laenge&)
    ~WideCharToMultiByte(~CP_ACP,0,Addr(unicode$),-1,Addr(ansistring$),laenge&,0,0)
    ansistring$ = substr$(ansistring$,1,chr$(0))
    Retour ansistring$

ENDPROC

Proc CMDOut

    'ursprünglich de Andreas Miethe
    Paramètres Progname$,Command$,MemBuffer&
    Struct PROCESS_INFORMATION = hProcess&,hThread&,dwProcessId&,dwThreadId&
    Struct SECURITY_ATTRIBUTES =  nLength&,lpSecurityDescriptor&,bInheritHandle&
    Struct STARTUPINFO =cb&,lpReserved&,lpDesktop&,lpTitle&,dwX&,dwY&,dwXSize&,dwYSize&,dwXCountChars&,dwYCountChars&,dwFillAttribute&,dwFlags&,wShowWindow%,cbReserved2%,lpReserved2&,hStdInput&,hStdOutput&,hStdError&
    Def &NORMAL_PRIORITY_CLASS  $20
    Def &STARTF_USESTDHANDLES  $100
    Def &STARTF_USESHOWWINDOW  $1
    Déclarer hRPipe&,hWPipe&,pRBytes&,Result&
    Déclarer PI#,SI#,SA#, out$
    Faible PI#,PROCESS_INFORMATION
    Faible SI#,STARTUPINFO
    Faible SA#,SECURITY_ATTRIBUTES
    Déclarer StringBuffer$, output$
    StringBuffer$ = Space$(MemBuffer&)
    SA#.nLength& =SizeOf(SA#)
    SA#.bInheritHandle& = 1
    SA#.lpSecurityDescriptor& = 0
    Result& = ~CreatePipe(Addr(hRPipe&), Addr(hWPipe&), SA#, 0)

    Si Result& = 0

        Retour »'MessageBox("Pipe konnte pas gestartet werden",»,0)

    EndIf

    Si Progname$ <> »

        Command$ = " " + Command$

    EndIf

    SI#.cb& = SizeOf(SI#)
    SI#.dwFlags& = &STARTF_USESHOWWINDOW | &STARTF_USESTDHANDLES
    SI#.hStdOutput& = hWPipe&
    SI#.hStdError& = hWPipe&

    Si Progname$ = »

        Result& = ~CreateProcess(0, Addr(Command$), SA#, SA#, 1, &NORMAL_PRIORITY_CLASS, 0, 0, SI#,PI#)

    D'autre

        Result& = ~CreateProcess(Addr(Progname$), Addr(Command$),SA#,SA#,1,&NORMAL_PRIORITY_CLASS, 0, 0,SI#,PI#)

    EndIf

    Si Result& <> 1

        Retour »'MessageBox("Datei pas gefunden",»,0)

    EndIf

    Result& = ~CloseHandle(hWPipe&)

    Tandis que Result& <> 0

        Result& = ~ReadFile(hRPipe&,Addr(StringBuffer$),MemBuffer&,Addr(pRBytes&), 0)

        Si pRBytes& > 0

            Out$ = Left $(StringBuffer$,pRBytes&)
            output$ = output$ + Out$

        EndIf

    Endwhile

    ~CloseHandle(PI#.hProcess&)
    ~CloseHandle(PI#.hThread&)
    ~CloseHandle(hRPipe&)
    Dispose PI#
    Dispose SI#
    Dispose SA#
    output$ = Utf8Decode(output$)
    Retour output$

ENDPROC

Fenêtre Style 1+2+4+8+16
Titre de la fenêtre "ChatGPT"
Fenêtre 100,100 - 650,600;0
Cls GetSysColor(15)'Fensterfarbe
Utilisateur Messages 16
UseFont "Tahoma",15,0,0,0,0'Standardfont
SetDialogFont 1
Déclarer edit&,font&[10],button&,text&
Font&[1] = Créer("Font","Tahoma",15,0,0,0,0)'normal
text& = Créer("Text",%hWnd,», 20, 20, 600, 320)
Edit& = Créer("MultiEdit", %hWnd, », 20, 400, 600, 96)
button& = Créer("Button", %hWnd, "Senden", 20, 500, 600, 24)
SetFont Edit&,font&[1]

Proc GPT

    Paramètres prompt$
    Déclarer api_key$, endpoint$, payload$, response$,responseJson$, content$,model$,curl_exe$
    Déclarer curl_command$
    curl_exe$ =  $ Trim(CMDOut(», "where curl", 8192))
    api_key$  = "sk-proj-..........................................................................................."
    endpoint$ = "https://api.openai.com/v1/chat/completions"
    content$  = »'Vorabbriefing, z.B. "Du es Yoda aus Star Wars."
    model$    = "gpt-4o-mini"
    payload$ = "{\\\qmodel\\\q:\\\q" + model$ + "\\\q,\\\qmessages\\\q:[{\\\qrole\\\q:\\\qsystem\\\q,\\\qcontent\\\q:\\\q" + content$ + "\\\q},{\\\qrole\\\q:\\\quser\\\q,\\\qcontent\\\q:\\\q" + prompt$ + "\\\q}]}"
    curl_command$ = curl_exe$ + " -s -k -X POST " + endpoint$ + " -H \qAuthorization: Bearer " + api_key$ + "\q -H \qContent-Type: application/json\q -d \q" + payload$ + "\q"
    responseJson$ =  CMDOut(», curl_command$, 8192)
    'on pourrait aussi qui JSON Funktionen de XProfan X4 verwenden, mais pas sans Umwege sur une Dossier
    response$ =  translate$(responseJson$,"\\\q", "\\q")' \" dans XProfan-Syntax transformer (encore escaped)
    response$ =  Substr$(response$,2, "\qcontent\q: \q")' Antwort extrahieren
    response$ =  Substr$(response$,1, "\q")' Antwort extrahieren
    response$ =  translate$(response$,"\\q", "\q")' Anführungszeichen final kodieren
    response$ =  translate$(response$,"\\n","\n" )' Zeilenumbrüche

    Si (response$ = »)

        SetText text&,  responseJson$

    D'autre

        SetText text&,  response$

    EndIf

ENDPROC

WhileNot (%umessage = 16)

    WaitInput

    Si Clicked(button&)

        GPT(gettext$(edit&))

    EndIf

Endwhile

 
vor 11 Tagen  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

107 Views

Untitledvor 0 min.
HofK vor 3 Tagen
Walter vor 4 Tagen
R.Schneider vor 7 Tagen
Peter Max Müller vor 8 Tagen
plus...

Themeninformationen

cet Thema hat 1 participant:

Sven Bader (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie