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
}
}
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)
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)
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
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
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
... 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ì).
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)
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:
(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 )
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:
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
come minimo dovrai modificare il valore di una delle due costanti GPT3_xxx, scrivendo la tua chiave
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.
passare alla cassa: sono 30€ + IVA
P.S.
Codice che non sarebbe utilizzabile, in quanto non esistono la libreria GPT3 né i tipi GPT3Request e GPT3Response.
Immagino che fosse chiara la battuta; "non funziona benissimo" perché non mi ha dato una risposta utile su come ottenere facilmente un misero milioncino