0 votes
in SoSci Survey (dt.) by s143266 (485 points)

Ich möchte eine Anfrage an die ChatGPT API schicken. Dafür verwende ich die Funktion sendJSON() wie folgt:

$data = sendJSON('https://api.openai.com/v1/chat/completions', [ 
'Headers' => [ 
'Authorization' => 'Bearer ' . $api_key 
] 
]);

wobei $api_key mein persönlicher token ist. Das Problem ist, dass ich als response "You didn't provide an API key." von der API bekomme, weil die sendJSON Funktion die Daten nicht in den header der JSON-Abfrage schreibt. Gibt es dafür eine Lösung?

by SoSci Survey (316k points)
Wir bringen der Funktion zeitnah bei, dass sie auch Informationen im Header unterbringen kann. Ein paar Tage wird es aber dauern.

1 Answer

0 votes
by SoSci Survey (316k points)
edited by SoSci Survey

Sie Funktion sendJSON() unterstützt nun einen dritten Parameter für Header-Daten.

$data = sendJSON('https://api.openai.com/v1/chat/completions', [
    'model' => 'gpt-3.5-turbo',
    'messages' = [
        [
            'role' => 'user',
            'content' => 'Hello!'
        ]
    ]
], [
    'Authorization' =>  'Bearer 12345678990'
]);
by s143266 (485 points)
Gibt es eine Möglichkeit den API key verschlüsselt nur auf dem Server zu speichern, damit die Versuchspersonen diesen nicht abgreifen können?
by SoSci Survey (316k points)
Wenn Sie sendJSON() verwenden, dann wird der API-Key "nur" in SoSci Survey hinterlegt, für die Befragten aber nicht ersichtlich.

Falls sie den API-Schlüssel per JavaScript-Code verwenden möchten, ist das im Moment noch nicht möglich. Wir denken hier über eine Lösung weiter, bei welcher SoSci Survey entsprechende Script-Anfragen engegen nimmt, um den API-Key erweitert, und dann an die eigentliche API leitet. Aber bisher hielt sich das Interesse an so einer Funktion in Grenzen, und andere Funktionen hatten höhere Priorität.
by s143266 (485 points)
Ich bin mir nicht sicher, ob ich das richtig verstanden habe. Der Teil nach "Bearer" ist für den User also nicht einsehbar? Auch nicht, wenn dieser die Konsole seines Browsers öffnet und in den Elementen danach sucht?

Beim Ausprobieren des obenstehenden PHP-Codes (bzw. das Beispiel von https://www.soscisurvey.de/help/doku.php/de:create:functions:sendjson) mit sendJSON() bekomme ich übrigens folgende Fehlermeldung (nach Ersetzen der Zahlenfolge durch meinen gültigen API key):

Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Befehl oder String (Text) nicht abgeschlossen

Hinter einem Befehl wie z.B. question() steht kein Strichpunkt oder
ein String (Text in Anführungszeichen) ist nicht abgeschlossen oder
im String selbst kommt ein Anführungszeichen vor, z.B. html('Mach's besser!'); – in diesem Fall stellen Sie dem Anführungszeichen einen Backslash (\) voran.
Möglicherweise stimmen die öffnenenden und schließenden geschweiften Klammern für Anweisungsblöcke auch nicht überein.
PHP-Code

001 namespace s2survey\questionnaire\environment;
002
003 $data = sendJSON('https://api.openai.com/v1/chat/completions', [
004     'model' => 'gpt-3.5-turbo',
005     'messages' = [
006         [
007             'role' => 'user',
008             'content' => 'Hello!'
by SoSci Survey (316k points)
> Der Teil nach "Bearer" ist für den User also nicht einsehbar?

Solange Sie im PHP-Code arbeiten, läuft das auf dem Server, und die Befragten haben keinen Einblick. Die Kommunikation via sendJSON() läuft direkt zwischen dem SoSci-Server und dem OpenAI-Server.

Sobald Sie mit JavaScript arbeiten, läuft das im Browser, und die Befragten können die versendeten Daten einsehen.

> Fehler im Fragebogen: Befehl oder String (Text) nicht abgeschlossen

Okay, der Fehler war richtig gut versteckt ... hinter 'messages' steht ein Gleichheitszeichen (=) statt korrekt dem Pfeil (=>).
by s143266 (485 points)
Vielen Dank für die schnelle und ausführliche Antwort sowie Unterstützung bei der Problemlösung, jetzt klappt alles!

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...