Update.
This commit is contained in:
parent
d1bb1ae129
commit
a7b45c2d99
4
browse.c
4
browse.c
@ -1,4 +1,6 @@
|
||||
#include "browse.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main() {
|
||||
char *query = "example";
|
||||
@ -8,7 +10,7 @@ int main() {
|
||||
printf("Result: %s\n", result);
|
||||
free(result); // Free the allocated memory for the result
|
||||
} else {
|
||||
printf("Failed to fetch news.\n");
|
||||
fprintf(stderr, "Error: Failed to fetch news.\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
4
browse.h
4
browse.h
@ -13,7 +13,7 @@ char *web_search_news(char *q) {
|
||||
news[0] = 0;
|
||||
char *q_encoded = url_encode(q);
|
||||
sprintf(news,
|
||||
"https://search.molodetz.nl/search?q=%s&format=json&categories=news",
|
||||
"https://search.molodetz.nl/search?q=%s&format=json&categories=news&preferences=eJx1WMuy4zYO_Zp4o4ormaRqahZepZL5gexVFAlLiEhCzYdt3a8PoIdFWt2Ldl8fkCCIxwForRL0FBDirQcPQdmLVb7PqoebyokulrSycPP2Il81uclCgtvlrh6oybcBItkHhNsFHW9qp0Cv-faXshEuDtJA5vb_P_--RHWHCCro4fbLJQ3g4BZRdF1YQbYptqzLw7NNqtt2G8JDOyn-eqXQX9ZtbUyz3UzU4BOEVlnsveO_t_3KPJTXYNrt3BX9liHMLfo2YWIFK4j-jh4Ta9WBrN3QdZ8YplcvzazKgk63v0OGy0BphDneDNwV3-CSg23vFJxKCX1_mwKkNF8MRtVZtgJ8j57d_L9e9W0bSaOyjQOD6qf__MG366CJ7OCxbRdHxhptHmiA2nb571OmskGWuRxRi8hOfFJj0edXMyk9ijpWm0TmvYqN3Asf0LZ3tOtJ09g4DIFCibGfG_6UU0K52CuOvFGbSo8vis0TR9yADi3Kv8LaDlOX9QhpX5IM9v2hcvHDVWt9NVBs0xN78Q4BOI7bTg5QjAyyCzUKztgMU7M6rXCegJxQDMknAwbgi9Pk7SYDMamEvIA4IQMjEOiJ5vhu2GT519NZfSFbzS3MLmS1BQf-BCWHHGet3nZq4uX8KdY4-gcnccyx6tdXYcLdBBJzdydyDps0qOS4usplAThR6J6eKkBjMHAGSy6v_rwH9CMqXW6Y58IJPeDXwPVQIFw5qtvjQQY6CP32lWXAgSS3fycyAZQptxP1fNXJqlmyKx4XKCWOHgilU7muIEjNCO2UkRhUF5R8bEcOnPEQVsevALzeycNK4lWKZfmOznSHYej6HArF6FVxPnr-EynH72N7VnHEAlPJXOj5B-NAxzFcHEGFuRG-jVhc31IXE1zDbjfTp9KT8nudTbtT_azUsY3MHKGsGprAb4ccpwrICoFqKMBEhQkrW2Dc65TLb2XBcwEcoirHp9xxDT-2_QGMwXSiu0ApMVETx5SgSA0mS51jvE4zN4793loZM0tKubw5drEMfx7IwglfbZKsbOTjjTrlE-omat6lQskeicaZEnGMRvH17ook9-TlKr_vlqp0EcaLE-glTQ91JhvwxyouYoDx7L4Nr3y35PyEltKxP-Ru7sHtOTEBhJS7MtyLU3n1yJufT-gK0az0fD46ZMcdqVhmuRdEDn2JPemFI3mOZRNnT34WTtmN4nwbQ237Cp3OWuETQ8ZHL5lXLHwwlS0da7vonJ2zc1U1R2VEykHDkN9pOvbXnva8u4CvWy4PMC_lTRAm3aYcYVzJ3bVJFs1LBU6TsgeHFz7K-Ko4llo6VqyVmw4GEGUbbRfLeCT4_H721oJWbl2Qk_u6qSuVSSHzkBRL1tcD3Efi8eXtQW0pmzsnPygsd3NHfRrJnRLk7lmt4eEG4QORtjyXGPsfuczYhWWjNH3DI5LMV7gQd7GehKmbIe_NRBSymdvgVawUnxqVKpce3bREefaCubIU0uyICdEXCXy3qMeS63k5ljTeCz3tbYKb2mHj2qTKA7a2dYrmhlfx3LBTRDf8O_Q0bOcth49stoplzwDn5mYnwZWKaq5dV-QI4Ucy7gDpRzLRzK44i79-freYty1bY6M7b_Nc4LH0hkghBeWj5SZc-o9D0z-q0DrFI6ch_wOz3-JBxYF5-jsrzN49HL6WxD9C6-hrqArAPZkP6-N5JIJ9npDqUjw1Sf5FSBXZ7zLuepxRasvwWh4TD2CJZ7p9sJuM8PexaOKXhHS7TYrymoFY1tAkhFJky_L9ulzouNeEMt10qojIRMxNkUvCyAi0J_-7c5d3Ptr5npuFbLldY7hfo1_z_HhCHEbmzomVxcXmaafVb08mhlLnAtS1sUKnMlrhU8UExZNX0zF5xXKqD9gPqTGqIoX1Zm6OWGde5G6rdl8czYkyc3qdNPxU0CMxyd4tPfdWEcfcZZ_y3pUyz345vhMnChNO8igujySLhufvsFbV96aNY3H2kYfhOJTPGjVQdbcFqB05U_6YEd7I-_Gj0DItSsIWyx7oqkfmE7v5k4Y7ojF-gtXxAnzLVLt6mZaWtn1C9xmqgsWyaoCVpdLkllGv1vCg-cPLggp1cTleTwlVCk9pVQo_3tWlaInbEb4n2XtQjl_eQ92jUKcv8pVtjkcpxw-w5k2GphT_-ttv_30dmiN8eeWq_cvkWCJePSTpypyoG_OTgvE4FgMcn62reuRul-QBKYo-yPSprB34CP_hQ8c9vTolpXDFYvbldvCorr4A54Cs8HnKWeDP9lnpS7_vPyIcP7RMNvPYF2-k2vUnpGfgsl86aUzsy7XeKLQ8IunxPSzu28QzPJW08nNO4EA91uFJWZ05VhSWsuQ3Dbc4FqVtHrb3Fv2d5BSp11XZhZ8WzP-3fwFOiVFV",
|
||||
q_encoded);
|
||||
free(q_encoded);
|
||||
char *ret = curl_get(news);
|
||||
@ -35,7 +35,7 @@ char *web_search(char *q) {
|
||||
char *news = (char *)malloc(4096);
|
||||
news[0] = 0;
|
||||
char *q_encoded = url_encode(q);
|
||||
sprintf(news, "https://search.molodetz.nl/search?q=%s&format=json",
|
||||
sprintf(news, "https://search.molodetz.nl/search?q=%s&format=json&preferences=eJx1WMuy4zYO_Zp4o4ormaRqahZepZL5gexVFAlLiEhCzYdt3a8PoIdFWt2Ldl8fkCCIxwForRL0FBDirQcPQdmLVb7PqoebyokulrSycPP2Il81uclCgtvlrh6oybcBItkHhNsFHW9qp0Cv-faXshEuDtJA5vb_P_--RHWHCCro4fbLJQ3g4BZRdF1YQbYptqzLw7NNqtt2G8JDOyn-eqXQX9ZtbUyz3UzU4BOEVlnsveO_t_3KPJTXYNrt3BX9liHMLfo2YWIFK4j-jh4Ta9WBrN3QdZ8YplcvzazKgk63v0OGy0BphDneDNwV3-CSg23vFJxKCX1_mwKkNF8MRtVZtgJ8j57d_L9e9W0bSaOyjQOD6qf__MG366CJ7OCxbRdHxhptHmiA2nb571OmskGWuRxRi8hOfFJj0edXMyk9ijpWm0TmvYqN3Asf0LZ3tOtJ09g4DIFCibGfG_6UU0K52CuOvFGbSo8vis0TR9yADi3Kv8LaDlOX9QhpX5IM9v2hcvHDVWt9NVBs0xN78Q4BOI7bTg5QjAyyCzUKztgMU7M6rXCegJxQDMknAwbgi9Pk7SYDMamEvIA4IQMjEOiJ5vhu2GT519NZfSFbzS3MLmS1BQf-BCWHHGet3nZq4uX8KdY4-gcnccyx6tdXYcLdBBJzdydyDps0qOS4usplAThR6J6eKkBjMHAGSy6v_rwH9CMqXW6Y58IJPeDXwPVQIFw5qtvjQQY6CP32lWXAgSS3fycyAZQptxP1fNXJqlmyKx4XKCWOHgilU7muIEjNCO2UkRhUF5R8bEcOnPEQVsevALzeycNK4lWKZfmOznSHYej6HArF6FVxPnr-EynH72N7VnHEAlPJXOj5B-NAxzFcHEGFuRG-jVhc31IXE1zDbjfTp9KT8nudTbtT_azUsY3MHKGsGprAb4ccpwrICoFqKMBEhQkrW2Dc65TLb2XBcwEcoirHp9xxDT-2_QGMwXSiu0ApMVETx5SgSA0mS51jvE4zN4793loZM0tKubw5drEMfx7IwglfbZKsbOTjjTrlE-omat6lQskeicaZEnGMRvH17ook9-TlKr_vlqp0EcaLE-glTQ91JhvwxyouYoDx7L4Nr3y35PyEltKxP-Ru7sHtOTEBhJS7MtyLU3n1yJufT-gK0az0fD46ZMcdqVhmuRdEDn2JPemFI3mOZRNnT34WTtmN4nwbQ237Cp3OWuETQ8ZHL5lXLHwwlS0da7vonJ2zc1U1R2VEykHDkN9pOvbXnva8u4CvWy4PMC_lTRAm3aYcYVzJ3bVJFs1LBU6TsgeHFz7K-Ko4llo6VqyVmw4GEGUbbRfLeCT4_H721oJWbl2Qk_u6qSuVSSHzkBRL1tcD3Efi8eXtQW0pmzsnPygsd3NHfRrJnRLk7lmt4eEG4QORtjyXGPsfuczYhWWjNH3DI5LMV7gQd7GehKmbIe_NRBSymdvgVawUnxqVKpce3bREefaCubIU0uyICdEXCXy3qMeS63k5ljTeCz3tbYKb2mHj2qTKA7a2dYrmhlfx3LBTRDf8O_Q0bOcth49stoplzwDn5mYnwZWKaq5dV-QI4Ucy7gDpRzLRzK44i79-freYty1bY6M7b_Nc4LH0hkghBeWj5SZc-o9D0z-q0DrFI6ch_wOz3-JBxYF5-jsrzN49HL6WxD9C6-hrqArAPZkP6-N5JIJ9npDqUjw1Sf5FSBXZ7zLuepxRasvwWh4TD2CJZ7p9sJuM8PexaOKXhHS7TYrymoFY1tAkhFJky_L9ulzouNeEMt10qojIRMxNkUvCyAi0J_-7c5d3Ptr5npuFbLldY7hfo1_z_HhCHEbmzomVxcXmaafVb08mhlLnAtS1sUKnMlrhU8UExZNX0zF5xXKqD9gPqTGqIoX1Zm6OWGde5G6rdl8czYkyc3qdNPxU0CMxyd4tPfdWEcfcZZ_y3pUyz345vhMnChNO8igujySLhufvsFbV96aNY3H2kYfhOJTPGjVQdbcFqB05U_6YEd7I-_Gj0DItSsIWyx7oqkfmE7v5k4Y7ojF-gtXxAnzLVLt6mZaWtn1C9xmqgsWyaoCVpdLkllGv1vCg-cPLggp1cTleTwlVCk9pVQo_3tWlaInbEb4n2XtQjl_eQ92jUKcv8pVtjkcpxw-w5k2GphT_-ttv_30dmiN8eeWq_cvkWCJePSTpypyoG_OTgvE4FgMcn62reuRul-QBKYo-yPSprB34CP_hQ8c9vTolpXDFYvbldvCorr4A54Cs8HnKWeDP9lnpS7_vPyIcP7RMNvPYF2-k2vUnpGfgsl86aUzsy7XeKLQ8IunxPSzu28QzPJW08nNO4EA91uFJWZ05VhSWsuQ3Dbc4FqVtHrb3Fv2d5BSp11XZhZ8WzP-3fwFOiVFV",
|
||||
q_encoded);
|
||||
free(q_encoded);
|
||||
char *ret = curl_get(news);
|
||||
|
@ -1,5 +1,7 @@
|
||||
#include "db_utils.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sqlite3.h>
|
||||
|
||||
void db_initialize() {
|
||||
sqlite3 *db;
|
||||
@ -7,6 +9,7 @@ void db_initialize() {
|
||||
int rc = sqlite3_open("database.db", &db);
|
||||
|
||||
if (rc != SQLITE_OK) {
|
||||
fprintf(stderr, "Error: Cannot open database: %s\n", sqlite3_errmsg(db));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -15,6 +18,7 @@ void db_initialize() {
|
||||
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
|
||||
|
||||
if (rc != SQLITE_OK) {
|
||||
fprintf(stderr, "SQL error: %s\n", err_msg);
|
||||
sqlite3_free(err_msg);
|
||||
}
|
||||
|
||||
|
18
main.c
18
main.c
@ -12,7 +12,6 @@
|
||||
#include "openai.h"
|
||||
#include "utils.h"
|
||||
#include "db_utils.h"
|
||||
|
||||
#include "tools.h"
|
||||
|
||||
volatile sig_atomic_t sigint_count = 0;
|
||||
@ -38,6 +37,13 @@ char *get_prompt_from_stdin(char *prompt) {
|
||||
char *get_prompt_from_args(int argc, char **argv) {
|
||||
char *prompt = malloc(10 * 1024 * 1024 + 1);
|
||||
char *system = malloc(1024 * 1024);
|
||||
if (!prompt || !system) {
|
||||
fprintf(stderr, "Error: Memory allocation failed.\n");
|
||||
free(prompt);
|
||||
free(system);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool get_from_std_in = false;
|
||||
|
||||
for (int i = 1; i < argc; i++) {
|
||||
@ -62,7 +68,7 @@ char *get_prompt_from_args(int argc, char **argv) {
|
||||
} else if (strcmp(argv[i], "--nh") == 0) {
|
||||
SYNTAX_HIGHLIGHT_ENABLED = false;
|
||||
fprintf(stderr, "Syntax highlighting disabled.\n");
|
||||
} else if (!get_from_std_in) {
|
||||
} else {
|
||||
strcat(system, argv[i]);
|
||||
strcat(system, (i < argc - 1) ? " " : ".");
|
||||
}
|
||||
@ -70,7 +76,6 @@ char *get_prompt_from_args(int argc, char **argv) {
|
||||
|
||||
if (get_from_std_in) {
|
||||
if (*system) openai_system(system);
|
||||
free(system);
|
||||
prompt = get_prompt_from_stdin(prompt);
|
||||
} else {
|
||||
free(prompt);
|
||||
@ -101,7 +106,6 @@ bool try_prompt(int argc, char *argv[]) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
char **get_parameters(const char *content, const char *delimiter) {
|
||||
char *start = NULL;
|
||||
char **parameters = NULL;
|
||||
@ -141,7 +145,6 @@ void repl() {
|
||||
line = line_read("> ");
|
||||
if (!line || !*line) continue;
|
||||
|
||||
|
||||
if (!strncmp(line, "!dump", 5)) {
|
||||
printf("%s\n", message_json());
|
||||
continue;
|
||||
@ -187,7 +190,6 @@ void repl() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
char *strreplace(const char *content, const char *what, const char *with) {
|
||||
char *pos = strstr(content, what);
|
||||
if (!pos) return strdup(content);
|
||||
@ -219,7 +221,7 @@ void init() {
|
||||
schema);
|
||||
free(schema);
|
||||
|
||||
fprintf(stderr, "Loading... ⏳");
|
||||
fprintf(stderr, "Loading... 4e6");
|
||||
openai_system(payload);
|
||||
if (!openai_include(".rcontext.txt")) {
|
||||
openai_include("~/.rcontext.txt");
|
||||
@ -251,4 +253,4 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
repl();
|
||||
return 0;
|
||||
}
|
||||
}
|
34
rpylib.c
34
rpylib.c
@ -46,42 +46,59 @@ static PyObject *rpylib_reset(PyObject *self, PyObject *args) {
|
||||
static PyObject *rpylib_chat(PyObject *self, PyObject *args) {
|
||||
const char *role, *message;
|
||||
|
||||
printf("That goes alright! 1\n");
|
||||
if (!PyArg_ParseTuple(args, "ss", &role, &message)) {
|
||||
return NULL;
|
||||
}
|
||||
printf("That goes alright! 2\n");
|
||||
|
||||
char *result = openai_chat(role, message);
|
||||
if (!result) {
|
||||
PyErr_SetString(PyExc_RuntimeError, "Failed to get response from OpenAI.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
PyObject *py_result = PyUnicode_FromString(result);
|
||||
free(result);
|
||||
return py_result;
|
||||
}
|
||||
|
||||
static PyObject *rpylib_prompt(PyObject *self, PyObject *args) {
|
||||
const char *role = "user";
|
||||
const char *message;
|
||||
if (!PyArg_ParseTuple(args, "s", &message)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *result = openai_chat(role, message);
|
||||
if (!result) {
|
||||
PyErr_SetString(PyExc_RuntimeError, "Failed to get response from OpenAI.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
PyObject *py_result = PyUnicode_FromString(result);
|
||||
free(result);
|
||||
return py_result;
|
||||
}
|
||||
|
||||
static PyObject *rpylib_system(PyObject *self, PyObject *args) {
|
||||
const char *role = "system";
|
||||
const char *message;
|
||||
if (!PyArg_ParseTuple(args, "s", &message)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *result = openai_chat(role, message);
|
||||
if (!result) {
|
||||
PyErr_SetString(PyExc_RuntimeError, "Failed to get response from OpenAI.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
PyObject *py_result = PyUnicode_FromString(result);
|
||||
free(result);
|
||||
return py_result;
|
||||
}
|
||||
|
||||
static PyMethodDef MyModuleMethods[] = {
|
||||
{"chat", rpylib_chat, METH_VARARGS, "Chat with OpenAI."},
|
||||
//{"prompt", rpylib_prompt, METH_VARARGS, "Prompt to OpenAI."},
|
||||
//{"system", rpylib_system, METH_VARARGS, "Add system message."},
|
||||
{"reset", rpylib_reset, METH_NOARGS, "Reset message history."},
|
||||
{NULL, NULL, 0, NULL}};
|
||||
|
||||
@ -90,11 +107,6 @@ static struct PyModuleDef rpylib = {
|
||||
"R - the power of R in Python, made by retoor.", -1, MyModuleMethods};
|
||||
|
||||
PyMODINIT_FUNC PyInit_rpylib(void) {
|
||||
|
||||
auth_init();
|
||||
|
||||
printf("Init\n");
|
||||
void *res = PyModule_Create(&rpylib);
|
||||
printf("GLOB\n");
|
||||
return res;
|
||||
}
|
||||
return PyModule_Create(&rpylib);
|
||||
}
|
Loading…
Reference in New Issue
Block a user