Italian OpenAI

ivanomonti

Expert
Licensed User
Longtime User
ciao ragazzi sono tornato a sperimentare ma ho il solito vuoto di memoria, devo inviare una query ad openai ma mi perdo come al solito in un bicchiere d'acqua


Query:
    Dim http As HttpJob
    Dim httpmap As Map
    httpmap.Initialize
    httpmap.Put("text",message)
    httpmap.Put("model","davinci")
    httpmap.Put("application/json", Array("""Authorization"",""Bearer""" & Main.P_OpenAiKey))
    Dim query As String = httpmap
    http.Initialize("OpenAI", Me)
    http.PostString("https://api.openai.com/v1/engines/davinci/jobs",query)

Array("""Authorization"",""Bearer""" & Main.P_OpenAiKey)) qui mi perdo in quanto mi da errore openai

B4X:
WARNING: package com.sun.javafx.embed.swing.oldimpl not in javafx.swing
Waiting for debugger to connect...
Program started.
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
(MyMap) {text=ciao come stai, model=davinci, application/json=[Ljava.lang.Object;@392c8583}
ResponseError. Reason: , Response: {
    "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://platform.openai.com/account/api-keys.",
        "type": "invalid_request_error",
        "param": null,
        "code": null
    }
}

mi rinfrescae la memoria dove sbaglio!!
 

LucaMs

Expert
Licensed User
Longtime User
ma mi perdo come al solito in un bicchiere d'acqua
Prova in un bicchiere di vino; ha densità leggermente maggiore, quindi magari galleggeresti 😄

Non ho provato quella "roba", ma ho appena scaricato questo:
https://www.b4x.com/android/forum/threads/gpt-3.145654/

in cui la richiesta viene fatta in questo modo:
B4X:
        Dim req As HttpJob
        req.Initialize("",Me)
        req.PostString("https://api.openai.com/v1/completions",js.ToString)
        req.GetRequest.SetHeader("Authorization","Bearer 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")
        req.GetRequest.SetHeader("OpenAI-Organization","org-TV3YOqDRg5DXvAUcL7dC6lI9")
        req.GetRequest.SetContentType("application/json")
        Wait For (req) jobdone(req As HttpJob)

ErgoLO, sostituisci coi tuoi dati e dovrebbe funzionare (eventualmente scarica anche tu quel progetto, cosa che io non ho fatto)
 

ivanomonti

Expert
Licensed User
Longtime User
Prova in un bicchiere di vino; ha densità leggermente maggiore, quindi magari galleggieri 😄

Non ho provato quella "roba", ma ho appena scaricato questo:
https://www.b4x.com/android/forum/threads/gpt-3.145654/

in cui la richiesta viene fatta in questo modo:
[CODICE=b4x]
Dim req As HttpJob
req.Initialize("",Me)
req.PostString("https://api.openai.com/v1/completions",js.ToString)
req.GetRequest.SetHeader("Autorizzazione","Bearer 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")
req.GetRequest.SetHeader("Organizzazione OpenAI","org-TV3YOqDRg5DXvAUcL7dC6lI9")
req.GetRequest.SetContentType("applicazione/json")
Attendi (req) jobdone (req As HttpJob)
[/CODICE]

Ergo LO , sostituisci coi tuoi dati e dovrebbe funzionare (eventualmente scarica anche tu quel progetto, cosa che io non ho fatto)
Non funziona mi da sempre un errore dello sbronzo


[CODICE=b4x]Errore: {
"errore": {
"message": "URL non valido (POST /v1/models/davinci/jobs)",
"tipo": "richiesta_invalida_errore",
"parametro": nullo,
"codice": nullo
}
}[/CODICE]
 

ivanomonti

