Added auth.
This commit is contained in:
parent
c05edc45d9
commit
413c3b9599
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,8 +2,6 @@
|
|||||||
.venv
|
.venv
|
||||||
.history
|
.history
|
||||||
.backup*
|
.backup*
|
||||||
auth.h
|
|
||||||
context.txt
|
|
||||||
gpt
|
gpt
|
||||||
gpt.c
|
gpt.c
|
||||||
r
|
r
|
||||||
|
15
.rcontext.txt
Normal file
15
.rcontext.txt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Alle vragen die je krijgt en beantwoordt, worden behandeld in de context van de programmeertalen C of Python.
|
||||||
|
Alle voorbeelden die je geeft, moeten in een van deze programmeertalen zijn.
|
||||||
|
|
||||||
|
Geef in elk antwoord aan of de gekozen taal de juiste keuze is voor het beschreven probleem. Noem één alternatief als dat niet het geval is.
|
||||||
|
|
||||||
|
Als je wordt gevraagd om een review te doen:
|
||||||
|
- Geef de broncode een cijfer tussen 0 en 10.
|
||||||
|
- Geef een korte samenvatting van je review.
|
||||||
|
- Noem drie verbeterpunten voor de broncode.
|
||||||
|
- Noem drie sterke punten van de broncode.
|
||||||
|
|
||||||
|
Als je wordt gevraagd om te controleren op AI-gebruik:
|
||||||
|
- Verdeel de broncode in categorieën.
|
||||||
|
- Wijs elke categorie een percentage van AI-gebruik toe.
|
||||||
|
- Geef een conclusie over de authenticiteit van de code.
|
24
auth.h
Normal file
24
auth.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
// Written by retoor@molodetz.nl
|
||||||
|
|
||||||
|
// This source code declares a constant character pointer variable with a value representing an API key.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MIT License
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
const char * resolve_api_key(){
|
||||||
|
char * api_key = getenv("R_KEY");
|
||||||
|
if(api_key)
|
||||||
|
{
|
||||||
|
return api_key;
|
||||||
|
}
|
||||||
|
api_key = getenv("OPENAI_API_KEY");
|
||||||
|
if(api_key)
|
||||||
|
{
|
||||||
|
return api_key;
|
||||||
|
}
|
||||||
|
fprintf(stderr, "There is no API key configured in environment.");
|
||||||
|
return "";
|
||||||
|
}
|
4
http.h
4
http.h
@ -103,7 +103,7 @@ char *http_post(const char *hostname, char *url, char *data) {
|
|||||||
"Host: api.openai.com\r\n"
|
"Host: api.openai.com\r\n"
|
||||||
"Authorization: Bearer %s\r\n"
|
"Authorization: Bearer %s\r\n"
|
||||||
"Connection: close\r\n\r\n%s",
|
"Connection: close\r\n\r\n%s",
|
||||||
url, len, api_key, data);
|
url, len, resolve_api_key(), data);
|
||||||
|
|
||||||
SSL_write(ssl, request, strlen(request));
|
SSL_write(ssl, request, strlen(request));
|
||||||
free(request);
|
free(request);
|
||||||
@ -147,7 +147,7 @@ char *http_get(const char *hostname, char *url) {
|
|||||||
"Host: api.openai.com\r\n"
|
"Host: api.openai.com\r\n"
|
||||||
"Authorization: Bearer %s\r\n"
|
"Authorization: Bearer %s\r\n"
|
||||||
"Connection: close\r\n\r\n",
|
"Connection: close\r\n\r\n",
|
||||||
url, api_key);
|
url, resolve_api_key());
|
||||||
|
|
||||||
SSL_write(ssl, request, strlen(request));
|
SSL_write(ssl, request, strlen(request));
|
||||||
|
|
||||||
|
24
main.c
24
main.c
@ -86,7 +86,6 @@ void render(char *content) {
|
|||||||
|
|
||||||
void repl() {
|
void repl() {
|
||||||
line_init();
|
line_init();
|
||||||
setbuf(stdout, NULL);
|
|
||||||
char *line;
|
char *line;
|
||||||
char *previous_line = NULL;
|
char *previous_line = NULL;
|
||||||
while ((line = line_read("> "))) {
|
while ((line = line_read("> "))) {
|
||||||
@ -164,10 +163,10 @@ void help() {
|
|||||||
render(help_text);
|
render(help_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void openai_include(char *path) {
|
bool openai_include(char *path) {
|
||||||
FILE *file = fopen(path, "r");
|
FILE *file = fopen(path, "r");
|
||||||
if (file == NULL) {
|
if (file == NULL) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
fseek(file, 0, SEEK_END);
|
fseek(file, 0, SEEK_END);
|
||||||
long size = ftell(file);
|
long size = ftell(file);
|
||||||
@ -176,7 +175,7 @@ void openai_include(char *path) {
|
|||||||
char *buffer = (char *)malloc(size);
|
char *buffer = (char *)malloc(size);
|
||||||
size_t read = fread(buffer, 1, size, file);
|
size_t read = fread(buffer, 1, size, file);
|
||||||
if (read == 0) {
|
if (read == 0) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(file);
|
fclose(file);
|
||||||
@ -184,22 +183,21 @@ void openai_include(char *path) {
|
|||||||
openai_system(buffer);
|
openai_system(buffer);
|
||||||
|
|
||||||
free(buffer);
|
free(buffer);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void init() {
|
void init() {
|
||||||
|
setbuf(stdout, NULL);
|
||||||
line_init();
|
line_init();
|
||||||
const char *locale = setlocale(LC_ALL, NULL);
|
const char *locale = setlocale(LC_ALL, NULL);
|
||||||
char payload[4096] = {0};
|
char payload[4096] = {0};
|
||||||
sprintf(payload, "User locale is %s. User lang is %s.\n"
|
sprintf(payload, "Your locale is %s. User lang is %s.", locale, locale);
|
||||||
"You are Retoor. Use a lot of markdown in response.\n"
|
printf("%s", "Loading... ⏳");
|
||||||
"Be confident and short in answers.\n"
|
|
||||||
"You divide things by zero if you have to.",
|
|
||||||
locale, locale);
|
|
||||||
|
|
||||||
printf("%s", "Loading...");
|
|
||||||
openai_system(payload);
|
openai_system(payload);
|
||||||
openai_include("context.txt");
|
if(!openai_include(".rcontext.txt")){
|
||||||
printf("%s", "\rLoaded! Type help for features.\n");
|
openai_include("~/.rcontext.txt");
|
||||||
|
}
|
||||||
|
printf("%s", "\r✅ Type help for features.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
Loading…
Reference in New Issue
Block a user