shithub: oai

ref: 8722f3bed54f9d2a2899f604261a0ac5c74d13eb
dir: /oai.c/

View raw version
#include <u.h>
#include <libc.h>
#include <bio.h>
#include "oai.h"

static void
usage(void)
{
	fprint(2, "usage: %s [-k apikey] [-m model] baseurl\n", argv0);
	exits("usage");
}

void
main(int argc, char **argv)
{
	Biobuf *bin;
	char *s;
	ORequest req;
	OResult res;
	
	char *key = nil;
	
	req.model = nil;
	
	ARGBEGIN{
	case 'h':
		usage();
	case 'k':
		key = EARGF(usage());
		break;
	case 'm':
		req.model = EARGF(usage());
		break;
	}ARGEND;
	
	if (argc != 1)
		usage();
	
	if (!initoai(argv[0], key))
		usage();
	
	bin = Bfdopen(0, OREAD);
	assert(bin);
	
	print("user: ");
	while (s = Brdstr(bin, '\n', 1)) {
		req.prompts = mallocz(sizeof(OPrompt), 1);
		assert(req.prompts);
		req.prompts->role = "user";
		req.prompts->content = s;
		res = makerequest(req);
		print("%s: %s\n\n", res.role, res.message);
		free(req.prompts);
		free(s);
		print("user: ");
	}
	exits(nil);
}