Expert
Licensed User
Longtime User
Codice:
Sub Chat(message As String)
    
    j.Initialize("", Me)

    Dim stringBuilder As StringBuilder
    stringBuilder.Initialize
    stringBuilder.Append("{")
    stringBuilder.Append("""text"":""")
    stringBuilder.Append(message)
    stringBuilder.Append(""",")
    stringBuilder.Append("""temperature"":0.0,")
    stringBuilder.Append("""max_tokens"":150}")

    Dim body As String = stringBuilder.ToString
    Dim url As String = "https://api.openai.com/v1/models/davinci/jobs"
    j.PostString(url, body)
    j.GetRequest.SetContentType("application/json")
    j.GetRequest.SetHeader("Authorization", "Bearer " & Apikey & "&organization=" & ApiOrg)

End Sub

Ma mi da sempre lo stesso errore invalid URL


Errore di ritorno:
Error: {
  "error": {
    "message": "Invalid URL (POST /v1/models/davinci/jobs)",
    "type": "invalid_request_error",
    "param": null,
    "code": null
  }
}
 

ivanomonti

Expert
Licensed User
Longtime User
Cavoli nessuno mi da una mano a parte @LucaMs che lui trova compassione per me :) ma tutti gli altri sono ancora in vacanza :-(

Mi aiuta di più la ChatLPT che almeno mi manda a quel paese dandomi degli esempi (ma non funzionano)
 

amorosik

Expert
Licensed User
Cavoli nessuno mi da una mano a parte @LucaMs che lui trova compassione per me :) ma tutti gli altri sono ancora in vacanza :-(

Mi aiuta di più la ChatLPT che almeno mi manda a quel paese dandomi degli esempi (ma non funzionano)

Eh, se vuoi ti mandiamo a quel paese pure noi 😁
Ma non credo serva a molto
Purtroppo l'argomento e' abbastanza nuovo, e quindi probabilmente nessuno si azzarda a consigliare
 

Star-Dust

Expert
Licensed User
Longtime User
Cavoli nessuno mi da una mano a parte @LucaMs che lui trova compassione per me :) ma tutti gli altri sono ancora in vacanza :-(

Mi aiuta di più la ChatLPT che almeno mi manda a quel paese dandomi degli esempi (ma non funzionano)
Ciao Ivano,

Ho fatto qualche test ma non mi ha soddisfatto come funzionamento. Ho provato solo l'accesso e funzionava poi non ho potuto accedere perchè era sempre sovraccarico e ho abbandonato.
Sinceramente non trovo piu il sorgente con cui effettuavo l'accesso (credo di averlo cancellato) e quindi non so come aiutarti
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
non funziona con b4j e
... e... nella domanda non hai scritto che ti riferissi a B4J (benché in questo caso non dovrebbe essere diverso, ma ovviamente il sorgente completo pubblicato sì).

Cavoli nessuno mi da una mano a parte @LucaMs che lui trova compassione per me :) ma tutti gli altri sono ancora in vacanza :-(
Ma quel tale, @LucaMs, generosissimo, altruista, intelligentissimo e, soprattutto, modestissimo 😄, non ci ha mai messo le zampe... ehm, mani, per cui più di tanto non ha potuto consigliarti.

Non è improbabile che faccia nottata in bianco e che quindi ci proverà (senza volersi iscrivere, dato che è pure necessario fornire il nr di cell, per quanto ne so, ed usando la chiave fornita in quell'esempio, che dovrebbe funzionare)
 

LucaMs

Expert
Licensed User
Longtime User
Ma quel tale, @LucaMs, generosissimo, altruista, intelligentissimo e, soprattutto, modestissimo 😄, non ci ha mai messo le zampe... ehm, mani, per cui più di tanto non ha potuto consigliarti.

Non è improbabile che faccia nottata in bianco e che quindi ci proverà (senza volersi iscrivere, dato che è pure necessario fornire il nr di cell, per quanto ne so, ed usando la chiave fornita in quell'esempio, che dovrebbe funzionare)
Prima prova: quell'app pubblicata.
Dopo alcune difficoltà, dovute alla libreria necessaria (solo roba grafica) creata dal membro di b4x, ha funzionato:
1675397205576.png

(Nota: la prima domanda inutile che mi è venuta in mente, visto che nel freezer mi è rimasta ancora una pizza 😁
Notevole che, prima di servire la pizza calda, ti suggerisca di... toglierla dal forno 😄).



Adesso darà un'occhiata alle tue "esigenze", @ivanomonti. Con comodo, eh (a meno che non ti svegli e mi invii un centone 🤣)
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Allego il progetto, di tipo B4XPages ma ovviamente è pronto solo il B4J, visto che questo era richiesto (se si volessero anche i B4A e B4I le modifiche sarebbero semplici).

Qualche di notuccia:

  1. non ho idea dei parametri precisi da inserire nella Map scritta poi nella stringa JSON per il PostString; dovrei andare a guardare sul sito ma non ne ho voglia e inoltre così funziona
  2. come minimo dovrai modificare il valore di una delle due costanti GPT3_xxx, scrivendo la tua chiave
  3. per la CLV usata avevo scritto una routine che aggiungesse un item, ma dato che poi avrei dovuto calcolare l'altezza in base alla lunghezza del testo e grandezza del font e proprio non ne avevo voglia 😄, alla fine ho usato il più semplice metodo AddTextItem. Ho comunque lasciato quella routine, in modo tale che se tu volessi usarla ti basterebbe modificare appunto l'altezza dell'item.
  4. passare alla cassa: sono 30€ + IVA 🤣

P.S.
Senza nome.png

Codice che non sarebbe utilizzabile, in quanto non esistono la libreria GPT3 né i tipi GPT3Request e GPT3Response.
 

Attachments

  • GPT3Text.zip
    55.8 KB · Views: 105
Last edited:

Sagenut

Expert
Licensed User
Longtime User
Cavoli nessuno mi da una mano a parte @LucaMs che lui trova compassione per me :) ma tutti gli altri sono ancora in vacanza :-(

Mi aiuta di più la ChatLPT che almeno mi manda a quel paese dandomi degli esempi (ma non funzionano)
Sarà che ancora non ci siamo avvicinati a questa diavoleria. :)
 
Top